From 3b12afe3f959fae2103fe377135472ae89d71877 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Fri, 19 Jul 2024 15:56:29 +0500 Subject: [PATCH 01/70] PMM-13237 fix pmm2 ami and ovf pipelines (#3072) * PMM-13222 Fix pmm2-ami build. --- build/Makefile | 12 ++++++------ build/ansible/roles/pmm2-images/vars/main.yml | 2 +- build/packer/pmm2.el9.json | 4 ++-- build/packer/pmm2.json | 13 ++++++++----- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/build/Makefile b/build/Makefile index 4e5bf8fd4f..c7dc4e9795 100644 --- a/build/Makefile +++ b/build/Makefile @@ -40,7 +40,7 @@ pmm2-ovf-el9-rc: 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=pmm2-client testing' \ - -var 'pmm_client_repo_name=percona-testing-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-testing-x86_64' \ -var 'pmm2_server_repo=testing' \ -only virtualbox-ovf -color=false packer/pmm2.el9.json \ | tee build.log @@ -49,7 +49,7 @@ 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=pmm2-client experimental' \ - -var 'pmm_client_repo_name=percona-experimental-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-experimental-x86_64' \ -var 'pmm2_server_repo=experimental' \ -only virtualbox-ovf -color=false packer/pmm2.el9.json \ | tee build.log @@ -63,7 +63,7 @@ pmm2-azure: pmm2-ami: docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ build -var 'pmm_client_repos=pmm2-client experimental' \ - -var 'pmm_client_repo_name=percona-experimental-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-experimental-x86_64' \ -var 'pmm2_server_repo=experimental' \ -only amazon-ebs -color=false \ packer/pmm2.json @@ -71,7 +71,7 @@ pmm2-ami: pmm2-ami-rc: docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ build -var 'pmm_client_repos=pmm2-client testing' \ - -var 'pmm_client_repo_name=percona-testing-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-testing-x86_64' \ -var 'pmm2_server_repo=testing' \ -only amazon-ebs '-color=false' \ packer/pmm2.json @@ -82,7 +82,7 @@ pmm2-ami-el9: 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=pmm2-client experimental' \ - -var 'pmm_client_repo_name=percona-experimental-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-experimental-x86_64' \ -var 'pmm2_server_repo=experimental' \ -only amazon-ebs -color=false \ packer/pmm2.el9.json @@ -93,7 +93,7 @@ pmm2-ami-el9-rc: 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=pmm2-client testing' \ - -var 'pmm_client_repo_name=percona-testing-x86_64' \ + -var 'pmm_client_repo_name=pmm2-client-testing-x86_64' \ -var 'pmm2_server_repo=testing' \ -only amazon-ebs '-color=false' \ packer/pmm2.el9.json diff --git a/build/ansible/roles/pmm2-images/vars/main.yml b/build/ansible/roles/pmm2-images/vars/main.yml index 5a25e24065..7410e4a875 100644 --- a/build/ansible/roles/pmm2-images/vars/main.yml +++ b/build/ansible/roles/pmm2-images/vars/main.yml @@ -3,4 +3,4 @@ pmm2_server_repo: release pmm_client_repos: "pmm2-client testing" # line below is sed'ed by build-server-docker script -pmm_client_repo_name: "percona-testing-x86_64" +pmm_client_repo_name: "pmm2-client-testing-x86_64" diff --git a/build/packer/pmm2.el9.json b/build/packer/pmm2.el9.json index 58e9a29ddf..ea1b7c118a 100644 --- a/build/packer/pmm2.el9.json +++ b/build/packer/pmm2.el9.json @@ -15,13 +15,13 @@ "delete_on_termination": true, "device_name": "/dev/sda1", "volume_size": 10, - "volume_type": "gp2" + "volume_type": "gp3" }, { "delete_on_termination": false, "device_name": "/dev/sdb", "volume_size": 100, - "volume_type": "gp2" + "volume_type": "gp3" } ], "region": "us-east-1", diff --git a/build/packer/pmm2.json b/build/packer/pmm2.json index 88b16fd397..0637a259e2 100644 --- a/build/packer/pmm2.json +++ b/build/packer/pmm2.json @@ -3,7 +3,7 @@ "single_disk": "false", "pmm2_server_repo": "testing", "pmm_client_repos": "pmm2-client testing", - "pmm_client_repo_name": "percona-testing-x86_64" + "pmm_client_repo_name": "pmm2-client-testing-x86_64" }, "builders": [{ "type": "amazon-ebs", @@ -13,18 +13,18 @@ "delete_on_termination": true, "device_name": "/dev/sda1", "volume_size": 8, - "volume_type": "gp2" + "volume_type": "gp3" }, { "delete_on_termination": false, "device_name": "/dev/sdb", "volume_size": 100, - "volume_type": "gp2" + "volume_type": "gp3" } ], "region": "us-east-1", "security_group_id": "sg-688c2b1c", - "source_ami": "ami-00e87074e52e6c9f9", + "source_ami": "ami-0aedf6b1cb669b4c7", "ssh_pty": "true", "ena_support": "true", "ssh_username": "centos", @@ -106,8 +106,11 @@ "provisioners": [{ "type": "shell", "inline": [ + "sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/fastestmirror.conf", + "sudo sed -i -e 's/^\\(mirrorlist\\)/#\\1/g' /etc/yum.repos.d/CentOS-Base.repo", + "sudo sed -i -e 's|^#baseurl.*|baseurl=http://vault.centos.org/centos/\\$releasever/os/\\$basearch/|g' /etc/yum.repos.d/CentOS-Base.repo", "sudo yum -y update", - "sudo yum -y install epel-release", + "sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm", "sudo yum -y install ansible" ] }, From 0e637590c597a2e5d6fb675300eb38840aa239ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:45:16 +0000 Subject: [PATCH 02/70] Bump @typescript-eslint/parser from 7.15.0 to 7.16.0 in /cli-tests (#3069) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.15.0 to 7.16.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/v7.16.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 | 50 ++++++++++++++++++------------------- cli-tests/package.json | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 24563ccfb0..4a2d008a28 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": "^7.16.0", - "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/parser": "^7.16.1", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", @@ -282,15 +282,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", - "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/typescript-estree": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4" }, "engines": { @@ -310,13 +310,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", - "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -327,9 +327,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", - "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -340,13 +340,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", - "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -368,12 +368,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", - "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/types": "7.16.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { diff --git a/cli-tests/package.json b/cli-tests/package.json index f9f75cb17d..b1f6cbe09a 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": "^7.16.0", - "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/parser": "^7.16.1", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", From e297853a84f8dfc572cf4b48fb20caa854151572 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Mon, 22 Jul 2024 16:05:25 +0300 Subject: [PATCH 03/70] PMM-13248 Upgrade buf and grpc packages (#3081) * PMM-13248 upgrade buf package * PMM-13248 revert go.sum changes wrt percona-backup-mongodb * PMM-13248 upgrade grpc packages * PMM-13248 regenerate the code * PMM-13248 upgrade grpc-gateway * PMM-13248 regenerate the code --- api/agentlocalpb/agentlocal.pb.gw.go | 6 +- api/agentlocalpb/agentlocal_grpc.pb.go | 16 ++- api/agentpb/agent_grpc.pb.go | 17 ++- api/inventorypb/agents.pb.gw.go | 6 +- api/inventorypb/agents.proto | 2 +- api/inventorypb/agents_grpc.pb.go | 103 ++++++++++++------ api/inventorypb/nodes.pb.gw.go | 6 +- api/inventorypb/nodes_grpc.pb.go | 37 +++++-- api/inventorypb/services.pb.gw.go | 6 +- api/inventorypb/services_grpc.pb.go | 49 ++++++--- api/managementpb/actions.pb.gw.go | 6 +- api/managementpb/actions_grpc.pb.go | 55 +++++++--- api/managementpb/agent/agent.pb.gw.go | 6 +- api/managementpb/agent/agent_grpc.pb.go | 13 ++- api/managementpb/alerting/alerting.pb.gw.go | 6 +- api/managementpb/alerting/alerting_grpc.pb.go | 25 +++-- api/managementpb/annotation.pb.gw.go | 6 +- api/managementpb/annotation_grpc.pb.go | 13 ++- api/managementpb/azure/azure.pb.gw.go | 6 +- api/managementpb/azure/azure_grpc.pb.go | 16 ++- api/managementpb/backup/artifacts.pb.gw.go | 6 +- api/managementpb/backup/artifacts_grpc.pb.go | 19 +++- api/managementpb/backup/backups.pb.gw.go | 6 +- api/managementpb/backup/backups_grpc.pb.go | 34 ++++-- api/managementpb/backup/locations.pb.gw.go | 6 +- api/managementpb/backup/locations_grpc.pb.go | 25 +++-- api/managementpb/backup/restores.pb.gw.go | 6 +- api/managementpb/backup/restores_grpc.pb.go | 13 ++- api/managementpb/checks.pb.gw.go | 6 +- api/managementpb/checks_grpc.pb.go | 34 ++++-- api/managementpb/dbaas/components.pb.gw.go | 6 +- api/managementpb/dbaas/components_grpc.pb.go | 28 +++-- api/managementpb/dbaas/db_clusters.pb.gw.go | 6 +- api/managementpb/dbaas/db_clusters_grpc.pb.go | 28 +++-- api/managementpb/dbaas/kubernetes.pb.gw.go | 6 +- api/managementpb/dbaas/kubernetes_grpc.pb.go | 28 +++-- api/managementpb/dbaas/logs.pb.gw.go | 6 +- api/managementpb/dbaas/logs_grpc.pb.go | 13 ++- .../dbaas/psmdb_clusters.pb.gw.go | 6 +- .../dbaas/psmdb_clusters_grpc.pb.go | 22 ++-- api/managementpb/dbaas/pxc_clusters.pb.gw.go | 6 +- .../dbaas/pxc_clusters_grpc.pb.go | 22 ++-- api/managementpb/dbaas/templates.pb.gw.go | 6 +- api/managementpb/dbaas/templates_grpc.pb.go | 13 ++- api/managementpb/dump/dump.pb.gw.go | 6 +- api/managementpb/dump/dump.proto | 4 +- api/managementpb/dump/dump_grpc.pb.go | 21 ++-- api/managementpb/external.pb.gw.go | 6 +- api/managementpb/external.proto | 2 +- api/managementpb/external_grpc.pb.go | 13 ++- api/managementpb/haproxy.pb.gw.go | 6 +- api/managementpb/haproxy.proto | 2 +- api/managementpb/haproxy_grpc.pb.go | 13 ++- api/managementpb/ia/alerts.pb.gw.go | 6 +- api/managementpb/ia/alerts_grpc.pb.go | 16 ++- api/managementpb/ia/channels.pb.gw.go | 6 +- api/managementpb/ia/channels_grpc.pb.go | 22 ++-- api/managementpb/ia/rules.pb.gw.go | 6 +- api/managementpb/ia/rules_grpc.pb.go | 25 +++-- api/managementpb/mongodb.pb.gw.go | 6 +- api/managementpb/mongodb_grpc.pb.go | 13 ++- api/managementpb/mysql.pb.gw.go | 6 +- api/managementpb/mysql_grpc.pb.go | 13 ++- api/managementpb/node.pb.gw.go | 6 +- api/managementpb/node/node.pb.gw.go | 6 +- api/managementpb/node/node_grpc.pb.go | 16 ++- api/managementpb/node_grpc.pb.go | 13 ++- api/managementpb/postgresql.pb.gw.go | 6 +- api/managementpb/postgresql_grpc.pb.go | 13 ++- api/managementpb/proxysql.pb.gw.go | 6 +- api/managementpb/proxysql_grpc.pb.go | 13 ++- api/managementpb/rds.pb.gw.go | 6 +- api/managementpb/rds_grpc.pb.go | 16 ++- api/managementpb/role/role.pb.gw.go | 6 +- api/managementpb/role/role_grpc.pb.go | 31 ++++-- api/managementpb/service.pb.gw.go | 6 +- api/managementpb/service/service.pb.gw.go | 6 +- api/managementpb/service/service_grpc.pb.go | 13 ++- api/managementpb/service_grpc.pb.go | 13 ++- api/platformpb/platform.pb.gw.go | 6 +- api/platformpb/platform_grpc.pb.go | 31 ++++-- api/qanpb/collector_grpc.pb.go | 13 ++- api/qanpb/filters.pb.gw.go | 6 +- api/qanpb/filters_grpc.pb.go | 13 ++- api/qanpb/metrics_names.pb.gw.go | 6 +- api/qanpb/metrics_names_grpc.pb.go | 13 ++- api/qanpb/object_details.pb.gw.go | 6 +- api/qanpb/object_details_grpc.pb.go | 34 ++++-- api/qanpb/profile.pb.gw.go | 6 +- api/qanpb/profile_grpc.pb.go | 13 ++- api/serverpb/server.pb.gw.go | 6 +- api/serverpb/server_grpc.pb.go | 40 ++++--- api/uieventspb/server.pb.gw.go | 6 +- api/uieventspb/server_grpc.pb.go | 13 ++- api/userpb/user.pb.gw.go | 6 +- api/userpb/user_grpc.pb.go | 19 +++- descriptor.bin | Bin 795295 -> 811509 bytes go.mod | 11 +- go.sum | 20 ++-- tools/go.mod | 45 ++++---- tools/go.sum | 99 ++++++++--------- 101 files changed, 958 insertions(+), 573 deletions(-) diff --git a/api/agentlocalpb/agentlocal.pb.gw.go b/api/agentlocalpb/agentlocal.pb.gw.go index ad53fdf449..37bd317c6b 100644 --- a/api/agentlocalpb/agentlocal.pb.gw.go +++ b/api/agentlocalpb/agentlocal.pb.gw.go @@ -196,21 +196,21 @@ func RegisterAgentLocalHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterAgentLocalHandlerFromEndpoint is same as RegisterAgentLocalHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAgentLocalHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/agentlocalpb/agentlocal_grpc.pb.go b/api/agentlocalpb/agentlocal_grpc.pb.go index 1eeb25c672..d0906208b5 100644 --- a/api/agentlocalpb/agentlocal_grpc.pb.go +++ b/api/agentlocalpb/agentlocal_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: agentlocalpb/agentlocal.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( AgentLocal_Status_FullMethodName = "/agentlocal.AgentLocal/Status" @@ -27,6 +27,8 @@ const ( // AgentLocalClient is the client API for AgentLocal service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// AgentLocal service provides public methods for checking pmm-agent status locally. type AgentLocalClient interface { // Status returns current pmm-agent status. Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) @@ -43,8 +45,9 @@ func NewAgentLocalClient(cc grpc.ClientConnInterface) AgentLocalClient { } func (c *agentLocalClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatusResponse) - err := c.cc.Invoke(ctx, AgentLocal_Status_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, AgentLocal_Status_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -52,8 +55,9 @@ func (c *agentLocalClient) Status(ctx context.Context, in *StatusRequest, opts . } func (c *agentLocalClient) Reload(ctx context.Context, in *ReloadRequest, opts ...grpc.CallOption) (*ReloadResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReloadResponse) - err := c.cc.Invoke(ctx, AgentLocal_Reload_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, AgentLocal_Reload_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -63,6 +67,8 @@ func (c *agentLocalClient) Reload(ctx context.Context, in *ReloadRequest, opts . // AgentLocalServer is the server API for AgentLocal service. // All implementations must embed UnimplementedAgentLocalServer // for forward compatibility +// +// AgentLocal service provides public methods for checking pmm-agent status locally. type AgentLocalServer interface { // Status returns current pmm-agent status. Status(context.Context, *StatusRequest) (*StatusResponse, error) diff --git a/api/agentpb/agent_grpc.pb.go b/api/agentpb/agent_grpc.pb.go index d828d8cc68..7426d93ba8 100644 --- a/api/agentpb/agent_grpc.pb.go +++ b/api/agentpb/agent_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: agentpb/agent.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Agent_Connect_FullMethodName = "/agent.Agent/Connect" @@ -26,6 +26,8 @@ const ( // AgentClient is the client API for Agent service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentClient interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. Connect(ctx context.Context, opts ...grpc.CallOption) (Agent_ConnectClient, error) @@ -40,11 +42,12 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { } func (c *agentClient) Connect(ctx context.Context, opts ...grpc.CallOption) (Agent_ConnectClient, error) { - stream, err := c.cc.NewStream(ctx, &Agent_ServiceDesc.Streams[0], Agent_Connect_FullMethodName, opts...) + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Agent_ServiceDesc.Streams[0], Agent_Connect_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &agentConnectClient{stream} + x := &agentConnectClient{ClientStream: stream} return x, nil } @@ -73,6 +76,8 @@ func (x *agentConnectClient) Recv() (*ServerMessage, error) { // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer // for forward compatibility +// +// Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentServer interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. Connect(Agent_ConnectServer) error @@ -99,7 +104,7 @@ func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { } func _Agent_Connect_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(AgentServer).Connect(&agentConnectServer{stream}) + return srv.(AgentServer).Connect(&agentConnectServer{ServerStream: stream}) } type Agent_ConnectServer interface { diff --git a/api/inventorypb/agents.pb.gw.go b/api/inventorypb/agents.pb.gw.go index 73084b65e7..74700f5eec 100644 --- a/api/inventorypb/agents.pb.gw.go +++ b/api/inventorypb/agents.pb.gw.go @@ -1532,21 +1532,21 @@ func RegisterAgentsHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser // RegisterAgentsHandlerFromEndpoint is same as RegisterAgentsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAgentsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/inventorypb/agents.proto b/api/inventorypb/agents.proto index 9f5c467795..8da1d68124 100644 --- a/api/inventorypb/agents.proto +++ b/api/inventorypb/agents.proto @@ -1232,7 +1232,7 @@ message AddExternalExporterRequest { string metrics_path = 7; // Listen port for scraping metrics. uint32 listen_port = 8 [(validate.rules).uint32 = { - gt: 0, + gt: 0 lt: 65536 }]; // Custom user-assigned labels. diff --git a/api/inventorypb/agents_grpc.pb.go b/api/inventorypb/agents_grpc.pb.go index 09de340da9..6e523a5e4d 100644 --- a/api/inventorypb/agents_grpc.pb.go +++ b/api/inventorypb/agents_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: inventorypb/agents.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Agents_ListAgents_FullMethodName = "/inventory.Agents/ListAgents" @@ -56,6 +56,8 @@ const ( // AgentsClient is the client API for Agents service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Agents service provides public methods for managing Agents. type AgentsClient interface { // ListAgents returns a list of all Agents. ListAgents(ctx context.Context, in *ListAgentsRequest, opts ...grpc.CallOption) (*ListAgentsResponse, error) @@ -130,8 +132,9 @@ func NewAgentsClient(cc grpc.ClientConnInterface) AgentsClient { } func (c *agentsClient) ListAgents(ctx context.Context, in *ListAgentsRequest, opts ...grpc.CallOption) (*ListAgentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAgentsResponse) - err := c.cc.Invoke(ctx, Agents_ListAgents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ListAgents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +142,9 @@ func (c *agentsClient) ListAgents(ctx context.Context, in *ListAgentsRequest, op } func (c *agentsClient) GetAgent(ctx context.Context, in *GetAgentRequest, opts ...grpc.CallOption) (*GetAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetAgentResponse) - err := c.cc.Invoke(ctx, Agents_GetAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_GetAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +152,9 @@ func (c *agentsClient) GetAgent(ctx context.Context, in *GetAgentRequest, opts . } func (c *agentsClient) GetAgentLogs(ctx context.Context, in *GetAgentLogsRequest, opts ...grpc.CallOption) (*GetAgentLogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetAgentLogsResponse) - err := c.cc.Invoke(ctx, Agents_GetAgentLogs_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_GetAgentLogs_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +162,9 @@ func (c *agentsClient) GetAgentLogs(ctx context.Context, in *GetAgentLogsRequest } func (c *agentsClient) AddPMMAgent(ctx context.Context, in *AddPMMAgentRequest, opts ...grpc.CallOption) (*AddPMMAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddPMMAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddPMMAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddPMMAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +172,9 @@ func (c *agentsClient) AddPMMAgent(ctx context.Context, in *AddPMMAgentRequest, } func (c *agentsClient) AddNodeExporter(ctx context.Context, in *AddNodeExporterRequest, opts ...grpc.CallOption) (*AddNodeExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddNodeExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddNodeExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddNodeExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +182,9 @@ func (c *agentsClient) AddNodeExporter(ctx context.Context, in *AddNodeExporterR } func (c *agentsClient) ChangeNodeExporter(ctx context.Context, in *ChangeNodeExporterRequest, opts ...grpc.CallOption) (*ChangeNodeExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeNodeExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeNodeExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeNodeExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +192,9 @@ func (c *agentsClient) ChangeNodeExporter(ctx context.Context, in *ChangeNodeExp } func (c *agentsClient) AddMySQLdExporter(ctx context.Context, in *AddMySQLdExporterRequest, opts ...grpc.CallOption) (*AddMySQLdExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMySQLdExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddMySQLdExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddMySQLdExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -193,8 +202,9 @@ func (c *agentsClient) AddMySQLdExporter(ctx context.Context, in *AddMySQLdExpor } func (c *agentsClient) ChangeMySQLdExporter(ctx context.Context, in *ChangeMySQLdExporterRequest, opts ...grpc.CallOption) (*ChangeMySQLdExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeMySQLdExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeMySQLdExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeMySQLdExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,8 +212,9 @@ func (c *agentsClient) ChangeMySQLdExporter(ctx context.Context, in *ChangeMySQL } func (c *agentsClient) AddMongoDBExporter(ctx context.Context, in *AddMongoDBExporterRequest, opts ...grpc.CallOption) (*AddMongoDBExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMongoDBExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddMongoDBExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddMongoDBExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -211,8 +222,9 @@ func (c *agentsClient) AddMongoDBExporter(ctx context.Context, in *AddMongoDBExp } func (c *agentsClient) ChangeMongoDBExporter(ctx context.Context, in *ChangeMongoDBExporterRequest, opts ...grpc.CallOption) (*ChangeMongoDBExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeMongoDBExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeMongoDBExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeMongoDBExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -220,8 +232,9 @@ func (c *agentsClient) ChangeMongoDBExporter(ctx context.Context, in *ChangeMong } func (c *agentsClient) AddPostgresExporter(ctx context.Context, in *AddPostgresExporterRequest, opts ...grpc.CallOption) (*AddPostgresExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddPostgresExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddPostgresExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddPostgresExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -229,8 +242,9 @@ func (c *agentsClient) AddPostgresExporter(ctx context.Context, in *AddPostgresE } func (c *agentsClient) ChangePostgresExporter(ctx context.Context, in *ChangePostgresExporterRequest, opts ...grpc.CallOption) (*ChangePostgresExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangePostgresExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangePostgresExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangePostgresExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -238,8 +252,9 @@ func (c *agentsClient) ChangePostgresExporter(ctx context.Context, in *ChangePos } func (c *agentsClient) AddProxySQLExporter(ctx context.Context, in *AddProxySQLExporterRequest, opts ...grpc.CallOption) (*AddProxySQLExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddProxySQLExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddProxySQLExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddProxySQLExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -247,8 +262,9 @@ func (c *agentsClient) AddProxySQLExporter(ctx context.Context, in *AddProxySQLE } func (c *agentsClient) ChangeProxySQLExporter(ctx context.Context, in *ChangeProxySQLExporterRequest, opts ...grpc.CallOption) (*ChangeProxySQLExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeProxySQLExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeProxySQLExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeProxySQLExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -256,8 +272,9 @@ func (c *agentsClient) ChangeProxySQLExporter(ctx context.Context, in *ChangePro } func (c *agentsClient) AddQANMySQLPerfSchemaAgent(ctx context.Context, in *AddQANMySQLPerfSchemaAgentRequest, opts ...grpc.CallOption) (*AddQANMySQLPerfSchemaAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddQANMySQLPerfSchemaAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddQANMySQLPerfSchemaAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddQANMySQLPerfSchemaAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -265,8 +282,9 @@ func (c *agentsClient) AddQANMySQLPerfSchemaAgent(ctx context.Context, in *AddQA } func (c *agentsClient) ChangeQANMySQLPerfSchemaAgent(ctx context.Context, in *ChangeQANMySQLPerfSchemaAgentRequest, opts ...grpc.CallOption) (*ChangeQANMySQLPerfSchemaAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeQANMySQLPerfSchemaAgentResponse) - err := c.cc.Invoke(ctx, Agents_ChangeQANMySQLPerfSchemaAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeQANMySQLPerfSchemaAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -274,8 +292,9 @@ func (c *agentsClient) ChangeQANMySQLPerfSchemaAgent(ctx context.Context, in *Ch } func (c *agentsClient) AddQANMySQLSlowlogAgent(ctx context.Context, in *AddQANMySQLSlowlogAgentRequest, opts ...grpc.CallOption) (*AddQANMySQLSlowlogAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddQANMySQLSlowlogAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddQANMySQLSlowlogAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddQANMySQLSlowlogAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -283,8 +302,9 @@ func (c *agentsClient) AddQANMySQLSlowlogAgent(ctx context.Context, in *AddQANMy } func (c *agentsClient) ChangeQANMySQLSlowlogAgent(ctx context.Context, in *ChangeQANMySQLSlowlogAgentRequest, opts ...grpc.CallOption) (*ChangeQANMySQLSlowlogAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeQANMySQLSlowlogAgentResponse) - err := c.cc.Invoke(ctx, Agents_ChangeQANMySQLSlowlogAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeQANMySQLSlowlogAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -292,8 +312,9 @@ func (c *agentsClient) ChangeQANMySQLSlowlogAgent(ctx context.Context, in *Chang } func (c *agentsClient) AddQANMongoDBProfilerAgent(ctx context.Context, in *AddQANMongoDBProfilerAgentRequest, opts ...grpc.CallOption) (*AddQANMongoDBProfilerAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddQANMongoDBProfilerAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddQANMongoDBProfilerAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddQANMongoDBProfilerAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -301,8 +322,9 @@ func (c *agentsClient) AddQANMongoDBProfilerAgent(ctx context.Context, in *AddQA } func (c *agentsClient) ChangeQANMongoDBProfilerAgent(ctx context.Context, in *ChangeQANMongoDBProfilerAgentRequest, opts ...grpc.CallOption) (*ChangeQANMongoDBProfilerAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeQANMongoDBProfilerAgentResponse) - err := c.cc.Invoke(ctx, Agents_ChangeQANMongoDBProfilerAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeQANMongoDBProfilerAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -310,8 +332,9 @@ func (c *agentsClient) ChangeQANMongoDBProfilerAgent(ctx context.Context, in *Ch } func (c *agentsClient) AddQANPostgreSQLPgStatementsAgent(ctx context.Context, in *AddQANPostgreSQLPgStatementsAgentRequest, opts ...grpc.CallOption) (*AddQANPostgreSQLPgStatementsAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddQANPostgreSQLPgStatementsAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddQANPostgreSQLPgStatementsAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddQANPostgreSQLPgStatementsAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -319,8 +342,9 @@ func (c *agentsClient) AddQANPostgreSQLPgStatementsAgent(ctx context.Context, in } func (c *agentsClient) ChangeQANPostgreSQLPgStatementsAgent(ctx context.Context, in *ChangeQANPostgreSQLPgStatementsAgentRequest, opts ...grpc.CallOption) (*ChangeQANPostgreSQLPgStatementsAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeQANPostgreSQLPgStatementsAgentResponse) - err := c.cc.Invoke(ctx, Agents_ChangeQANPostgreSQLPgStatementsAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeQANPostgreSQLPgStatementsAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -328,8 +352,9 @@ func (c *agentsClient) ChangeQANPostgreSQLPgStatementsAgent(ctx context.Context, } func (c *agentsClient) AddQANPostgreSQLPgStatMonitorAgent(ctx context.Context, in *AddQANPostgreSQLPgStatMonitorAgentRequest, opts ...grpc.CallOption) (*AddQANPostgreSQLPgStatMonitorAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddQANPostgreSQLPgStatMonitorAgentResponse) - err := c.cc.Invoke(ctx, Agents_AddQANPostgreSQLPgStatMonitorAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddQANPostgreSQLPgStatMonitorAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -337,8 +362,9 @@ func (c *agentsClient) AddQANPostgreSQLPgStatMonitorAgent(ctx context.Context, i } func (c *agentsClient) ChangeQANPostgreSQLPgStatMonitorAgent(ctx context.Context, in *ChangeQANPostgreSQLPgStatMonitorAgentRequest, opts ...grpc.CallOption) (*ChangeQANPostgreSQLPgStatMonitorAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeQANPostgreSQLPgStatMonitorAgentResponse) - err := c.cc.Invoke(ctx, Agents_ChangeQANPostgreSQLPgStatMonitorAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeQANPostgreSQLPgStatMonitorAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -346,8 +372,9 @@ func (c *agentsClient) ChangeQANPostgreSQLPgStatMonitorAgent(ctx context.Context } func (c *agentsClient) AddRDSExporter(ctx context.Context, in *AddRDSExporterRequest, opts ...grpc.CallOption) (*AddRDSExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddRDSExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddRDSExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddRDSExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -355,8 +382,9 @@ func (c *agentsClient) AddRDSExporter(ctx context.Context, in *AddRDSExporterReq } func (c *agentsClient) ChangeRDSExporter(ctx context.Context, in *ChangeRDSExporterRequest, opts ...grpc.CallOption) (*ChangeRDSExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeRDSExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeRDSExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeRDSExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -364,8 +392,9 @@ func (c *agentsClient) ChangeRDSExporter(ctx context.Context, in *ChangeRDSExpor } func (c *agentsClient) AddExternalExporter(ctx context.Context, in *AddExternalExporterRequest, opts ...grpc.CallOption) (*AddExternalExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddExternalExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddExternalExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddExternalExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -373,8 +402,9 @@ func (c *agentsClient) AddExternalExporter(ctx context.Context, in *AddExternalE } func (c *agentsClient) ChangeExternalExporter(ctx context.Context, in *ChangeExternalExporterRequest, opts ...grpc.CallOption) (*ChangeExternalExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeExternalExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeExternalExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeExternalExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -382,8 +412,9 @@ func (c *agentsClient) ChangeExternalExporter(ctx context.Context, in *ChangeExt } func (c *agentsClient) AddAzureDatabaseExporter(ctx context.Context, in *AddAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*AddAzureDatabaseExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddAzureDatabaseExporterResponse) - err := c.cc.Invoke(ctx, Agents_AddAzureDatabaseExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_AddAzureDatabaseExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -391,8 +422,9 @@ func (c *agentsClient) AddAzureDatabaseExporter(ctx context.Context, in *AddAzur } func (c *agentsClient) ChangeAzureDatabaseExporter(ctx context.Context, in *ChangeAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*ChangeAzureDatabaseExporterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeAzureDatabaseExporterResponse) - err := c.cc.Invoke(ctx, Agents_ChangeAzureDatabaseExporter_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_ChangeAzureDatabaseExporter_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -400,8 +432,9 @@ func (c *agentsClient) ChangeAzureDatabaseExporter(ctx context.Context, in *Chan } func (c *agentsClient) RemoveAgent(ctx context.Context, in *RemoveAgentRequest, opts ...grpc.CallOption) (*RemoveAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveAgentResponse) - err := c.cc.Invoke(ctx, Agents_RemoveAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agents_RemoveAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -411,6 +444,8 @@ func (c *agentsClient) RemoveAgent(ctx context.Context, in *RemoveAgentRequest, // AgentsServer is the server API for Agents service. // All implementations must embed UnimplementedAgentsServer // for forward compatibility +// +// Agents service provides public methods for managing Agents. type AgentsServer interface { // ListAgents returns a list of all Agents. ListAgents(context.Context, *ListAgentsRequest) (*ListAgentsResponse, error) diff --git a/api/inventorypb/nodes.pb.gw.go b/api/inventorypb/nodes.pb.gw.go index 8c7dbb33f2..56cd882ac7 100644 --- a/api/inventorypb/nodes.pb.gw.go +++ b/api/inventorypb/nodes.pb.gw.go @@ -476,21 +476,21 @@ func RegisterNodesHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterNodesHandlerFromEndpoint is same as RegisterNodesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterNodesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/inventorypb/nodes_grpc.pb.go b/api/inventorypb/nodes_grpc.pb.go index 1cf7c5bed6..d4270b9477 100644 --- a/api/inventorypb/nodes_grpc.pb.go +++ b/api/inventorypb/nodes_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: inventorypb/nodes.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Nodes_ListNodes_FullMethodName = "/inventory.Nodes/ListNodes" @@ -34,6 +34,8 @@ const ( // NodesClient is the client API for Nodes service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Nodes service provides public methods for managing Nodes. type NodesClient interface { // ListNodes returns a list of all Nodes. ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) @@ -69,8 +71,9 @@ func NewNodesClient(cc grpc.ClientConnInterface) NodesClient { } func (c *nodesClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListNodesResponse) - err := c.cc.Invoke(ctx, Nodes_ListNodes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_ListNodes_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -78,8 +81,9 @@ func (c *nodesClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts } func (c *nodesClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetNodeResponse) - err := c.cc.Invoke(ctx, Nodes_GetNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_GetNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -87,8 +91,9 @@ func (c *nodesClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...g } func (c *nodesClient) AddNode(ctx context.Context, in *AddNodeRequest, opts ...grpc.CallOption) (*AddNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -97,8 +102,9 @@ func (c *nodesClient) AddNode(ctx context.Context, in *AddNodeRequest, opts ...g // Deprecated: Do not use. func (c *nodesClient) AddGenericNode(ctx context.Context, in *AddGenericNodeRequest, opts ...grpc.CallOption) (*AddGenericNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddGenericNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddGenericNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddGenericNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -107,8 +113,9 @@ func (c *nodesClient) AddGenericNode(ctx context.Context, in *AddGenericNodeRequ // Deprecated: Do not use. func (c *nodesClient) AddContainerNode(ctx context.Context, in *AddContainerNodeRequest, opts ...grpc.CallOption) (*AddContainerNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddContainerNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddContainerNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddContainerNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -117,8 +124,9 @@ func (c *nodesClient) AddContainerNode(ctx context.Context, in *AddContainerNode // Deprecated: Do not use. func (c *nodesClient) AddRemoteNode(ctx context.Context, in *AddRemoteNodeRequest, opts ...grpc.CallOption) (*AddRemoteNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddRemoteNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddRemoteNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddRemoteNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -127,8 +135,9 @@ func (c *nodesClient) AddRemoteNode(ctx context.Context, in *AddRemoteNodeReques // Deprecated: Do not use. func (c *nodesClient) AddRemoteRDSNode(ctx context.Context, in *AddRemoteRDSNodeRequest, opts ...grpc.CallOption) (*AddRemoteRDSNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddRemoteRDSNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddRemoteRDSNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddRemoteRDSNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -137,8 +146,9 @@ func (c *nodesClient) AddRemoteRDSNode(ctx context.Context, in *AddRemoteRDSNode // Deprecated: Do not use. func (c *nodesClient) AddRemoteAzureDatabaseNode(ctx context.Context, in *AddRemoteAzureDatabaseNodeRequest, opts ...grpc.CallOption) (*AddRemoteAzureDatabaseNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddRemoteAzureDatabaseNodeResponse) - err := c.cc.Invoke(ctx, Nodes_AddRemoteAzureDatabaseNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_AddRemoteAzureDatabaseNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -146,8 +156,9 @@ func (c *nodesClient) AddRemoteAzureDatabaseNode(ctx context.Context, in *AddRem } func (c *nodesClient) RemoveNode(ctx context.Context, in *RemoveNodeRequest, opts ...grpc.CallOption) (*RemoveNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveNodeResponse) - err := c.cc.Invoke(ctx, Nodes_RemoveNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Nodes_RemoveNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,6 +168,8 @@ func (c *nodesClient) RemoveNode(ctx context.Context, in *RemoveNodeRequest, opt // NodesServer is the server API for Nodes service. // All implementations must embed UnimplementedNodesServer // for forward compatibility +// +// Nodes service provides public methods for managing Nodes. type NodesServer interface { // ListNodes returns a list of all Nodes. ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) diff --git a/api/inventorypb/services.pb.gw.go b/api/inventorypb/services.pb.gw.go index 86c751ab6d..92c0ffa9e0 100644 --- a/api/inventorypb/services.pb.gw.go +++ b/api/inventorypb/services.pb.gw.go @@ -668,21 +668,21 @@ func RegisterServicesHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterServicesHandlerFromEndpoint is same as RegisterServicesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterServicesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/inventorypb/services_grpc.pb.go b/api/inventorypb/services_grpc.pb.go index 84f88883fd..e43403789c 100644 --- a/api/inventorypb/services_grpc.pb.go +++ b/api/inventorypb/services_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: inventorypb/services.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Services_ListServices_FullMethodName = "/inventory.Services/ListServices" @@ -38,6 +38,8 @@ const ( // ServicesClient is the client API for Services service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Services service provides public methods for managing Services. type ServicesClient interface { // ListServices returns a list of Services filtered by type. ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) @@ -76,8 +78,9 @@ func NewServicesClient(cc grpc.ClientConnInterface) ServicesClient { } func (c *servicesClient) ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListServicesResponse) - err := c.cc.Invoke(ctx, Services_ListServices_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_ListServices_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -85,8 +88,9 @@ func (c *servicesClient) ListServices(ctx context.Context, in *ListServicesReque } func (c *servicesClient) ListActiveServiceTypes(ctx context.Context, in *ListActiveServiceTypesRequest, opts ...grpc.CallOption) (*ListActiveServiceTypesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListActiveServiceTypesResponse) - err := c.cc.Invoke(ctx, Services_ListActiveServiceTypes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_ListActiveServiceTypes_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -94,8 +98,9 @@ func (c *servicesClient) ListActiveServiceTypes(ctx context.Context, in *ListAct } func (c *servicesClient) GetService(ctx context.Context, in *GetServiceRequest, opts ...grpc.CallOption) (*GetServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetServiceResponse) - err := c.cc.Invoke(ctx, Services_GetService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_GetService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -103,8 +108,9 @@ func (c *servicesClient) GetService(ctx context.Context, in *GetServiceRequest, } func (c *servicesClient) AddMySQLService(ctx context.Context, in *AddMySQLServiceRequest, opts ...grpc.CallOption) (*AddMySQLServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMySQLServiceResponse) - err := c.cc.Invoke(ctx, Services_AddMySQLService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddMySQLService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +118,9 @@ func (c *servicesClient) AddMySQLService(ctx context.Context, in *AddMySQLServic } func (c *servicesClient) AddMongoDBService(ctx context.Context, in *AddMongoDBServiceRequest, opts ...grpc.CallOption) (*AddMongoDBServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMongoDBServiceResponse) - err := c.cc.Invoke(ctx, Services_AddMongoDBService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddMongoDBService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -121,8 +128,9 @@ func (c *servicesClient) AddMongoDBService(ctx context.Context, in *AddMongoDBSe } func (c *servicesClient) AddPostgreSQLService(ctx context.Context, in *AddPostgreSQLServiceRequest, opts ...grpc.CallOption) (*AddPostgreSQLServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddPostgreSQLServiceResponse) - err := c.cc.Invoke(ctx, Services_AddPostgreSQLService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddPostgreSQLService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -130,8 +138,9 @@ func (c *servicesClient) AddPostgreSQLService(ctx context.Context, in *AddPostgr } func (c *servicesClient) AddProxySQLService(ctx context.Context, in *AddProxySQLServiceRequest, opts ...grpc.CallOption) (*AddProxySQLServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddProxySQLServiceResponse) - err := c.cc.Invoke(ctx, Services_AddProxySQLService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddProxySQLService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +148,9 @@ func (c *servicesClient) AddProxySQLService(ctx context.Context, in *AddProxySQL } func (c *servicesClient) AddHAProxyService(ctx context.Context, in *AddHAProxyServiceRequest, opts ...grpc.CallOption) (*AddHAProxyServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddHAProxyServiceResponse) - err := c.cc.Invoke(ctx, Services_AddHAProxyService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddHAProxyService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +158,9 @@ func (c *servicesClient) AddHAProxyService(ctx context.Context, in *AddHAProxySe } func (c *servicesClient) AddExternalService(ctx context.Context, in *AddExternalServiceRequest, opts ...grpc.CallOption) (*AddExternalServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddExternalServiceResponse) - err := c.cc.Invoke(ctx, Services_AddExternalService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddExternalService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +168,9 @@ func (c *servicesClient) AddExternalService(ctx context.Context, in *AddExternal } func (c *servicesClient) RemoveService(ctx context.Context, in *RemoveServiceRequest, opts ...grpc.CallOption) (*RemoveServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveServiceResponse) - err := c.cc.Invoke(ctx, Services_RemoveService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_RemoveService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +178,9 @@ func (c *servicesClient) RemoveService(ctx context.Context, in *RemoveServiceReq } func (c *servicesClient) AddCustomLabels(ctx context.Context, in *AddCustomLabelsRequest, opts ...grpc.CallOption) (*AddCustomLabelsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddCustomLabelsResponse) - err := c.cc.Invoke(ctx, Services_AddCustomLabels_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_AddCustomLabels_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +188,9 @@ func (c *servicesClient) AddCustomLabels(ctx context.Context, in *AddCustomLabel } func (c *servicesClient) RemoveCustomLabels(ctx context.Context, in *RemoveCustomLabelsRequest, opts ...grpc.CallOption) (*RemoveCustomLabelsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveCustomLabelsResponse) - err := c.cc.Invoke(ctx, Services_RemoveCustomLabels_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_RemoveCustomLabels_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +198,9 @@ func (c *servicesClient) RemoveCustomLabels(ctx context.Context, in *RemoveCusto } func (c *servicesClient) ChangeService(ctx context.Context, in *ChangeServiceRequest, opts ...grpc.CallOption) (*ChangeServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeServiceResponse) - err := c.cc.Invoke(ctx, Services_ChangeService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Services_ChangeService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -195,6 +210,8 @@ func (c *servicesClient) ChangeService(ctx context.Context, in *ChangeServiceReq // ServicesServer is the server API for Services service. // All implementations must embed UnimplementedServicesServer // for forward compatibility +// +// Services service provides public methods for managing Services. type ServicesServer interface { // ListServices returns a list of Services filtered by type. ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) diff --git a/api/managementpb/actions.pb.gw.go b/api/managementpb/actions.pb.gw.go index e46087f895..2c16bc6c09 100644 --- a/api/managementpb/actions.pb.gw.go +++ b/api/managementpb/actions.pb.gw.go @@ -764,21 +764,21 @@ func RegisterActionsHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterActionsHandlerFromEndpoint is same as RegisterActionsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterActionsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/actions_grpc.pb.go b/api/managementpb/actions_grpc.pb.go index b06625ee9a..c92448c49b 100644 --- a/api/managementpb/actions_grpc.pb.go +++ b/api/managementpb/actions_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/actions.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Actions_GetAction_FullMethodName = "/management.Actions/GetAction" @@ -40,6 +40,8 @@ const ( // ActionsClient is the client API for Actions service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Actions service provides public Management API methods for Actions. type ActionsClient interface { // GetAction gets result of a given Action. GetAction(ctx context.Context, in *GetActionRequest, opts ...grpc.CallOption) (*GetActionResponse, error) @@ -82,8 +84,9 @@ func NewActionsClient(cc grpc.ClientConnInterface) ActionsClient { } func (c *actionsClient) GetAction(ctx context.Context, in *GetActionRequest, opts ...grpc.CallOption) (*GetActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetActionResponse) - err := c.cc.Invoke(ctx, Actions_GetAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_GetAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -91,8 +94,9 @@ func (c *actionsClient) GetAction(ctx context.Context, in *GetActionRequest, opt } func (c *actionsClient) StartMySQLExplainAction(ctx context.Context, in *StartMySQLExplainActionRequest, opts ...grpc.CallOption) (*StartMySQLExplainActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLExplainActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLExplainAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLExplainAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -100,8 +104,9 @@ func (c *actionsClient) StartMySQLExplainAction(ctx context.Context, in *StartMy } func (c *actionsClient) StartMySQLExplainJSONAction(ctx context.Context, in *StartMySQLExplainJSONActionRequest, opts ...grpc.CallOption) (*StartMySQLExplainJSONActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLExplainJSONActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLExplainJSONAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLExplainJSONAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -109,8 +114,9 @@ func (c *actionsClient) StartMySQLExplainJSONAction(ctx context.Context, in *Sta } func (c *actionsClient) StartMySQLExplainTraditionalJSONAction(ctx context.Context, in *StartMySQLExplainTraditionalJSONActionRequest, opts ...grpc.CallOption) (*StartMySQLExplainTraditionalJSONActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLExplainTraditionalJSONActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLExplainTraditionalJSONAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLExplainTraditionalJSONAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -118,8 +124,9 @@ func (c *actionsClient) StartMySQLExplainTraditionalJSONAction(ctx context.Conte } func (c *actionsClient) StartMySQLShowCreateTableAction(ctx context.Context, in *StartMySQLShowCreateTableActionRequest, opts ...grpc.CallOption) (*StartMySQLShowCreateTableActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLShowCreateTableActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLShowCreateTableAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLShowCreateTableAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -127,8 +134,9 @@ func (c *actionsClient) StartMySQLShowCreateTableAction(ctx context.Context, in } func (c *actionsClient) StartMySQLShowTableStatusAction(ctx context.Context, in *StartMySQLShowTableStatusActionRequest, opts ...grpc.CallOption) (*StartMySQLShowTableStatusActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLShowTableStatusActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLShowTableStatusAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLShowTableStatusAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -136,8 +144,9 @@ func (c *actionsClient) StartMySQLShowTableStatusAction(ctx context.Context, in } func (c *actionsClient) StartMySQLShowIndexAction(ctx context.Context, in *StartMySQLShowIndexActionRequest, opts ...grpc.CallOption) (*StartMySQLShowIndexActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMySQLShowIndexActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMySQLShowIndexAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMySQLShowIndexAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -145,8 +154,9 @@ func (c *actionsClient) StartMySQLShowIndexAction(ctx context.Context, in *Start } func (c *actionsClient) StartPostgreSQLShowCreateTableAction(ctx context.Context, in *StartPostgreSQLShowCreateTableActionRequest, opts ...grpc.CallOption) (*StartPostgreSQLShowCreateTableActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPostgreSQLShowCreateTableActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPostgreSQLShowCreateTableAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPostgreSQLShowCreateTableAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -154,8 +164,9 @@ func (c *actionsClient) StartPostgreSQLShowCreateTableAction(ctx context.Context } func (c *actionsClient) StartPostgreSQLShowIndexAction(ctx context.Context, in *StartPostgreSQLShowIndexActionRequest, opts ...grpc.CallOption) (*StartPostgreSQLShowIndexActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPostgreSQLShowIndexActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPostgreSQLShowIndexAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPostgreSQLShowIndexAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -163,8 +174,9 @@ func (c *actionsClient) StartPostgreSQLShowIndexAction(ctx context.Context, in * } func (c *actionsClient) StartMongoDBExplainAction(ctx context.Context, in *StartMongoDBExplainActionRequest, opts ...grpc.CallOption) (*StartMongoDBExplainActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartMongoDBExplainActionResponse) - err := c.cc.Invoke(ctx, Actions_StartMongoDBExplainAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartMongoDBExplainAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -172,8 +184,9 @@ func (c *actionsClient) StartMongoDBExplainAction(ctx context.Context, in *Start } func (c *actionsClient) StartPTSummaryAction(ctx context.Context, in *StartPTSummaryActionRequest, opts ...grpc.CallOption) (*StartPTSummaryActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPTSummaryActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPTSummaryAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPTSummaryAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -181,8 +194,9 @@ func (c *actionsClient) StartPTSummaryAction(ctx context.Context, in *StartPTSum } func (c *actionsClient) StartPTPgSummaryAction(ctx context.Context, in *StartPTPgSummaryActionRequest, opts ...grpc.CallOption) (*StartPTPgSummaryActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPTPgSummaryActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPTPgSummaryAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPTPgSummaryAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -190,8 +204,9 @@ func (c *actionsClient) StartPTPgSummaryAction(ctx context.Context, in *StartPTP } func (c *actionsClient) StartPTMongoDBSummaryAction(ctx context.Context, in *StartPTMongoDBSummaryActionRequest, opts ...grpc.CallOption) (*StartPTMongoDBSummaryActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPTMongoDBSummaryActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPTMongoDBSummaryAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPTMongoDBSummaryAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -199,8 +214,9 @@ func (c *actionsClient) StartPTMongoDBSummaryAction(ctx context.Context, in *Sta } func (c *actionsClient) StartPTMySQLSummaryAction(ctx context.Context, in *StartPTMySQLSummaryActionRequest, opts ...grpc.CallOption) (*StartPTMySQLSummaryActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartPTMySQLSummaryActionResponse) - err := c.cc.Invoke(ctx, Actions_StartPTMySQLSummaryAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_StartPTMySQLSummaryAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -208,8 +224,9 @@ func (c *actionsClient) StartPTMySQLSummaryAction(ctx context.Context, in *Start } func (c *actionsClient) CancelAction(ctx context.Context, in *CancelActionRequest, opts ...grpc.CallOption) (*CancelActionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CancelActionResponse) - err := c.cc.Invoke(ctx, Actions_CancelAction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Actions_CancelAction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -219,6 +236,8 @@ func (c *actionsClient) CancelAction(ctx context.Context, in *CancelActionReques // ActionsServer is the server API for Actions service. // All implementations must embed UnimplementedActionsServer // for forward compatibility +// +// Actions service provides public Management API methods for Actions. type ActionsServer interface { // GetAction gets result of a given Action. GetAction(context.Context, *GetActionRequest) (*GetActionResponse, error) diff --git a/api/managementpb/agent/agent.pb.gw.go b/api/managementpb/agent/agent.pb.gw.go index b323fbec6b..f2128d1d30 100644 --- a/api/managementpb/agent/agent.pb.gw.go +++ b/api/managementpb/agent/agent.pb.gw.go @@ -92,21 +92,21 @@ func RegisterAgentHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterAgentHandlerFromEndpoint is same as RegisterAgentHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAgentHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/agent/agent_grpc.pb.go b/api/managementpb/agent/agent_grpc.pb.go index 3cecb4e31d..28e61a02bf 100644 --- a/api/managementpb/agent/agent_grpc.pb.go +++ b/api/managementpb/agent/agent_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/agent/agent.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Agent_ListAgents_FullMethodName = "/agent.v1beta1.Agent/ListAgents" @@ -26,6 +26,8 @@ const ( // AgentClient is the client API for Agent service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Agent service provides public methods for managing and querying Agents. type AgentClient interface { // ListAgents returns a list of Agents filtered by service_id. ListAgents(ctx context.Context, in *ListAgentRequest, opts ...grpc.CallOption) (*ListAgentResponse, error) @@ -40,8 +42,9 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { } func (c *agentClient) ListAgents(ctx context.Context, in *ListAgentRequest, opts ...grpc.CallOption) (*ListAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAgentResponse) - err := c.cc.Invoke(ctx, Agent_ListAgents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Agent_ListAgents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *agentClient) ListAgents(ctx context.Context, in *ListAgentRequest, opts // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer // for forward compatibility +// +// Agent service provides public methods for managing and querying Agents. type AgentServer interface { // ListAgents returns a list of Agents filtered by service_id. ListAgents(context.Context, *ListAgentRequest) (*ListAgentResponse, error) diff --git a/api/managementpb/alerting/alerting.pb.gw.go b/api/managementpb/alerting/alerting.pb.gw.go index 4c41f9acdf..87800b1b64 100644 --- a/api/managementpb/alerting/alerting.pb.gw.go +++ b/api/managementpb/alerting/alerting.pb.gw.go @@ -284,21 +284,21 @@ func RegisterAlertingHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterAlertingHandlerFromEndpoint is same as RegisterAlertingHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAlertingHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/alerting/alerting_grpc.pb.go b/api/managementpb/alerting/alerting_grpc.pb.go index cfde9b6503..3fb26223b4 100644 --- a/api/managementpb/alerting/alerting_grpc.pb.go +++ b/api/managementpb/alerting/alerting_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/alerting/alerting.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Alerting_ListTemplates_FullMethodName = "/alerting.v1.Alerting/ListTemplates" @@ -30,6 +30,8 @@ const ( // AlertingClient is the client API for Alerting service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Alerting service lets to manage alerting templates and create alerting rules from them. type AlertingClient interface { // ListTemplates returns a list of all collected alert rule templates. ListTemplates(ctx context.Context, in *ListTemplatesRequest, opts ...grpc.CallOption) (*ListTemplatesResponse, error) @@ -52,8 +54,9 @@ func NewAlertingClient(cc grpc.ClientConnInterface) AlertingClient { } func (c *alertingClient) ListTemplates(ctx context.Context, in *ListTemplatesRequest, opts ...grpc.CallOption) (*ListTemplatesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListTemplatesResponse) - err := c.cc.Invoke(ctx, Alerting_ListTemplates_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerting_ListTemplates_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -61,8 +64,9 @@ func (c *alertingClient) ListTemplates(ctx context.Context, in *ListTemplatesReq } func (c *alertingClient) CreateTemplate(ctx context.Context, in *CreateTemplateRequest, opts ...grpc.CallOption) (*CreateTemplateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateTemplateResponse) - err := c.cc.Invoke(ctx, Alerting_CreateTemplate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerting_CreateTemplate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -70,8 +74,9 @@ func (c *alertingClient) CreateTemplate(ctx context.Context, in *CreateTemplateR } func (c *alertingClient) UpdateTemplate(ctx context.Context, in *UpdateTemplateRequest, opts ...grpc.CallOption) (*UpdateTemplateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateTemplateResponse) - err := c.cc.Invoke(ctx, Alerting_UpdateTemplate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerting_UpdateTemplate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -79,8 +84,9 @@ func (c *alertingClient) UpdateTemplate(ctx context.Context, in *UpdateTemplateR } func (c *alertingClient) DeleteTemplate(ctx context.Context, in *DeleteTemplateRequest, opts ...grpc.CallOption) (*DeleteTemplateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteTemplateResponse) - err := c.cc.Invoke(ctx, Alerting_DeleteTemplate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerting_DeleteTemplate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -88,8 +94,9 @@ func (c *alertingClient) DeleteTemplate(ctx context.Context, in *DeleteTemplateR } func (c *alertingClient) CreateRule(ctx context.Context, in *CreateRuleRequest, opts ...grpc.CallOption) (*CreateRuleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateRuleResponse) - err := c.cc.Invoke(ctx, Alerting_CreateRule_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerting_CreateRule_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -99,6 +106,8 @@ func (c *alertingClient) CreateRule(ctx context.Context, in *CreateRuleRequest, // AlertingServer is the server API for Alerting service. // All implementations must embed UnimplementedAlertingServer // for forward compatibility +// +// Alerting service lets to manage alerting templates and create alerting rules from them. type AlertingServer interface { // ListTemplates returns a list of all collected alert rule templates. ListTemplates(context.Context, *ListTemplatesRequest) (*ListTemplatesResponse, error) diff --git a/api/managementpb/annotation.pb.gw.go b/api/managementpb/annotation.pb.gw.go index e251b9b1b5..33be03fa13 100644 --- a/api/managementpb/annotation.pb.gw.go +++ b/api/managementpb/annotation.pb.gw.go @@ -92,21 +92,21 @@ func RegisterAnnotationHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterAnnotationHandlerFromEndpoint is same as RegisterAnnotationHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAnnotationHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/annotation_grpc.pb.go b/api/managementpb/annotation_grpc.pb.go index f89e1b16eb..f195fca8bb 100644 --- a/api/managementpb/annotation_grpc.pb.go +++ b/api/managementpb/annotation_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/annotation.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Annotation_AddAnnotation_FullMethodName = "/management.Annotation/AddAnnotation" @@ -26,6 +26,8 @@ const ( // AnnotationClient is the client API for Annotation service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Annotation service provides public methods for managing Annotations. type AnnotationClient interface { // AddAnnotation adds annotation. AddAnnotation(ctx context.Context, in *AddAnnotationRequest, opts ...grpc.CallOption) (*AddAnnotationResponse, error) @@ -40,8 +42,9 @@ func NewAnnotationClient(cc grpc.ClientConnInterface) AnnotationClient { } func (c *annotationClient) AddAnnotation(ctx context.Context, in *AddAnnotationRequest, opts ...grpc.CallOption) (*AddAnnotationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddAnnotationResponse) - err := c.cc.Invoke(ctx, Annotation_AddAnnotation_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Annotation_AddAnnotation_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *annotationClient) AddAnnotation(ctx context.Context, in *AddAnnotationR // AnnotationServer is the server API for Annotation service. // All implementations must embed UnimplementedAnnotationServer // for forward compatibility +// +// Annotation service provides public methods for managing Annotations. type AnnotationServer interface { // AddAnnotation adds annotation. AddAnnotation(context.Context, *AddAnnotationRequest) (*AddAnnotationResponse, error) diff --git a/api/managementpb/azure/azure.pb.gw.go b/api/managementpb/azure/azure.pb.gw.go index fb8c0f2248..a30fae74a2 100644 --- a/api/managementpb/azure/azure.pb.gw.go +++ b/api/managementpb/azure/azure.pb.gw.go @@ -140,21 +140,21 @@ func RegisterAzureDatabaseHandlerServer(ctx context.Context, mux *runtime.ServeM // RegisterAzureDatabaseHandlerFromEndpoint is same as RegisterAzureDatabaseHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAzureDatabaseHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/azure/azure_grpc.pb.go b/api/managementpb/azure/azure_grpc.pb.go index 0174809115..cbc784a7ad 100644 --- a/api/managementpb/azure/azure_grpc.pb.go +++ b/api/managementpb/azure/azure_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/azure/azure.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( AzureDatabase_DiscoverAzureDatabase_FullMethodName = "/azure.v1beta1.AzureDatabase/DiscoverAzureDatabase" @@ -27,6 +27,8 @@ const ( // AzureDatabaseClient is the client API for AzureDatabase service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// AzureDatabase service provides Service Discovery APIs. type AzureDatabaseClient interface { // DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances. DiscoverAzureDatabase(ctx context.Context, in *DiscoverAzureDatabaseRequest, opts ...grpc.CallOption) (*DiscoverAzureDatabaseResponse, error) @@ -43,8 +45,9 @@ func NewAzureDatabaseClient(cc grpc.ClientConnInterface) AzureDatabaseClient { } func (c *azureDatabaseClient) DiscoverAzureDatabase(ctx context.Context, in *DiscoverAzureDatabaseRequest, opts ...grpc.CallOption) (*DiscoverAzureDatabaseResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DiscoverAzureDatabaseResponse) - err := c.cc.Invoke(ctx, AzureDatabase_DiscoverAzureDatabase_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, AzureDatabase_DiscoverAzureDatabase_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -52,8 +55,9 @@ func (c *azureDatabaseClient) DiscoverAzureDatabase(ctx context.Context, in *Dis } func (c *azureDatabaseClient) AddAzureDatabase(ctx context.Context, in *AddAzureDatabaseRequest, opts ...grpc.CallOption) (*AddAzureDatabaseResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddAzureDatabaseResponse) - err := c.cc.Invoke(ctx, AzureDatabase_AddAzureDatabase_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, AzureDatabase_AddAzureDatabase_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -63,6 +67,8 @@ func (c *azureDatabaseClient) AddAzureDatabase(ctx context.Context, in *AddAzure // AzureDatabaseServer is the server API for AzureDatabase service. // All implementations must embed UnimplementedAzureDatabaseServer // for forward compatibility +// +// AzureDatabase service provides Service Discovery APIs. type AzureDatabaseServer interface { // DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances. DiscoverAzureDatabase(context.Context, *DiscoverAzureDatabaseRequest) (*DiscoverAzureDatabaseResponse, error) diff --git a/api/managementpb/backup/artifacts.pb.gw.go b/api/managementpb/backup/artifacts.pb.gw.go index ddcb1d1c7c..83bd7abae2 100644 --- a/api/managementpb/backup/artifacts.pb.gw.go +++ b/api/managementpb/backup/artifacts.pb.gw.go @@ -188,21 +188,21 @@ func RegisterArtifactsHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterArtifactsHandlerFromEndpoint is same as RegisterArtifactsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterArtifactsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/backup/artifacts_grpc.pb.go b/api/managementpb/backup/artifacts_grpc.pb.go index 7556103074..c113911459 100644 --- a/api/managementpb/backup/artifacts_grpc.pb.go +++ b/api/managementpb/backup/artifacts_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/backup/artifacts.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Artifacts_ListArtifacts_FullMethodName = "/backup.v1.Artifacts/ListArtifacts" @@ -28,6 +28,8 @@ const ( // ArtifactsClient is the client API for Artifacts service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Artifacts service provides public methods for managing backup artifacts. type ArtifactsClient interface { // ListArtifacts returns a list of all backup artifacts. ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) @@ -46,8 +48,9 @@ func NewArtifactsClient(cc grpc.ClientConnInterface) ArtifactsClient { } func (c *artifactsClient) ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListArtifactsResponse) - err := c.cc.Invoke(ctx, Artifacts_ListArtifacts_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Artifacts_ListArtifacts_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -55,8 +58,9 @@ func (c *artifactsClient) ListArtifacts(ctx context.Context, in *ListArtifactsRe } func (c *artifactsClient) DeleteArtifact(ctx context.Context, in *DeleteArtifactRequest, opts ...grpc.CallOption) (*DeleteArtifactResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteArtifactResponse) - err := c.cc.Invoke(ctx, Artifacts_DeleteArtifact_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Artifacts_DeleteArtifact_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -64,8 +68,9 @@ func (c *artifactsClient) DeleteArtifact(ctx context.Context, in *DeleteArtifact } func (c *artifactsClient) ListPitrTimeranges(ctx context.Context, in *ListPitrTimerangesRequest, opts ...grpc.CallOption) (*ListPitrTimerangesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPitrTimerangesResponse) - err := c.cc.Invoke(ctx, Artifacts_ListPitrTimeranges_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Artifacts_ListPitrTimeranges_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -75,6 +80,8 @@ func (c *artifactsClient) ListPitrTimeranges(ctx context.Context, in *ListPitrTi // ArtifactsServer is the server API for Artifacts service. // All implementations must embed UnimplementedArtifactsServer // for forward compatibility +// +// Artifacts service provides public methods for managing backup artifacts. type ArtifactsServer interface { // ListArtifacts returns a list of all backup artifacts. ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error) diff --git a/api/managementpb/backup/backups.pb.gw.go b/api/managementpb/backup/backups.pb.gw.go index edf589bbfd..be0b7897f9 100644 --- a/api/managementpb/backup/backups.pb.gw.go +++ b/api/managementpb/backup/backups.pb.gw.go @@ -428,21 +428,21 @@ func RegisterBackupsHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterBackupsHandlerFromEndpoint is same as RegisterBackupsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterBackupsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/backup/backups_grpc.pb.go b/api/managementpb/backup/backups_grpc.pb.go index 707dc31afe..53923c3429 100644 --- a/api/managementpb/backup/backups_grpc.pb.go +++ b/api/managementpb/backup/backups_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/backup/backups.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Backups_StartBackup_FullMethodName = "/backup.v1.Backups/StartBackup" @@ -33,6 +33,8 @@ const ( // BackupsClient is the client API for Backups service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Backups service handles backup operations to DB. type BackupsClient interface { // StartBackup request backup specified service to location. StartBackup(ctx context.Context, in *StartBackupRequest, opts ...grpc.CallOption) (*StartBackupResponse, error) @@ -61,8 +63,9 @@ func NewBackupsClient(cc grpc.ClientConnInterface) BackupsClient { } func (c *backupsClient) StartBackup(ctx context.Context, in *StartBackupRequest, opts ...grpc.CallOption) (*StartBackupResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartBackupResponse) - err := c.cc.Invoke(ctx, Backups_StartBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_StartBackup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -70,8 +73,9 @@ func (c *backupsClient) StartBackup(ctx context.Context, in *StartBackupRequest, } func (c *backupsClient) ListArtifactCompatibleServices(ctx context.Context, in *ListArtifactCompatibleServicesRequest, opts ...grpc.CallOption) (*ListArtifactCompatibleServicesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListArtifactCompatibleServicesResponse) - err := c.cc.Invoke(ctx, Backups_ListArtifactCompatibleServices_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_ListArtifactCompatibleServices_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -79,8 +83,9 @@ func (c *backupsClient) ListArtifactCompatibleServices(ctx context.Context, in * } func (c *backupsClient) RestoreBackup(ctx context.Context, in *RestoreBackupRequest, opts ...grpc.CallOption) (*RestoreBackupResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RestoreBackupResponse) - err := c.cc.Invoke(ctx, Backups_RestoreBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_RestoreBackup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -88,8 +93,9 @@ func (c *backupsClient) RestoreBackup(ctx context.Context, in *RestoreBackupRequ } func (c *backupsClient) ScheduleBackup(ctx context.Context, in *ScheduleBackupRequest, opts ...grpc.CallOption) (*ScheduleBackupResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ScheduleBackupResponse) - err := c.cc.Invoke(ctx, Backups_ScheduleBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_ScheduleBackup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -97,8 +103,9 @@ func (c *backupsClient) ScheduleBackup(ctx context.Context, in *ScheduleBackupRe } func (c *backupsClient) ListScheduledBackups(ctx context.Context, in *ListScheduledBackupsRequest, opts ...grpc.CallOption) (*ListScheduledBackupsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListScheduledBackupsResponse) - err := c.cc.Invoke(ctx, Backups_ListScheduledBackups_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_ListScheduledBackups_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -106,8 +113,9 @@ func (c *backupsClient) ListScheduledBackups(ctx context.Context, in *ListSchedu } func (c *backupsClient) ChangeScheduledBackup(ctx context.Context, in *ChangeScheduledBackupRequest, opts ...grpc.CallOption) (*ChangeScheduledBackupResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeScheduledBackupResponse) - err := c.cc.Invoke(ctx, Backups_ChangeScheduledBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_ChangeScheduledBackup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -115,8 +123,9 @@ func (c *backupsClient) ChangeScheduledBackup(ctx context.Context, in *ChangeSch } func (c *backupsClient) RemoveScheduledBackup(ctx context.Context, in *RemoveScheduledBackupRequest, opts ...grpc.CallOption) (*RemoveScheduledBackupResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveScheduledBackupResponse) - err := c.cc.Invoke(ctx, Backups_RemoveScheduledBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_RemoveScheduledBackup_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -124,8 +133,9 @@ func (c *backupsClient) RemoveScheduledBackup(ctx context.Context, in *RemoveSch } func (c *backupsClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetLogsResponse) - err := c.cc.Invoke(ctx, Backups_GetLogs_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Backups_GetLogs_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -135,6 +145,8 @@ func (c *backupsClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts .. // BackupsServer is the server API for Backups service. // All implementations must embed UnimplementedBackupsServer // for forward compatibility +// +// Backups service handles backup operations to DB. type BackupsServer interface { // StartBackup request backup specified service to location. StartBackup(context.Context, *StartBackupRequest) (*StartBackupResponse, error) diff --git a/api/managementpb/backup/locations.pb.gw.go b/api/managementpb/backup/locations.pb.gw.go index 0cdc541361..94232abd2e 100644 --- a/api/managementpb/backup/locations.pb.gw.go +++ b/api/managementpb/backup/locations.pb.gw.go @@ -284,21 +284,21 @@ func RegisterLocationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterLocationsHandlerFromEndpoint is same as RegisterLocationsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterLocationsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/backup/locations_grpc.pb.go b/api/managementpb/backup/locations_grpc.pb.go index 1378eacc9b..a1fafdf358 100644 --- a/api/managementpb/backup/locations_grpc.pb.go +++ b/api/managementpb/backup/locations_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/backup/locations.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Locations_ListLocations_FullMethodName = "/backup.v1.Locations/ListLocations" @@ -30,6 +30,8 @@ const ( // LocationsClient is the client API for Locations service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Locations service provides access to Backup Locations. type LocationsClient interface { // ListLocations returns a list of all backup locations. ListLocations(ctx context.Context, in *ListLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) @@ -52,8 +54,9 @@ func NewLocationsClient(cc grpc.ClientConnInterface) LocationsClient { } func (c *locationsClient) ListLocations(ctx context.Context, in *ListLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListLocationsResponse) - err := c.cc.Invoke(ctx, Locations_ListLocations_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Locations_ListLocations_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -61,8 +64,9 @@ func (c *locationsClient) ListLocations(ctx context.Context, in *ListLocationsRe } func (c *locationsClient) AddLocation(ctx context.Context, in *AddLocationRequest, opts ...grpc.CallOption) (*AddLocationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddLocationResponse) - err := c.cc.Invoke(ctx, Locations_AddLocation_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Locations_AddLocation_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -70,8 +74,9 @@ func (c *locationsClient) AddLocation(ctx context.Context, in *AddLocationReques } func (c *locationsClient) ChangeLocation(ctx context.Context, in *ChangeLocationRequest, opts ...grpc.CallOption) (*ChangeLocationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeLocationResponse) - err := c.cc.Invoke(ctx, Locations_ChangeLocation_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Locations_ChangeLocation_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -79,8 +84,9 @@ func (c *locationsClient) ChangeLocation(ctx context.Context, in *ChangeLocation } func (c *locationsClient) RemoveLocation(ctx context.Context, in *RemoveLocationRequest, opts ...grpc.CallOption) (*RemoveLocationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveLocationResponse) - err := c.cc.Invoke(ctx, Locations_RemoveLocation_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Locations_RemoveLocation_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -88,8 +94,9 @@ func (c *locationsClient) RemoveLocation(ctx context.Context, in *RemoveLocation } func (c *locationsClient) TestLocationConfig(ctx context.Context, in *TestLocationConfigRequest, opts ...grpc.CallOption) (*TestLocationConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TestLocationConfigResponse) - err := c.cc.Invoke(ctx, Locations_TestLocationConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Locations_TestLocationConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -99,6 +106,8 @@ func (c *locationsClient) TestLocationConfig(ctx context.Context, in *TestLocati // LocationsServer is the server API for Locations service. // All implementations must embed UnimplementedLocationsServer // for forward compatibility +// +// Locations service provides access to Backup Locations. type LocationsServer interface { // ListLocations returns a list of all backup locations. ListLocations(context.Context, *ListLocationsRequest) (*ListLocationsResponse, error) diff --git a/api/managementpb/backup/restores.pb.gw.go b/api/managementpb/backup/restores.pb.gw.go index 3fe9900838..4f13605987 100644 --- a/api/managementpb/backup/restores.pb.gw.go +++ b/api/managementpb/backup/restores.pb.gw.go @@ -92,21 +92,21 @@ func RegisterRestoreHistoryHandlerServer(ctx context.Context, mux *runtime.Serve // RegisterRestoreHistoryHandlerFromEndpoint is same as RegisterRestoreHistoryHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterRestoreHistoryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/backup/restores_grpc.pb.go b/api/managementpb/backup/restores_grpc.pb.go index 2dfd019fd7..7eaa752a44 100644 --- a/api/managementpb/backup/restores_grpc.pb.go +++ b/api/managementpb/backup/restores_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/backup/restores.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( RestoreHistory_ListRestoreHistory_FullMethodName = "/backup.v1.RestoreHistory/ListRestoreHistory" @@ -26,6 +26,8 @@ const ( // RestoreHistoryClient is the client API for RestoreHistory service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// RestoreHistory service provides public methods for managing backup restore history. type RestoreHistoryClient interface { // ListRestoreHistory returns a list of all backup restore history items. ListRestoreHistory(ctx context.Context, in *ListRestoreHistoryRequest, opts ...grpc.CallOption) (*ListRestoreHistoryResponse, error) @@ -40,8 +42,9 @@ func NewRestoreHistoryClient(cc grpc.ClientConnInterface) RestoreHistoryClient { } func (c *restoreHistoryClient) ListRestoreHistory(ctx context.Context, in *ListRestoreHistoryRequest, opts ...grpc.CallOption) (*ListRestoreHistoryResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListRestoreHistoryResponse) - err := c.cc.Invoke(ctx, RestoreHistory_ListRestoreHistory_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RestoreHistory_ListRestoreHistory_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *restoreHistoryClient) ListRestoreHistory(ctx context.Context, in *ListR // RestoreHistoryServer is the server API for RestoreHistory service. // All implementations must embed UnimplementedRestoreHistoryServer // for forward compatibility +// +// RestoreHistory service provides public methods for managing backup restore history. type RestoreHistoryServer interface { // ListRestoreHistory returns a list of all backup restore history items. ListRestoreHistory(context.Context, *ListRestoreHistoryRequest) (*ListRestoreHistoryResponse, error) diff --git a/api/managementpb/checks.pb.gw.go b/api/managementpb/checks.pb.gw.go index 8e92fcd1c4..f00fdc6f2b 100644 --- a/api/managementpb/checks.pb.gw.go +++ b/api/managementpb/checks.pb.gw.go @@ -428,21 +428,21 @@ func RegisterSecurityChecksHandlerServer(ctx context.Context, mux *runtime.Serve // RegisterSecurityChecksHandlerFromEndpoint is same as RegisterSecurityChecksHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterSecurityChecksHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/checks_grpc.pb.go b/api/managementpb/checks_grpc.pb.go index 0408efe0a2..706e457c46 100644 --- a/api/managementpb/checks_grpc.pb.go +++ b/api/managementpb/checks_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/checks.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( SecurityChecks_ListFailedServices_FullMethodName = "/management.SecurityChecks/ListFailedServices" @@ -33,6 +33,8 @@ const ( // SecurityChecksClient is the client API for SecurityChecks service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// SecurityChecks service provides public Management API methods for Security Checks Service. type SecurityChecksClient interface { // ListFailedServices returns a list of services with failed checks. ListFailedServices(ctx context.Context, in *ListFailedServicesRequest, opts ...grpc.CallOption) (*ListFailedServicesResponse, error) @@ -63,8 +65,9 @@ func NewSecurityChecksClient(cc grpc.ClientConnInterface) SecurityChecksClient { } func (c *securityChecksClient) ListFailedServices(ctx context.Context, in *ListFailedServicesRequest, opts ...grpc.CallOption) (*ListFailedServicesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListFailedServicesResponse) - err := c.cc.Invoke(ctx, SecurityChecks_ListFailedServices_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_ListFailedServices_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -72,8 +75,9 @@ func (c *securityChecksClient) ListFailedServices(ctx context.Context, in *ListF } func (c *securityChecksClient) GetFailedChecks(ctx context.Context, in *GetFailedChecksRequest, opts ...grpc.CallOption) (*GetFailedChecksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetFailedChecksResponse) - err := c.cc.Invoke(ctx, SecurityChecks_GetFailedChecks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_GetFailedChecks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -82,8 +86,9 @@ func (c *securityChecksClient) GetFailedChecks(ctx context.Context, in *GetFaile // Deprecated: Do not use. func (c *securityChecksClient) ToggleCheckAlert(ctx context.Context, in *ToggleCheckAlertRequest, opts ...grpc.CallOption) (*ToggleCheckAlertResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ToggleCheckAlertResponse) - err := c.cc.Invoke(ctx, SecurityChecks_ToggleCheckAlert_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_ToggleCheckAlert_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -92,8 +97,9 @@ func (c *securityChecksClient) ToggleCheckAlert(ctx context.Context, in *ToggleC // Deprecated: Do not use. func (c *securityChecksClient) GetSecurityCheckResults(ctx context.Context, in *GetSecurityCheckResultsRequest, opts ...grpc.CallOption) (*GetSecurityCheckResultsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetSecurityCheckResultsResponse) - err := c.cc.Invoke(ctx, SecurityChecks_GetSecurityCheckResults_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_GetSecurityCheckResults_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -101,8 +107,9 @@ func (c *securityChecksClient) GetSecurityCheckResults(ctx context.Context, in * } func (c *securityChecksClient) StartSecurityChecks(ctx context.Context, in *StartSecurityChecksRequest, opts ...grpc.CallOption) (*StartSecurityChecksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartSecurityChecksResponse) - err := c.cc.Invoke(ctx, SecurityChecks_StartSecurityChecks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_StartSecurityChecks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -110,8 +117,9 @@ func (c *securityChecksClient) StartSecurityChecks(ctx context.Context, in *Star } func (c *securityChecksClient) ListSecurityChecks(ctx context.Context, in *ListSecurityChecksRequest, opts ...grpc.CallOption) (*ListSecurityChecksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListSecurityChecksResponse) - err := c.cc.Invoke(ctx, SecurityChecks_ListSecurityChecks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_ListSecurityChecks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -119,8 +127,9 @@ func (c *securityChecksClient) ListSecurityChecks(ctx context.Context, in *ListS } func (c *securityChecksClient) ListAdvisors(ctx context.Context, in *ListAdvisorsRequest, opts ...grpc.CallOption) (*ListAdvisorsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAdvisorsResponse) - err := c.cc.Invoke(ctx, SecurityChecks_ListAdvisors_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_ListAdvisors_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -128,8 +137,9 @@ func (c *securityChecksClient) ListAdvisors(ctx context.Context, in *ListAdvisor } func (c *securityChecksClient) ChangeSecurityChecks(ctx context.Context, in *ChangeSecurityChecksRequest, opts ...grpc.CallOption) (*ChangeSecurityChecksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeSecurityChecksResponse) - err := c.cc.Invoke(ctx, SecurityChecks_ChangeSecurityChecks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, SecurityChecks_ChangeSecurityChecks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,6 +149,8 @@ func (c *securityChecksClient) ChangeSecurityChecks(ctx context.Context, in *Cha // SecurityChecksServer is the server API for SecurityChecks service. // All implementations must embed UnimplementedSecurityChecksServer // for forward compatibility +// +// SecurityChecks service provides public Management API methods for Security Checks Service. type SecurityChecksServer interface { // ListFailedServices returns a list of services with failed checks. ListFailedServices(context.Context, *ListFailedServicesRequest) (*ListFailedServicesResponse, error) diff --git a/api/managementpb/dbaas/components.pb.gw.go b/api/managementpb/dbaas/components.pb.gw.go index e5cd9c6510..9f1d1c5ea8 100644 --- a/api/managementpb/dbaas/components.pb.gw.go +++ b/api/managementpb/dbaas/components.pb.gw.go @@ -332,21 +332,21 @@ func RegisterComponentsHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterComponentsHandlerFromEndpoint is same as RegisterComponentsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterComponentsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/components_grpc.pb.go b/api/managementpb/dbaas/components_grpc.pb.go index 750341cfd8..a14f8dcc90 100644 --- a/api/managementpb/dbaas/components_grpc.pb.go +++ b/api/managementpb/dbaas/components_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/components.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Components_GetPSMDBComponents_FullMethodName = "/dbaas.v1beta1.Components/GetPSMDBComponents" @@ -31,6 +31,8 @@ const ( // ComponentsClient is the client API for Components service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Components service provides public methods for managing components. type ComponentsClient interface { // GetPSMDBComponents returns list of available components for PSMDB Clusters. GetPSMDBComponents(ctx context.Context, in *GetPSMDBComponentsRequest, opts ...grpc.CallOption) (*GetPSMDBComponentsResponse, error) @@ -55,8 +57,9 @@ func NewComponentsClient(cc grpc.ClientConnInterface) ComponentsClient { } func (c *componentsClient) GetPSMDBComponents(ctx context.Context, in *GetPSMDBComponentsRequest, opts ...grpc.CallOption) (*GetPSMDBComponentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPSMDBComponentsResponse) - err := c.cc.Invoke(ctx, Components_GetPSMDBComponents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_GetPSMDBComponents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -64,8 +67,9 @@ func (c *componentsClient) GetPSMDBComponents(ctx context.Context, in *GetPSMDBC } func (c *componentsClient) GetPXCComponents(ctx context.Context, in *GetPXCComponentsRequest, opts ...grpc.CallOption) (*GetPXCComponentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPXCComponentsResponse) - err := c.cc.Invoke(ctx, Components_GetPXCComponents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_GetPXCComponents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -73,8 +77,9 @@ func (c *componentsClient) GetPXCComponents(ctx context.Context, in *GetPXCCompo } func (c *componentsClient) ChangePSMDBComponents(ctx context.Context, in *ChangePSMDBComponentsRequest, opts ...grpc.CallOption) (*ChangePSMDBComponentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangePSMDBComponentsResponse) - err := c.cc.Invoke(ctx, Components_ChangePSMDBComponents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_ChangePSMDBComponents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -82,8 +87,9 @@ func (c *componentsClient) ChangePSMDBComponents(ctx context.Context, in *Change } func (c *componentsClient) ChangePXCComponents(ctx context.Context, in *ChangePXCComponentsRequest, opts ...grpc.CallOption) (*ChangePXCComponentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangePXCComponentsResponse) - err := c.cc.Invoke(ctx, Components_ChangePXCComponents_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_ChangePXCComponents_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -91,8 +97,9 @@ func (c *componentsClient) ChangePXCComponents(ctx context.Context, in *ChangePX } func (c *componentsClient) InstallOperator(ctx context.Context, in *InstallOperatorRequest, opts ...grpc.CallOption) (*InstallOperatorResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(InstallOperatorResponse) - err := c.cc.Invoke(ctx, Components_InstallOperator_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_InstallOperator_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -100,8 +107,9 @@ func (c *componentsClient) InstallOperator(ctx context.Context, in *InstallOpera } func (c *componentsClient) CheckForOperatorUpdate(ctx context.Context, in *CheckForOperatorUpdateRequest, opts ...grpc.CallOption) (*CheckForOperatorUpdateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CheckForOperatorUpdateResponse) - err := c.cc.Invoke(ctx, Components_CheckForOperatorUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Components_CheckForOperatorUpdate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -111,6 +119,8 @@ func (c *componentsClient) CheckForOperatorUpdate(ctx context.Context, in *Check // ComponentsServer is the server API for Components service. // All implementations must embed UnimplementedComponentsServer // for forward compatibility +// +// Components service provides public methods for managing components. type ComponentsServer interface { // GetPSMDBComponents returns list of available components for PSMDB Clusters. GetPSMDBComponents(context.Context, *GetPSMDBComponentsRequest) (*GetPSMDBComponentsResponse, error) diff --git a/api/managementpb/dbaas/db_clusters.pb.gw.go b/api/managementpb/dbaas/db_clusters.pb.gw.go index b488e901b9..80f0aff6ed 100644 --- a/api/managementpb/dbaas/db_clusters.pb.gw.go +++ b/api/managementpb/dbaas/db_clusters.pb.gw.go @@ -332,21 +332,21 @@ func RegisterDBClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterDBClustersHandlerFromEndpoint is same as RegisterDBClustersHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterDBClustersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/db_clusters_grpc.pb.go b/api/managementpb/dbaas/db_clusters_grpc.pb.go index 20e41e1630..b7eac3f22e 100644 --- a/api/managementpb/dbaas/db_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/db_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/db_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( DBClusters_ListDBClusters_FullMethodName = "/dbaas.v1beta1.DBClusters/ListDBClusters" @@ -31,6 +31,8 @@ const ( // DBClustersClient is the client API for DBClusters service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// DBClusters service provides public methods for managing db clusters. type DBClustersClient interface { // ListDBClusters returns a list of DB clusters. ListDBClusters(ctx context.Context, in *ListDBClustersRequest, opts ...grpc.CallOption) (*ListDBClustersResponse, error) @@ -55,8 +57,9 @@ func NewDBClustersClient(cc grpc.ClientConnInterface) DBClustersClient { } func (c *dBClustersClient) ListDBClusters(ctx context.Context, in *ListDBClustersRequest, opts ...grpc.CallOption) (*ListDBClustersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListDBClustersResponse) - err := c.cc.Invoke(ctx, DBClusters_ListDBClusters_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_ListDBClusters_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -64,8 +67,9 @@ func (c *dBClustersClient) ListDBClusters(ctx context.Context, in *ListDBCluster } func (c *dBClustersClient) GetDBCluster(ctx context.Context, in *GetDBClusterRequest, opts ...grpc.CallOption) (*GetDBClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetDBClusterResponse) - err := c.cc.Invoke(ctx, DBClusters_GetDBCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_GetDBCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -73,8 +77,9 @@ func (c *dBClustersClient) GetDBCluster(ctx context.Context, in *GetDBClusterReq } func (c *dBClustersClient) RestartDBCluster(ctx context.Context, in *RestartDBClusterRequest, opts ...grpc.CallOption) (*RestartDBClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RestartDBClusterResponse) - err := c.cc.Invoke(ctx, DBClusters_RestartDBCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_RestartDBCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -82,8 +87,9 @@ func (c *dBClustersClient) RestartDBCluster(ctx context.Context, in *RestartDBCl } func (c *dBClustersClient) DeleteDBCluster(ctx context.Context, in *DeleteDBClusterRequest, opts ...grpc.CallOption) (*DeleteDBClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteDBClusterResponse) - err := c.cc.Invoke(ctx, DBClusters_DeleteDBCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_DeleteDBCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -91,8 +97,9 @@ func (c *dBClustersClient) DeleteDBCluster(ctx context.Context, in *DeleteDBClus } func (c *dBClustersClient) ListS3Backups(ctx context.Context, in *ListS3BackupsRequest, opts ...grpc.CallOption) (*ListS3BackupsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListS3BackupsResponse) - err := c.cc.Invoke(ctx, DBClusters_ListS3Backups_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_ListS3Backups_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -100,8 +107,9 @@ func (c *dBClustersClient) ListS3Backups(ctx context.Context, in *ListS3BackupsR } func (c *dBClustersClient) ListSecrets(ctx context.Context, in *ListSecretsRequest, opts ...grpc.CallOption) (*ListSecretsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListSecretsResponse) - err := c.cc.Invoke(ctx, DBClusters_ListSecrets_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, DBClusters_ListSecrets_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -111,6 +119,8 @@ func (c *dBClustersClient) ListSecrets(ctx context.Context, in *ListSecretsReque // DBClustersServer is the server API for DBClusters service. // All implementations must embed UnimplementedDBClustersServer // for forward compatibility +// +// DBClusters service provides public methods for managing db clusters. type DBClustersServer interface { // ListDBClusters returns a list of DB clusters. ListDBClusters(context.Context, *ListDBClustersRequest) (*ListDBClustersResponse, error) diff --git a/api/managementpb/dbaas/kubernetes.pb.gw.go b/api/managementpb/dbaas/kubernetes.pb.gw.go index 299d908df5..82aeec6d29 100644 --- a/api/managementpb/dbaas/kubernetes.pb.gw.go +++ b/api/managementpb/dbaas/kubernetes.pb.gw.go @@ -332,21 +332,21 @@ func RegisterKubernetesHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterKubernetesHandlerFromEndpoint is same as RegisterKubernetesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterKubernetesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/kubernetes_grpc.pb.go b/api/managementpb/dbaas/kubernetes_grpc.pb.go index a622af13ca..7bc8fff6a3 100644 --- a/api/managementpb/dbaas/kubernetes_grpc.pb.go +++ b/api/managementpb/dbaas/kubernetes_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/kubernetes.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Kubernetes_ListKubernetesClusters_FullMethodName = "/dbaas.v1beta1.Kubernetes/ListKubernetesClusters" @@ -31,6 +31,8 @@ const ( // KubernetesClient is the client API for Kubernetes service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Kubernetes service provides public methods for managing Kubernetes clusters. type KubernetesClient interface { // ListKubernetesClusters returns a list of all registered Kubernetes clusters. ListKubernetesClusters(ctx context.Context, in *ListKubernetesClustersRequest, opts ...grpc.CallOption) (*ListKubernetesClustersResponse, error) @@ -59,8 +61,9 @@ func NewKubernetesClient(cc grpc.ClientConnInterface) KubernetesClient { } func (c *kubernetesClient) ListKubernetesClusters(ctx context.Context, in *ListKubernetesClustersRequest, opts ...grpc.CallOption) (*ListKubernetesClustersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListKubernetesClustersResponse) - err := c.cc.Invoke(ctx, Kubernetes_ListKubernetesClusters_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_ListKubernetesClusters_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -68,8 +71,9 @@ func (c *kubernetesClient) ListKubernetesClusters(ctx context.Context, in *ListK } func (c *kubernetesClient) RegisterKubernetesCluster(ctx context.Context, in *RegisterKubernetesClusterRequest, opts ...grpc.CallOption) (*RegisterKubernetesClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RegisterKubernetesClusterResponse) - err := c.cc.Invoke(ctx, Kubernetes_RegisterKubernetesCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_RegisterKubernetesCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -77,8 +81,9 @@ func (c *kubernetesClient) RegisterKubernetesCluster(ctx context.Context, in *Re } func (c *kubernetesClient) UnregisterKubernetesCluster(ctx context.Context, in *UnregisterKubernetesClusterRequest, opts ...grpc.CallOption) (*UnregisterKubernetesClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UnregisterKubernetesClusterResponse) - err := c.cc.Invoke(ctx, Kubernetes_UnregisterKubernetesCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_UnregisterKubernetesCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -86,8 +91,9 @@ func (c *kubernetesClient) UnregisterKubernetesCluster(ctx context.Context, in * } func (c *kubernetesClient) GetKubernetesCluster(ctx context.Context, in *GetKubernetesClusterRequest, opts ...grpc.CallOption) (*GetKubernetesClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetKubernetesClusterResponse) - err := c.cc.Invoke(ctx, Kubernetes_GetKubernetesCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_GetKubernetesCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -95,8 +101,9 @@ func (c *kubernetesClient) GetKubernetesCluster(ctx context.Context, in *GetKube } func (c *kubernetesClient) GetResources(ctx context.Context, in *GetResourcesRequest, opts ...grpc.CallOption) (*GetResourcesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetResourcesResponse) - err := c.cc.Invoke(ctx, Kubernetes_GetResources_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_GetResources_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -104,8 +111,9 @@ func (c *kubernetesClient) GetResources(ctx context.Context, in *GetResourcesReq } func (c *kubernetesClient) ListStorageClasses(ctx context.Context, in *ListStorageClassesRequest, opts ...grpc.CallOption) (*ListStorageClassesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListStorageClassesResponse) - err := c.cc.Invoke(ctx, Kubernetes_ListStorageClasses_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Kubernetes_ListStorageClasses_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -115,6 +123,8 @@ func (c *kubernetesClient) ListStorageClasses(ctx context.Context, in *ListStora // KubernetesServer is the server API for Kubernetes service. // All implementations must embed UnimplementedKubernetesServer // for forward compatibility +// +// Kubernetes service provides public methods for managing Kubernetes clusters. type KubernetesServer interface { // ListKubernetesClusters returns a list of all registered Kubernetes clusters. ListKubernetesClusters(context.Context, *ListKubernetesClustersRequest) (*ListKubernetesClustersResponse, error) diff --git a/api/managementpb/dbaas/logs.pb.gw.go b/api/managementpb/dbaas/logs.pb.gw.go index 7336cad6d8..657231edfe 100644 --- a/api/managementpb/dbaas/logs.pb.gw.go +++ b/api/managementpb/dbaas/logs.pb.gw.go @@ -92,21 +92,21 @@ func RegisterLogsAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterLogsAPIHandlerFromEndpoint is same as RegisterLogsAPIHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterLogsAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/logs_grpc.pb.go b/api/managementpb/dbaas/logs_grpc.pb.go index 217d7a0dfb..e29bf50cc5 100644 --- a/api/managementpb/dbaas/logs_grpc.pb.go +++ b/api/managementpb/dbaas/logs_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/logs.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( LogsAPI_GetLogs_FullMethodName = "/dbaas.v1beta1.LogsAPI/GetLogs" @@ -26,6 +26,8 @@ const ( // LogsAPIClient is the client API for LogsAPI service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// LogsAPI provides APIs for reading logs. type LogsAPIClient interface { // GetLogs gets all logs from db cluster. GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) @@ -40,8 +42,9 @@ func NewLogsAPIClient(cc grpc.ClientConnInterface) LogsAPIClient { } func (c *logsAPIClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetLogsResponse) - err := c.cc.Invoke(ctx, LogsAPI_GetLogs_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, LogsAPI_GetLogs_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *logsAPIClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts .. // LogsAPIServer is the server API for LogsAPI service. // All implementations must embed UnimplementedLogsAPIServer // for forward compatibility +// +// LogsAPI provides APIs for reading logs. type LogsAPIServer interface { // GetLogs gets all logs from db cluster. GetLogs(context.Context, *GetLogsRequest) (*GetLogsResponse, error) diff --git a/api/managementpb/dbaas/psmdb_clusters.pb.gw.go b/api/managementpb/dbaas/psmdb_clusters.pb.gw.go index 2c554f75ec..42f4cd5268 100644 --- a/api/managementpb/dbaas/psmdb_clusters.pb.gw.go +++ b/api/managementpb/dbaas/psmdb_clusters.pb.gw.go @@ -236,21 +236,21 @@ func RegisterPSMDBClustersHandlerServer(ctx context.Context, mux *runtime.ServeM // RegisterPSMDBClustersHandlerFromEndpoint is same as RegisterPSMDBClustersHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterPSMDBClustersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go b/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go index b30b23926f..a32022dd34 100644 --- a/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/psmdb_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( PSMDBClusters_GetPSMDBClusterCredentials_FullMethodName = "/dbaas.v1beta1.PSMDBClusters/GetPSMDBClusterCredentials" @@ -29,6 +29,8 @@ const ( // PSMDBClustersClient is the client API for PSMDBClusters service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// PSMDBClusters service provides public methods for managing PSMDB clusters. type PSMDBClustersClient interface { // GetPSMDBClusterCredentials returns a PSMDB cluster credentials by cluster name. GetPSMDBClusterCredentials(ctx context.Context, in *GetPSMDBClusterCredentialsRequest, opts ...grpc.CallOption) (*GetPSMDBClusterCredentialsResponse, error) @@ -49,8 +51,9 @@ func NewPSMDBClustersClient(cc grpc.ClientConnInterface) PSMDBClustersClient { } func (c *pSMDBClustersClient) GetPSMDBClusterCredentials(ctx context.Context, in *GetPSMDBClusterCredentialsRequest, opts ...grpc.CallOption) (*GetPSMDBClusterCredentialsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPSMDBClusterCredentialsResponse) - err := c.cc.Invoke(ctx, PSMDBClusters_GetPSMDBClusterCredentials_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PSMDBClusters_GetPSMDBClusterCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -58,8 +61,9 @@ func (c *pSMDBClustersClient) GetPSMDBClusterCredentials(ctx context.Context, in } func (c *pSMDBClustersClient) CreatePSMDBCluster(ctx context.Context, in *CreatePSMDBClusterRequest, opts ...grpc.CallOption) (*CreatePSMDBClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreatePSMDBClusterResponse) - err := c.cc.Invoke(ctx, PSMDBClusters_CreatePSMDBCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PSMDBClusters_CreatePSMDBCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,8 +71,9 @@ func (c *pSMDBClustersClient) CreatePSMDBCluster(ctx context.Context, in *Create } func (c *pSMDBClustersClient) UpdatePSMDBCluster(ctx context.Context, in *UpdatePSMDBClusterRequest, opts ...grpc.CallOption) (*UpdatePSMDBClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdatePSMDBClusterResponse) - err := c.cc.Invoke(ctx, PSMDBClusters_UpdatePSMDBCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PSMDBClusters_UpdatePSMDBCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -76,8 +81,9 @@ func (c *pSMDBClustersClient) UpdatePSMDBCluster(ctx context.Context, in *Update } func (c *pSMDBClustersClient) GetPSMDBClusterResources(ctx context.Context, in *GetPSMDBClusterResourcesRequest, opts ...grpc.CallOption) (*GetPSMDBClusterResourcesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPSMDBClusterResourcesResponse) - err := c.cc.Invoke(ctx, PSMDBClusters_GetPSMDBClusterResources_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PSMDBClusters_GetPSMDBClusterResources_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -87,6 +93,8 @@ func (c *pSMDBClustersClient) GetPSMDBClusterResources(ctx context.Context, in * // PSMDBClustersServer is the server API for PSMDBClusters service. // All implementations must embed UnimplementedPSMDBClustersServer // for forward compatibility +// +// PSMDBClusters service provides public methods for managing PSMDB clusters. type PSMDBClustersServer interface { // GetPSMDBClusterCredentials returns a PSMDB cluster credentials by cluster name. GetPSMDBClusterCredentials(context.Context, *GetPSMDBClusterCredentialsRequest) (*GetPSMDBClusterCredentialsResponse, error) diff --git a/api/managementpb/dbaas/pxc_clusters.pb.gw.go b/api/managementpb/dbaas/pxc_clusters.pb.gw.go index a6335d598a..ab14b412cf 100644 --- a/api/managementpb/dbaas/pxc_clusters.pb.gw.go +++ b/api/managementpb/dbaas/pxc_clusters.pb.gw.go @@ -236,21 +236,21 @@ func RegisterPXCClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux // RegisterPXCClustersHandlerFromEndpoint is same as RegisterPXCClustersHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterPXCClustersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/pxc_clusters_grpc.pb.go b/api/managementpb/dbaas/pxc_clusters_grpc.pb.go index 3ebf99803e..46f599daf4 100644 --- a/api/managementpb/dbaas/pxc_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/pxc_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/pxc_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( PXCClusters_GetPXCClusterCredentials_FullMethodName = "/dbaas.v1beta1.PXCClusters/GetPXCClusterCredentials" @@ -29,6 +29,8 @@ const ( // PXCClustersClient is the client API for PXCClusters service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// PXCClusters service provides public methods for managing PXC clusters. type PXCClustersClient interface { // GetPXCClusterCredentials returns a PXC cluster credentials by cluster name. GetPXCClusterCredentials(ctx context.Context, in *GetPXCClusterCredentialsRequest, opts ...grpc.CallOption) (*GetPXCClusterCredentialsResponse, error) @@ -49,8 +51,9 @@ func NewPXCClustersClient(cc grpc.ClientConnInterface) PXCClustersClient { } func (c *pXCClustersClient) GetPXCClusterCredentials(ctx context.Context, in *GetPXCClusterCredentialsRequest, opts ...grpc.CallOption) (*GetPXCClusterCredentialsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPXCClusterCredentialsResponse) - err := c.cc.Invoke(ctx, PXCClusters_GetPXCClusterCredentials_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PXCClusters_GetPXCClusterCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -58,8 +61,9 @@ func (c *pXCClustersClient) GetPXCClusterCredentials(ctx context.Context, in *Ge } func (c *pXCClustersClient) CreatePXCCluster(ctx context.Context, in *CreatePXCClusterRequest, opts ...grpc.CallOption) (*CreatePXCClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreatePXCClusterResponse) - err := c.cc.Invoke(ctx, PXCClusters_CreatePXCCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PXCClusters_CreatePXCCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,8 +71,9 @@ func (c *pXCClustersClient) CreatePXCCluster(ctx context.Context, in *CreatePXCC } func (c *pXCClustersClient) UpdatePXCCluster(ctx context.Context, in *UpdatePXCClusterRequest, opts ...grpc.CallOption) (*UpdatePXCClusterResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdatePXCClusterResponse) - err := c.cc.Invoke(ctx, PXCClusters_UpdatePXCCluster_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PXCClusters_UpdatePXCCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -76,8 +81,9 @@ func (c *pXCClustersClient) UpdatePXCCluster(ctx context.Context, in *UpdatePXCC } func (c *pXCClustersClient) GetPXCClusterResources(ctx context.Context, in *GetPXCClusterResourcesRequest, opts ...grpc.CallOption) (*GetPXCClusterResourcesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPXCClusterResourcesResponse) - err := c.cc.Invoke(ctx, PXCClusters_GetPXCClusterResources_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PXCClusters_GetPXCClusterResources_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -87,6 +93,8 @@ func (c *pXCClustersClient) GetPXCClusterResources(ctx context.Context, in *GetP // PXCClustersServer is the server API for PXCClusters service. // All implementations must embed UnimplementedPXCClustersServer // for forward compatibility +// +// PXCClusters service provides public methods for managing PXC clusters. type PXCClustersServer interface { // GetPXCClusterCredentials returns a PXC cluster credentials by cluster name. GetPXCClusterCredentials(context.Context, *GetPXCClusterCredentialsRequest) (*GetPXCClusterCredentialsResponse, error) diff --git a/api/managementpb/dbaas/templates.pb.gw.go b/api/managementpb/dbaas/templates.pb.gw.go index 1550b7da84..a5d36e622d 100644 --- a/api/managementpb/dbaas/templates.pb.gw.go +++ b/api/managementpb/dbaas/templates.pb.gw.go @@ -92,21 +92,21 @@ func RegisterTemplatesHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterTemplatesHandlerFromEndpoint is same as RegisterTemplatesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterTemplatesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dbaas/templates_grpc.pb.go b/api/managementpb/dbaas/templates_grpc.pb.go index 08277efe43..d4c68fb203 100644 --- a/api/managementpb/dbaas/templates_grpc.pb.go +++ b/api/managementpb/dbaas/templates_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dbaas/templates.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Templates_ListTemplates_FullMethodName = "/dbaas.v1beta1.Templates/ListTemplates" @@ -26,6 +26,8 @@ const ( // TemplatesClient is the client API for Templates service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Templates service provides public methods for managing templates. type TemplatesClient interface { // ListTemplates returns a list of all registered templates. ListTemplates(ctx context.Context, in *ListTemplatesRequest, opts ...grpc.CallOption) (*ListTemplatesResponse, error) @@ -40,8 +42,9 @@ func NewTemplatesClient(cc grpc.ClientConnInterface) TemplatesClient { } func (c *templatesClient) ListTemplates(ctx context.Context, in *ListTemplatesRequest, opts ...grpc.CallOption) (*ListTemplatesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListTemplatesResponse) - err := c.cc.Invoke(ctx, Templates_ListTemplates_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Templates_ListTemplates_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *templatesClient) ListTemplates(ctx context.Context, in *ListTemplatesRe // TemplatesServer is the server API for Templates service. // All implementations must embed UnimplementedTemplatesServer // for forward compatibility +// +// Templates service provides public methods for managing templates. type TemplatesServer interface { // ListTemplates returns a list of all registered templates. ListTemplates(context.Context, *ListTemplatesRequest) (*ListTemplatesResponse, error) diff --git a/api/managementpb/dump/dump.pb.gw.go b/api/managementpb/dump/dump.pb.gw.go index 796eff39b0..fee3d14358 100644 --- a/api/managementpb/dump/dump.pb.gw.go +++ b/api/managementpb/dump/dump.pb.gw.go @@ -284,21 +284,21 @@ func RegisterDumpsHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterDumpsHandlerFromEndpoint is same as RegisterDumpsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterDumpsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/dump/dump.proto b/api/managementpb/dump/dump.proto index 4328af81fc..caaa61562d 100644 --- a/api/managementpb/dump/dump.proto +++ b/api/managementpb/dump/dump.proto @@ -45,7 +45,7 @@ message ListDumpsResponse { message DeleteDumpRequest { repeated string dump_ids = 1 [(validate.rules).repeated = { - min_items: 1, + min_items: 1 unique: true }]; } @@ -78,7 +78,7 @@ message SFTPParameters { message UploadDumpRequest { repeated string dump_ids = 1 [(validate.rules).repeated = { - min_items: 1, + min_items: 1 unique: true }]; diff --git a/api/managementpb/dump/dump_grpc.pb.go b/api/managementpb/dump/dump_grpc.pb.go index 5b60dc27d6..90d808c78b 100644 --- a/api/managementpb/dump/dump_grpc.pb.go +++ b/api/managementpb/dump/dump_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/dump/dump.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Dumps_StartDump_FullMethodName = "/dump.v1beta1.Dumps/StartDump" @@ -52,8 +52,9 @@ func NewDumpsClient(cc grpc.ClientConnInterface) DumpsClient { } func (c *dumpsClient) StartDump(ctx context.Context, in *StartDumpRequest, opts ...grpc.CallOption) (*StartDumpResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartDumpResponse) - err := c.cc.Invoke(ctx, Dumps_StartDump_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Dumps_StartDump_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -61,8 +62,9 @@ func (c *dumpsClient) StartDump(ctx context.Context, in *StartDumpRequest, opts } func (c *dumpsClient) ListDumps(ctx context.Context, in *ListDumpsRequest, opts ...grpc.CallOption) (*ListDumpsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListDumpsResponse) - err := c.cc.Invoke(ctx, Dumps_ListDumps_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Dumps_ListDumps_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -70,8 +72,9 @@ func (c *dumpsClient) ListDumps(ctx context.Context, in *ListDumpsRequest, opts } func (c *dumpsClient) DeleteDump(ctx context.Context, in *DeleteDumpRequest, opts ...grpc.CallOption) (*DeleteDumpResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteDumpResponse) - err := c.cc.Invoke(ctx, Dumps_DeleteDump_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Dumps_DeleteDump_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -79,8 +82,9 @@ func (c *dumpsClient) DeleteDump(ctx context.Context, in *DeleteDumpRequest, opt } func (c *dumpsClient) GetDumpLogs(ctx context.Context, in *GetLogsRequest, opts ...grpc.CallOption) (*GetLogsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetLogsResponse) - err := c.cc.Invoke(ctx, Dumps_GetDumpLogs_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Dumps_GetDumpLogs_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -88,8 +92,9 @@ func (c *dumpsClient) GetDumpLogs(ctx context.Context, in *GetLogsRequest, opts } func (c *dumpsClient) UploadDump(ctx context.Context, in *UploadDumpRequest, opts ...grpc.CallOption) (*UploadDumpResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UploadDumpResponse) - err := c.cc.Invoke(ctx, Dumps_UploadDump_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Dumps_UploadDump_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } diff --git a/api/managementpb/external.pb.gw.go b/api/managementpb/external.pb.gw.go index d225a6a8fb..2a30385c0f 100644 --- a/api/managementpb/external.pb.gw.go +++ b/api/managementpb/external.pb.gw.go @@ -92,21 +92,21 @@ func RegisterExternalHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterExternalHandlerFromEndpoint is same as RegisterExternalHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterExternalHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/external.proto b/api/managementpb/external.proto index 8b09379cf8..963eb74777 100644 --- a/api/managementpb/external.proto +++ b/api/managementpb/external.proto @@ -41,7 +41,7 @@ message AddExternalRequest { string metrics_path = 6; // Listen port for scraping metrics. uint32 listen_port = 7 [(validate.rules).uint32 = { - gt: 0, + gt: 0 lt: 65536 }]; // Node identifier on which an external service is been running. diff --git a/api/managementpb/external_grpc.pb.go b/api/managementpb/external_grpc.pb.go index 6d28285b1f..f34f26d1a4 100644 --- a/api/managementpb/external_grpc.pb.go +++ b/api/managementpb/external_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/external.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( External_AddExternal_FullMethodName = "/management.External/AddExternal" @@ -26,6 +26,8 @@ const ( // ExternalClient is the client API for External service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// External service provides public Management API methods for External Service. type ExternalClient interface { // AddExternal adds external service and adds external exporter. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -42,8 +44,9 @@ func NewExternalClient(cc grpc.ClientConnInterface) ExternalClient { } func (c *externalClient) AddExternal(ctx context.Context, in *AddExternalRequest, opts ...grpc.CallOption) (*AddExternalResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddExternalResponse) - err := c.cc.Invoke(ctx, External_AddExternal_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, External_AddExternal_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -53,6 +56,8 @@ func (c *externalClient) AddExternal(ctx context.Context, in *AddExternalRequest // ExternalServer is the server API for External service. // All implementations must embed UnimplementedExternalServer // for forward compatibility +// +// External service provides public Management API methods for External Service. type ExternalServer interface { // AddExternal adds external service and adds external exporter. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/haproxy.pb.gw.go b/api/managementpb/haproxy.pb.gw.go index 0b93307efa..d8f7abf6de 100644 --- a/api/managementpb/haproxy.pb.gw.go +++ b/api/managementpb/haproxy.pb.gw.go @@ -92,21 +92,21 @@ func RegisterHAProxyHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterHAProxyHandlerFromEndpoint is same as RegisterHAProxyHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterHAProxyHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/haproxy.proto b/api/managementpb/haproxy.proto index 36469bc0ec..3babad749c 100644 --- a/api/managementpb/haproxy.proto +++ b/api/managementpb/haproxy.proto @@ -40,7 +40,7 @@ message AddHAProxyRequest { string metrics_path = 6; // Listen port for scraping metrics. uint32 listen_port = 7 [(validate.rules).uint32 = { - gt: 0, + gt: 0 lt: 65536 }]; // Environment name. diff --git a/api/managementpb/haproxy_grpc.pb.go b/api/managementpb/haproxy_grpc.pb.go index d9deef0550..8523d74b26 100644 --- a/api/managementpb/haproxy_grpc.pb.go +++ b/api/managementpb/haproxy_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/haproxy.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( HAProxy_AddHAProxy_FullMethodName = "/management.HAProxy/AddHAProxy" @@ -26,6 +26,8 @@ const ( // HAProxyClient is the client API for HAProxy service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// HAProxy service provides public Management API methods for HAProxy Service. type HAProxyClient interface { // AddHAProxy adds HAProxy service and adds external exporter. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -42,8 +44,9 @@ func NewHAProxyClient(cc grpc.ClientConnInterface) HAProxyClient { } func (c *hAProxyClient) AddHAProxy(ctx context.Context, in *AddHAProxyRequest, opts ...grpc.CallOption) (*AddHAProxyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddHAProxyResponse) - err := c.cc.Invoke(ctx, HAProxy_AddHAProxy_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, HAProxy_AddHAProxy_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -53,6 +56,8 @@ func (c *hAProxyClient) AddHAProxy(ctx context.Context, in *AddHAProxyRequest, o // HAProxyServer is the server API for HAProxy service. // All implementations must embed UnimplementedHAProxyServer // for forward compatibility +// +// HAProxy service provides public Management API methods for HAProxy Service. type HAProxyServer interface { // AddHAProxy adds HAProxy service and adds external exporter. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/ia/alerts.pb.gw.go b/api/managementpb/ia/alerts.pb.gw.go index 922f815ace..591284f730 100644 --- a/api/managementpb/ia/alerts.pb.gw.go +++ b/api/managementpb/ia/alerts.pb.gw.go @@ -140,21 +140,21 @@ func RegisterAlertsHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser // RegisterAlertsHandlerFromEndpoint is same as RegisterAlertsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterAlertsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/ia/alerts_grpc.pb.go b/api/managementpb/ia/alerts_grpc.pb.go index 33c9513f7a..0c4b7eb8f2 100644 --- a/api/managementpb/ia/alerts_grpc.pb.go +++ b/api/managementpb/ia/alerts_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/ia/alerts.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Alerts_ListAlerts_FullMethodName = "/ia.v1beta1.Alerts/ListAlerts" @@ -27,6 +27,8 @@ const ( // AlertsClient is the client API for Alerts service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Alerts service provides public methods for managing Alerting Alerts. type AlertsClient interface { // Deprecated: Do not use. // ListAlerts returns a list of all Alerts. @@ -46,8 +48,9 @@ func NewAlertsClient(cc grpc.ClientConnInterface) AlertsClient { // Deprecated: Do not use. func (c *alertsClient) ListAlerts(ctx context.Context, in *ListAlertsRequest, opts ...grpc.CallOption) (*ListAlertsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAlertsResponse) - err := c.cc.Invoke(ctx, Alerts_ListAlerts_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerts_ListAlerts_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -56,8 +59,9 @@ func (c *alertsClient) ListAlerts(ctx context.Context, in *ListAlertsRequest, op // Deprecated: Do not use. func (c *alertsClient) ToggleAlerts(ctx context.Context, in *ToggleAlertsRequest, opts ...grpc.CallOption) (*ToggleAlertsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ToggleAlertsResponse) - err := c.cc.Invoke(ctx, Alerts_ToggleAlerts_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Alerts_ToggleAlerts_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,6 +71,8 @@ func (c *alertsClient) ToggleAlerts(ctx context.Context, in *ToggleAlertsRequest // AlertsServer is the server API for Alerts service. // All implementations must embed UnimplementedAlertsServer // for forward compatibility +// +// Alerts service provides public methods for managing Alerting Alerts. type AlertsServer interface { // Deprecated: Do not use. // ListAlerts returns a list of all Alerts. diff --git a/api/managementpb/ia/channels.pb.gw.go b/api/managementpb/ia/channels.pb.gw.go index 3807c08220..ea03da2b81 100644 --- a/api/managementpb/ia/channels.pb.gw.go +++ b/api/managementpb/ia/channels.pb.gw.go @@ -236,21 +236,21 @@ func RegisterChannelsHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterChannelsHandlerFromEndpoint is same as RegisterChannelsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterChannelsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/ia/channels_grpc.pb.go b/api/managementpb/ia/channels_grpc.pb.go index 48806962f5..3e27e95717 100644 --- a/api/managementpb/ia/channels_grpc.pb.go +++ b/api/managementpb/ia/channels_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/ia/channels.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Channels_ListChannels_FullMethodName = "/ia.v1beta1.Channels/ListChannels" @@ -29,6 +29,8 @@ const ( // ChannelsClient is the client API for Channels service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Channels service provides access to Notification Channels. type ChannelsClient interface { // Deprecated: Do not use. // ListChannels returns a list of all notifation channels. @@ -54,8 +56,9 @@ func NewChannelsClient(cc grpc.ClientConnInterface) ChannelsClient { // Deprecated: Do not use. func (c *channelsClient) ListChannels(ctx context.Context, in *ListChannelsRequest, opts ...grpc.CallOption) (*ListChannelsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListChannelsResponse) - err := c.cc.Invoke(ctx, Channels_ListChannels_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Channels_ListChannels_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -64,8 +67,9 @@ func (c *channelsClient) ListChannels(ctx context.Context, in *ListChannelsReque // Deprecated: Do not use. func (c *channelsClient) AddChannel(ctx context.Context, in *AddChannelRequest, opts ...grpc.CallOption) (*AddChannelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddChannelResponse) - err := c.cc.Invoke(ctx, Channels_AddChannel_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Channels_AddChannel_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -74,8 +78,9 @@ func (c *channelsClient) AddChannel(ctx context.Context, in *AddChannelRequest, // Deprecated: Do not use. func (c *channelsClient) ChangeChannel(ctx context.Context, in *ChangeChannelRequest, opts ...grpc.CallOption) (*ChangeChannelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeChannelResponse) - err := c.cc.Invoke(ctx, Channels_ChangeChannel_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Channels_ChangeChannel_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -84,8 +89,9 @@ func (c *channelsClient) ChangeChannel(ctx context.Context, in *ChangeChannelReq // Deprecated: Do not use. func (c *channelsClient) RemoveChannel(ctx context.Context, in *RemoveChannelRequest, opts ...grpc.CallOption) (*RemoveChannelResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveChannelResponse) - err := c.cc.Invoke(ctx, Channels_RemoveChannel_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Channels_RemoveChannel_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -95,6 +101,8 @@ func (c *channelsClient) RemoveChannel(ctx context.Context, in *RemoveChannelReq // ChannelsServer is the server API for Channels service. // All implementations must embed UnimplementedChannelsServer // for forward compatibility +// +// Channels service provides access to Notification Channels. type ChannelsServer interface { // Deprecated: Do not use. // ListChannels returns a list of all notifation channels. diff --git a/api/managementpb/ia/rules.pb.gw.go b/api/managementpb/ia/rules.pb.gw.go index 3dd53da032..a166cf6577 100644 --- a/api/managementpb/ia/rules.pb.gw.go +++ b/api/managementpb/ia/rules.pb.gw.go @@ -284,21 +284,21 @@ func RegisterRulesHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterRulesHandlerFromEndpoint is same as RegisterRulesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterRulesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/ia/rules_grpc.pb.go b/api/managementpb/ia/rules_grpc.pb.go index 786492a856..f1f49ad97d 100644 --- a/api/managementpb/ia/rules_grpc.pb.go +++ b/api/managementpb/ia/rules_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/ia/rules.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Rules_ListAlertRules_FullMethodName = "/ia.v1beta1.Rules/ListAlertRules" @@ -30,6 +30,8 @@ const ( // RulesClient is the client API for Rules service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Rules service provides public methods for managing Alerting rules. type RulesClient interface { // Deprecated: Do not use. // ListAlertRules returns a list of all Alerting rules. @@ -58,8 +60,9 @@ func NewRulesClient(cc grpc.ClientConnInterface) RulesClient { // Deprecated: Do not use. func (c *rulesClient) ListAlertRules(ctx context.Context, in *ListAlertRulesRequest, opts ...grpc.CallOption) (*ListAlertRulesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAlertRulesResponse) - err := c.cc.Invoke(ctx, Rules_ListAlertRules_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Rules_ListAlertRules_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -68,8 +71,9 @@ func (c *rulesClient) ListAlertRules(ctx context.Context, in *ListAlertRulesRequ // Deprecated: Do not use. func (c *rulesClient) CreateAlertRule(ctx context.Context, in *CreateAlertRuleRequest, opts ...grpc.CallOption) (*CreateAlertRuleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateAlertRuleResponse) - err := c.cc.Invoke(ctx, Rules_CreateAlertRule_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Rules_CreateAlertRule_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -78,8 +82,9 @@ func (c *rulesClient) CreateAlertRule(ctx context.Context, in *CreateAlertRuleRe // Deprecated: Do not use. func (c *rulesClient) UpdateAlertRule(ctx context.Context, in *UpdateAlertRuleRequest, opts ...grpc.CallOption) (*UpdateAlertRuleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateAlertRuleResponse) - err := c.cc.Invoke(ctx, Rules_UpdateAlertRule_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Rules_UpdateAlertRule_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -88,8 +93,9 @@ func (c *rulesClient) UpdateAlertRule(ctx context.Context, in *UpdateAlertRuleRe // Deprecated: Do not use. func (c *rulesClient) ToggleAlertRule(ctx context.Context, in *ToggleAlertRuleRequest, opts ...grpc.CallOption) (*ToggleAlertRuleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ToggleAlertRuleResponse) - err := c.cc.Invoke(ctx, Rules_ToggleAlertRule_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Rules_ToggleAlertRule_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -98,8 +104,9 @@ func (c *rulesClient) ToggleAlertRule(ctx context.Context, in *ToggleAlertRuleRe // Deprecated: Do not use. func (c *rulesClient) DeleteAlertRule(ctx context.Context, in *DeleteAlertRuleRequest, opts ...grpc.CallOption) (*DeleteAlertRuleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteAlertRuleResponse) - err := c.cc.Invoke(ctx, Rules_DeleteAlertRule_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Rules_DeleteAlertRule_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -109,6 +116,8 @@ func (c *rulesClient) DeleteAlertRule(ctx context.Context, in *DeleteAlertRuleRe // RulesServer is the server API for Rules service. // All implementations must embed UnimplementedRulesServer // for forward compatibility +// +// Rules service provides public methods for managing Alerting rules. type RulesServer interface { // Deprecated: Do not use. // ListAlertRules returns a list of all Alerting rules. diff --git a/api/managementpb/mongodb.pb.gw.go b/api/managementpb/mongodb.pb.gw.go index 04a494dfbf..77d304976c 100644 --- a/api/managementpb/mongodb.pb.gw.go +++ b/api/managementpb/mongodb.pb.gw.go @@ -92,21 +92,21 @@ func RegisterMongoDBHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterMongoDBHandlerFromEndpoint is same as RegisterMongoDBHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterMongoDBHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/mongodb_grpc.pb.go b/api/managementpb/mongodb_grpc.pb.go index 43f024bc66..e8b0a1d623 100644 --- a/api/managementpb/mongodb_grpc.pb.go +++ b/api/managementpb/mongodb_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/mongodb.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( MongoDB_AddMongoDB_FullMethodName = "/management.MongoDB/AddMongoDB" @@ -26,6 +26,8 @@ const ( // MongoDBClient is the client API for MongoDB service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MongoDB service provides public Management API methods for MongoDB Service. type MongoDBClient interface { // AddMongoDB adds MongoDB Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -43,8 +45,9 @@ func NewMongoDBClient(cc grpc.ClientConnInterface) MongoDBClient { } func (c *mongoDBClient) AddMongoDB(ctx context.Context, in *AddMongoDBRequest, opts ...grpc.CallOption) (*AddMongoDBResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMongoDBResponse) - err := c.cc.Invoke(ctx, MongoDB_AddMongoDB_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MongoDB_AddMongoDB_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -54,6 +57,8 @@ func (c *mongoDBClient) AddMongoDB(ctx context.Context, in *AddMongoDBRequest, o // MongoDBServer is the server API for MongoDB service. // All implementations must embed UnimplementedMongoDBServer // for forward compatibility +// +// MongoDB service provides public Management API methods for MongoDB Service. type MongoDBServer interface { // AddMongoDB adds MongoDB Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/mysql.pb.gw.go b/api/managementpb/mysql.pb.gw.go index 446217a8df..b3bb115079 100644 --- a/api/managementpb/mysql.pb.gw.go +++ b/api/managementpb/mysql.pb.gw.go @@ -92,21 +92,21 @@ func RegisterMySQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv // RegisterMySQLHandlerFromEndpoint is same as RegisterMySQLHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterMySQLHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/mysql_grpc.pb.go b/api/managementpb/mysql_grpc.pb.go index 3451910944..e3b3e6e32a 100644 --- a/api/managementpb/mysql_grpc.pb.go +++ b/api/managementpb/mysql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/mysql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( MySQL_AddMySQL_FullMethodName = "/management.MySQL/AddMySQL" @@ -26,6 +26,8 @@ const ( // MySQLClient is the client API for MySQL service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MySQL service provides public Management API methods for MySQL Service. type MySQLClient interface { // AddMySQL adds MySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -43,8 +45,9 @@ func NewMySQLClient(cc grpc.ClientConnInterface) MySQLClient { } func (c *mySQLClient) AddMySQL(ctx context.Context, in *AddMySQLRequest, opts ...grpc.CallOption) (*AddMySQLResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddMySQLResponse) - err := c.cc.Invoke(ctx, MySQL_AddMySQL_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MySQL_AddMySQL_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -54,6 +57,8 @@ func (c *mySQLClient) AddMySQL(ctx context.Context, in *AddMySQLRequest, opts .. // MySQLServer is the server API for MySQL service. // All implementations must embed UnimplementedMySQLServer // for forward compatibility +// +// MySQL service provides public Management API methods for MySQL Service. type MySQLServer interface { // AddMySQL adds MySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/node.pb.gw.go b/api/managementpb/node.pb.gw.go index e6c176b244..1cde3d6571 100644 --- a/api/managementpb/node.pb.gw.go +++ b/api/managementpb/node.pb.gw.go @@ -92,21 +92,21 @@ func RegisterNodeHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve // RegisterNodeHandlerFromEndpoint is same as RegisterNodeHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterNodeHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/node/node.pb.gw.go b/api/managementpb/node/node.pb.gw.go index 6a13fbf480..967e8cc452 100644 --- a/api/managementpb/node/node.pb.gw.go +++ b/api/managementpb/node/node.pb.gw.go @@ -140,21 +140,21 @@ func RegisterMgmtNodeHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterMgmtNodeHandlerFromEndpoint is same as RegisterMgmtNodeHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterMgmtNodeHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/node/node_grpc.pb.go b/api/managementpb/node/node_grpc.pb.go index 14e4f461d1..bdc454c595 100644 --- a/api/managementpb/node/node_grpc.pb.go +++ b/api/managementpb/node/node_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/node/node.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( MgmtNode_ListNodes_FullMethodName = "/node.v1beta1.MgmtNode/ListNodes" @@ -27,6 +27,8 @@ const ( // MgmtNodeClient is the client API for MgmtNode service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MgmtNode service provides public Management API methods for Nodes. type MgmtNodeClient interface { // ListNode returns a list of nodes. ListNodes(ctx context.Context, in *ListNodeRequest, opts ...grpc.CallOption) (*ListNodeResponse, error) @@ -43,8 +45,9 @@ func NewMgmtNodeClient(cc grpc.ClientConnInterface) MgmtNodeClient { } func (c *mgmtNodeClient) ListNodes(ctx context.Context, in *ListNodeRequest, opts ...grpc.CallOption) (*ListNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListNodeResponse) - err := c.cc.Invoke(ctx, MgmtNode_ListNodes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MgmtNode_ListNodes_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -52,8 +55,9 @@ func (c *mgmtNodeClient) ListNodes(ctx context.Context, in *ListNodeRequest, opt } func (c *mgmtNodeClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetNodeResponse) - err := c.cc.Invoke(ctx, MgmtNode_GetNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MgmtNode_GetNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -63,6 +67,8 @@ func (c *mgmtNodeClient) GetNode(ctx context.Context, in *GetNodeRequest, opts . // MgmtNodeServer is the server API for MgmtNode service. // All implementations must embed UnimplementedMgmtNodeServer // for forward compatibility +// +// MgmtNode service provides public Management API methods for Nodes. type MgmtNodeServer interface { // ListNode returns a list of nodes. ListNodes(context.Context, *ListNodeRequest) (*ListNodeResponse, error) diff --git a/api/managementpb/node_grpc.pb.go b/api/managementpb/node_grpc.pb.go index ee9850d2aa..9d4db4e3c6 100644 --- a/api/managementpb/node_grpc.pb.go +++ b/api/managementpb/node_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/node.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Node_RegisterNode_FullMethodName = "/management.Node/RegisterNode" @@ -26,6 +26,8 @@ const ( // NodeClient is the client API for Node service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Node service provides public Management API methods for Nodes. type NodeClient interface { // RegisterNode registers a new Node and pmm-agent. RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) @@ -40,8 +42,9 @@ func NewNodeClient(cc grpc.ClientConnInterface) NodeClient { } func (c *nodeClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RegisterNodeResponse) - err := c.cc.Invoke(ctx, Node_RegisterNode_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_RegisterNode_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *nodeClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, // NodeServer is the server API for Node service. // All implementations must embed UnimplementedNodeServer // for forward compatibility +// +// Node service provides public Management API methods for Nodes. type NodeServer interface { // RegisterNode registers a new Node and pmm-agent. RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) diff --git a/api/managementpb/postgresql.pb.gw.go b/api/managementpb/postgresql.pb.gw.go index 9a38e8aed6..8a95a58b29 100644 --- a/api/managementpb/postgresql.pb.gw.go +++ b/api/managementpb/postgresql.pb.gw.go @@ -92,21 +92,21 @@ func RegisterPostgreSQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, // RegisterPostgreSQLHandlerFromEndpoint is same as RegisterPostgreSQLHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterPostgreSQLHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/postgresql_grpc.pb.go b/api/managementpb/postgresql_grpc.pb.go index 1852de174a..e360dace7f 100644 --- a/api/managementpb/postgresql_grpc.pb.go +++ b/api/managementpb/postgresql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/postgresql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( PostgreSQL_AddPostgreSQL_FullMethodName = "/management.PostgreSQL/AddPostgreSQL" @@ -26,6 +26,8 @@ const ( // PostgreSQLClient is the client API for PostgreSQL service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// PostgreSQL service provides public Management API methods for PostgreSQL Service. type PostgreSQLClient interface { // AddPostgreSQL adds PostgreSQL Service and starts postgres exporter. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -42,8 +44,9 @@ func NewPostgreSQLClient(cc grpc.ClientConnInterface) PostgreSQLClient { } func (c *postgreSQLClient) AddPostgreSQL(ctx context.Context, in *AddPostgreSQLRequest, opts ...grpc.CallOption) (*AddPostgreSQLResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddPostgreSQLResponse) - err := c.cc.Invoke(ctx, PostgreSQL_AddPostgreSQL_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, PostgreSQL_AddPostgreSQL_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -53,6 +56,8 @@ func (c *postgreSQLClient) AddPostgreSQL(ctx context.Context, in *AddPostgreSQLR // PostgreSQLServer is the server API for PostgreSQL service. // All implementations must embed UnimplementedPostgreSQLServer // for forward compatibility +// +// PostgreSQL service provides public Management API methods for PostgreSQL Service. type PostgreSQLServer interface { // AddPostgreSQL adds PostgreSQL Service and starts postgres exporter. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/proxysql.pb.gw.go b/api/managementpb/proxysql.pb.gw.go index 76d01d4d09..9a0a209f50 100644 --- a/api/managementpb/proxysql.pb.gw.go +++ b/api/managementpb/proxysql.pb.gw.go @@ -92,21 +92,21 @@ func RegisterProxySQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterProxySQLHandlerFromEndpoint is same as RegisterProxySQLHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterProxySQLHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/proxysql_grpc.pb.go b/api/managementpb/proxysql_grpc.pb.go index 197f0f2498..df19da1083 100644 --- a/api/managementpb/proxysql_grpc.pb.go +++ b/api/managementpb/proxysql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/proxysql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( ProxySQL_AddProxySQL_FullMethodName = "/management.ProxySQL/AddProxySQL" @@ -26,6 +26,8 @@ const ( // ProxySQLClient is the client API for ProxySQL service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// ProxySQL service provides public Management API methods for ProxySQL Service. type ProxySQLClient interface { // AddProxySQL adds ProxySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", @@ -42,8 +44,9 @@ func NewProxySQLClient(cc grpc.ClientConnInterface) ProxySQLClient { } func (c *proxySQLClient) AddProxySQL(ctx context.Context, in *AddProxySQLRequest, opts ...grpc.CallOption) (*AddProxySQLResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddProxySQLResponse) - err := c.cc.Invoke(ctx, ProxySQL_AddProxySQL_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ProxySQL_AddProxySQL_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -53,6 +56,8 @@ func (c *proxySQLClient) AddProxySQL(ctx context.Context, in *AddProxySQLRequest // ProxySQLServer is the server API for ProxySQL service. // All implementations must embed UnimplementedProxySQLServer // for forward compatibility +// +// ProxySQL service provides public Management API methods for ProxySQL Service. type ProxySQLServer interface { // AddProxySQL adds ProxySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", diff --git a/api/managementpb/rds.pb.gw.go b/api/managementpb/rds.pb.gw.go index ebb010a7da..60aa2da92f 100644 --- a/api/managementpb/rds.pb.gw.go +++ b/api/managementpb/rds.pb.gw.go @@ -140,21 +140,21 @@ func RegisterRDSHandlerServer(ctx context.Context, mux *runtime.ServeMux, server // RegisterRDSHandlerFromEndpoint is same as RegisterRDSHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterRDSHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/rds_grpc.pb.go b/api/managementpb/rds_grpc.pb.go index 68e6fb4950..3b9b1d041b 100644 --- a/api/managementpb/rds_grpc.pb.go +++ b/api/managementpb/rds_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/rds.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( RDS_DiscoverRDS_FullMethodName = "/management.RDS/DiscoverRDS" @@ -27,6 +27,8 @@ const ( // RDSClient is the client API for RDS service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// RDS service provides Node and Service Discovery APIs. type RDSClient interface { // DiscoverRDS discovers RDS instances. DiscoverRDS(ctx context.Context, in *DiscoverRDSRequest, opts ...grpc.CallOption) (*DiscoverRDSResponse, error) @@ -43,8 +45,9 @@ func NewRDSClient(cc grpc.ClientConnInterface) RDSClient { } func (c *rDSClient) DiscoverRDS(ctx context.Context, in *DiscoverRDSRequest, opts ...grpc.CallOption) (*DiscoverRDSResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DiscoverRDSResponse) - err := c.cc.Invoke(ctx, RDS_DiscoverRDS_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RDS_DiscoverRDS_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -52,8 +55,9 @@ func (c *rDSClient) DiscoverRDS(ctx context.Context, in *DiscoverRDSRequest, opt } func (c *rDSClient) AddRDS(ctx context.Context, in *AddRDSRequest, opts ...grpc.CallOption) (*AddRDSResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddRDSResponse) - err := c.cc.Invoke(ctx, RDS_AddRDS_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RDS_AddRDS_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -63,6 +67,8 @@ func (c *rDSClient) AddRDS(ctx context.Context, in *AddRDSRequest, opts ...grpc. // RDSServer is the server API for RDS service. // All implementations must embed UnimplementedRDSServer // for forward compatibility +// +// RDS service provides Node and Service Discovery APIs. type RDSServer interface { // DiscoverRDS discovers RDS instances. DiscoverRDS(context.Context, *DiscoverRDSRequest) (*DiscoverRDSResponse, error) diff --git a/api/managementpb/role/role.pb.gw.go b/api/managementpb/role/role.pb.gw.go index 41f56e50c1..15ccfb9f04 100644 --- a/api/managementpb/role/role.pb.gw.go +++ b/api/managementpb/role/role.pb.gw.go @@ -380,21 +380,21 @@ func RegisterRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve // RegisterRoleHandlerFromEndpoint is same as RegisterRoleHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterRoleHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/role/role_grpc.pb.go b/api/managementpb/role/role_grpc.pb.go index 84a7298d54..546964a840 100644 --- a/api/managementpb/role/role_grpc.pb.go +++ b/api/managementpb/role/role_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/role/role.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Role_CreateRole_FullMethodName = "/role.v1beta1.Role/CreateRole" @@ -32,6 +32,8 @@ const ( // RoleClient is the client API for Role service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Service Role provides public methods for managing Roles. type RoleClient interface { // CreateRole creates a new role. CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*CreateRoleResponse, error) @@ -58,8 +60,9 @@ func NewRoleClient(cc grpc.ClientConnInterface) RoleClient { } func (c *roleClient) CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*CreateRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateRoleResponse) - err := c.cc.Invoke(ctx, Role_CreateRole_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_CreateRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,8 +70,9 @@ func (c *roleClient) CreateRole(ctx context.Context, in *CreateRoleRequest, opts } func (c *roleClient) UpdateRole(ctx context.Context, in *UpdateRoleRequest, opts ...grpc.CallOption) (*UpdateRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateRoleResponse) - err := c.cc.Invoke(ctx, Role_UpdateRole_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_UpdateRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -76,8 +80,9 @@ func (c *roleClient) UpdateRole(ctx context.Context, in *UpdateRoleRequest, opts } func (c *roleClient) DeleteRole(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*DeleteRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteRoleResponse) - err := c.cc.Invoke(ctx, Role_DeleteRole_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_DeleteRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -85,8 +90,9 @@ func (c *roleClient) DeleteRole(ctx context.Context, in *DeleteRoleRequest, opts } func (c *roleClient) GetRole(ctx context.Context, in *GetRoleRequest, opts ...grpc.CallOption) (*GetRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetRoleResponse) - err := c.cc.Invoke(ctx, Role_GetRole_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_GetRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -94,8 +100,9 @@ func (c *roleClient) GetRole(ctx context.Context, in *GetRoleRequest, opts ...gr } func (c *roleClient) ListRoles(ctx context.Context, in *ListRolesRequest, opts ...grpc.CallOption) (*ListRolesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListRolesResponse) - err := c.cc.Invoke(ctx, Role_ListRoles_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_ListRoles_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -103,8 +110,9 @@ func (c *roleClient) ListRoles(ctx context.Context, in *ListRolesRequest, opts . } func (c *roleClient) AssignRoles(ctx context.Context, in *AssignRolesRequest, opts ...grpc.CallOption) (*AssignRolesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AssignRolesResponse) - err := c.cc.Invoke(ctx, Role_AssignRoles_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_AssignRoles_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +120,9 @@ func (c *roleClient) AssignRoles(ctx context.Context, in *AssignRolesRequest, op } func (c *roleClient) SetDefaultRole(ctx context.Context, in *SetDefaultRoleRequest, opts ...grpc.CallOption) (*SetDefaultRoleResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SetDefaultRoleResponse) - err := c.cc.Invoke(ctx, Role_SetDefaultRole_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Role_SetDefaultRole_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -123,6 +132,8 @@ func (c *roleClient) SetDefaultRole(ctx context.Context, in *SetDefaultRoleReque // RoleServer is the server API for Role service. // All implementations must embed UnimplementedRoleServer // for forward compatibility +// +// Service Role provides public methods for managing Roles. type RoleServer interface { // CreateRole creates a new role. CreateRole(context.Context, *CreateRoleRequest) (*CreateRoleResponse, error) diff --git a/api/managementpb/service.pb.gw.go b/api/managementpb/service.pb.gw.go index 526cded652..57cac977e4 100644 --- a/api/managementpb/service.pb.gw.go +++ b/api/managementpb/service.pb.gw.go @@ -92,21 +92,21 @@ func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterServiceHandlerFromEndpoint is same as RegisterServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/service/service.pb.gw.go b/api/managementpb/service/service.pb.gw.go index bce9792f1d..1cf30357bc 100644 --- a/api/managementpb/service/service.pb.gw.go +++ b/api/managementpb/service/service.pb.gw.go @@ -92,21 +92,21 @@ func RegisterMgmtServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux // RegisterMgmtServiceHandlerFromEndpoint is same as RegisterMgmtServiceHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterMgmtServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/managementpb/service/service_grpc.pb.go b/api/managementpb/service/service_grpc.pb.go index 41509487cb..02e2d181c5 100644 --- a/api/managementpb/service/service_grpc.pb.go +++ b/api/managementpb/service/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/service/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( MgmtService_ListServices_FullMethodName = "/service.v1beta1.MgmtService/ListServices" @@ -26,6 +26,8 @@ const ( // MgmtServiceClient is the client API for MgmtService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MgmtService service provides public methods for managing and querying Services. type MgmtServiceClient interface { // ListServices returns a list of Services with a rich set of properties. ListServices(ctx context.Context, in *ListServiceRequest, opts ...grpc.CallOption) (*ListServiceResponse, error) @@ -40,8 +42,9 @@ func NewMgmtServiceClient(cc grpc.ClientConnInterface) MgmtServiceClient { } func (c *mgmtServiceClient) ListServices(ctx context.Context, in *ListServiceRequest, opts ...grpc.CallOption) (*ListServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListServiceResponse) - err := c.cc.Invoke(ctx, MgmtService_ListServices_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MgmtService_ListServices_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *mgmtServiceClient) ListServices(ctx context.Context, in *ListServiceReq // MgmtServiceServer is the server API for MgmtService service. // All implementations must embed UnimplementedMgmtServiceServer // for forward compatibility +// +// MgmtService service provides public methods for managing and querying Services. type MgmtServiceServer interface { // ListServices returns a list of Services with a rich set of properties. ListServices(context.Context, *ListServiceRequest) (*ListServiceResponse, error) diff --git a/api/managementpb/service_grpc.pb.go b/api/managementpb/service_grpc.pb.go index 949cf2ebad..3228b70d46 100644 --- a/api/managementpb/service_grpc.pb.go +++ b/api/managementpb/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: managementpb/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Service_RemoveService_FullMethodName = "/management.Service/RemoveService" @@ -26,6 +26,8 @@ const ( // ServiceClient is the client API for Service service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Service service provides public methods for managing and querying Services. type ServiceClient interface { // RemoveService removes Service with Agents. RemoveService(ctx context.Context, in *RemoveServiceRequest, opts ...grpc.CallOption) (*RemoveServiceResponse, error) @@ -40,8 +42,9 @@ func NewServiceClient(cc grpc.ClientConnInterface) ServiceClient { } func (c *serviceClient) RemoveService(ctx context.Context, in *RemoveServiceRequest, opts ...grpc.CallOption) (*RemoveServiceResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RemoveServiceResponse) - err := c.cc.Invoke(ctx, Service_RemoveService_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Service_RemoveService_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *serviceClient) RemoveService(ctx context.Context, in *RemoveServiceRequ // ServiceServer is the server API for Service service. // All implementations must embed UnimplementedServiceServer // for forward compatibility +// +// Service service provides public methods for managing and querying Services. type ServiceServer interface { // RemoveService removes Service with Agents. RemoveService(context.Context, *RemoveServiceRequest) (*RemoveServiceResponse, error) diff --git a/api/platformpb/platform.pb.gw.go b/api/platformpb/platform.pb.gw.go index 8e6187c064..20c99e5814 100644 --- a/api/platformpb/platform.pb.gw.go +++ b/api/platformpb/platform.pb.gw.go @@ -380,21 +380,21 @@ func RegisterPlatformHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterPlatformHandlerFromEndpoint is same as RegisterPlatformHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterPlatformHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/platformpb/platform_grpc.pb.go b/api/platformpb/platform_grpc.pb.go index efa637bcae..589a3b2c70 100644 --- a/api/platformpb/platform_grpc.pb.go +++ b/api/platformpb/platform_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: platformpb/platform.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Platform_Connect_FullMethodName = "/platform.Platform/Connect" @@ -32,6 +32,8 @@ const ( // PlatformClient is the client API for Platform service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Platform contains rpcs related to Percona Platform. type PlatformClient interface { // Connect a PMM server to the organization created on Percona Portal. That allows the user to sign in to the PMM server with their Percona Account. Connect(ctx context.Context, in *ConnectRequest, opts ...grpc.CallOption) (*ConnectResponse, error) @@ -58,8 +60,9 @@ func NewPlatformClient(cc grpc.ClientConnInterface) PlatformClient { } func (c *platformClient) Connect(ctx context.Context, in *ConnectRequest, opts ...grpc.CallOption) (*ConnectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ConnectResponse) - err := c.cc.Invoke(ctx, Platform_Connect_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_Connect_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -67,8 +70,9 @@ func (c *platformClient) Connect(ctx context.Context, in *ConnectRequest, opts . } func (c *platformClient) Disconnect(ctx context.Context, in *DisconnectRequest, opts ...grpc.CallOption) (*DisconnectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DisconnectResponse) - err := c.cc.Invoke(ctx, Platform_Disconnect_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_Disconnect_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -76,8 +80,9 @@ func (c *platformClient) Disconnect(ctx context.Context, in *DisconnectRequest, } func (c *platformClient) SearchOrganizationTickets(ctx context.Context, in *SearchOrganizationTicketsRequest, opts ...grpc.CallOption) (*SearchOrganizationTicketsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SearchOrganizationTicketsResponse) - err := c.cc.Invoke(ctx, Platform_SearchOrganizationTickets_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_SearchOrganizationTickets_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -85,8 +90,9 @@ func (c *platformClient) SearchOrganizationTickets(ctx context.Context, in *Sear } func (c *platformClient) SearchOrganizationEntitlements(ctx context.Context, in *SearchOrganizationEntitlementsRequest, opts ...grpc.CallOption) (*SearchOrganizationEntitlementsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SearchOrganizationEntitlementsResponse) - err := c.cc.Invoke(ctx, Platform_SearchOrganizationEntitlements_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_SearchOrganizationEntitlements_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -94,8 +100,9 @@ func (c *platformClient) SearchOrganizationEntitlements(ctx context.Context, in } func (c *platformClient) GetContactInformation(ctx context.Context, in *GetContactInformationRequest, opts ...grpc.CallOption) (*GetContactInformationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetContactInformationResponse) - err := c.cc.Invoke(ctx, Platform_GetContactInformation_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_GetContactInformation_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -103,8 +110,9 @@ func (c *platformClient) GetContactInformation(ctx context.Context, in *GetConta } func (c *platformClient) ServerInfo(ctx context.Context, in *ServerInfoRequest, opts ...grpc.CallOption) (*ServerInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ServerInfoResponse) - err := c.cc.Invoke(ctx, Platform_ServerInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_ServerInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +120,9 @@ func (c *platformClient) ServerInfo(ctx context.Context, in *ServerInfoRequest, } func (c *platformClient) UserStatus(ctx context.Context, in *UserStatusRequest, opts ...grpc.CallOption) (*UserStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UserStatusResponse) - err := c.cc.Invoke(ctx, Platform_UserStatus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Platform_UserStatus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -123,6 +132,8 @@ func (c *platformClient) UserStatus(ctx context.Context, in *UserStatusRequest, // PlatformServer is the server API for Platform service. // All implementations must embed UnimplementedPlatformServer // for forward compatibility +// +// Platform contains rpcs related to Percona Platform. type PlatformServer interface { // Connect a PMM server to the organization created on Percona Portal. That allows the user to sign in to the PMM server with their Percona Account. Connect(context.Context, *ConnectRequest) (*ConnectResponse, error) diff --git a/api/qanpb/collector_grpc.pb.go b/api/qanpb/collector_grpc.pb.go index b1a42e7636..1aa53524f3 100644 --- a/api/qanpb/collector_grpc.pb.go +++ b/api/qanpb/collector_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: qanpb/collector.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Collector_Collect_FullMethodName = "/qan.v1beta1.Collector/Collect" @@ -26,6 +26,8 @@ const ( // CollectorClient is the client API for Collector service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Collector service accepts data from pmm-agent (via pmm-managed). type CollectorClient interface { // Collect accepts data from pmm-agent (via pmm-managed). Collect(ctx context.Context, in *CollectRequest, opts ...grpc.CallOption) (*CollectResponse, error) @@ -40,8 +42,9 @@ func NewCollectorClient(cc grpc.ClientConnInterface) CollectorClient { } func (c *collectorClient) Collect(ctx context.Context, in *CollectRequest, opts ...grpc.CallOption) (*CollectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CollectResponse) - err := c.cc.Invoke(ctx, Collector_Collect_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Collector_Collect_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *collectorClient) Collect(ctx context.Context, in *CollectRequest, opts // CollectorServer is the server API for Collector service. // All implementations must embed UnimplementedCollectorServer // for forward compatibility +// +// Collector service accepts data from pmm-agent (via pmm-managed). type CollectorServer interface { // Collect accepts data from pmm-agent (via pmm-managed). Collect(context.Context, *CollectRequest) (*CollectResponse, error) diff --git a/api/qanpb/filters.pb.gw.go b/api/qanpb/filters.pb.gw.go index 06834af53b..0aaa2ad79e 100644 --- a/api/qanpb/filters.pb.gw.go +++ b/api/qanpb/filters.pb.gw.go @@ -92,21 +92,21 @@ func RegisterFiltersHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterFiltersHandlerFromEndpoint is same as RegisterFiltersHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterFiltersHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/qanpb/filters_grpc.pb.go b/api/qanpb/filters_grpc.pb.go index a68ca5847e..543055fa96 100644 --- a/api/qanpb/filters_grpc.pb.go +++ b/api/qanpb/filters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: qanpb/filters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Filters_Get_FullMethodName = "/qan.v1beta1.Filters/Get" @@ -26,6 +26,8 @@ const ( // FiltersClient is the client API for Filters service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Filters serves list of names of metrics. type FiltersClient interface { // Get gets map of metrics names. Get(ctx context.Context, in *FiltersRequest, opts ...grpc.CallOption) (*FiltersReply, error) @@ -40,8 +42,9 @@ func NewFiltersClient(cc grpc.ClientConnInterface) FiltersClient { } func (c *filtersClient) Get(ctx context.Context, in *FiltersRequest, opts ...grpc.CallOption) (*FiltersReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(FiltersReply) - err := c.cc.Invoke(ctx, Filters_Get_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Filters_Get_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *filtersClient) Get(ctx context.Context, in *FiltersRequest, opts ...grp // FiltersServer is the server API for Filters service. // All implementations must embed UnimplementedFiltersServer // for forward compatibility +// +// Filters serves list of names of metrics. type FiltersServer interface { // Get gets map of metrics names. Get(context.Context, *FiltersRequest) (*FiltersReply, error) diff --git a/api/qanpb/metrics_names.pb.gw.go b/api/qanpb/metrics_names.pb.gw.go index c74c921e8a..9cedf06864 100644 --- a/api/qanpb/metrics_names.pb.gw.go +++ b/api/qanpb/metrics_names.pb.gw.go @@ -92,21 +92,21 @@ func RegisterMetricsNamesHandlerServer(ctx context.Context, mux *runtime.ServeMu // RegisterMetricsNamesHandlerFromEndpoint is same as RegisterMetricsNamesHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterMetricsNamesHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/qanpb/metrics_names_grpc.pb.go b/api/qanpb/metrics_names_grpc.pb.go index 33a91a24dc..7b93e4aede 100644 --- a/api/qanpb/metrics_names_grpc.pb.go +++ b/api/qanpb/metrics_names_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: qanpb/metrics_names.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( MetricsNames_GetMetricsNames_FullMethodName = "/qan.v1beta1.MetricsNames/GetMetricsNames" @@ -26,6 +26,8 @@ const ( // MetricsNamesClient is the client API for MetricsNames service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MetricsNames serves list of names of metrics. type MetricsNamesClient interface { // GetMetricsNames gets map of metrics names. GetMetricsNames(ctx context.Context, in *MetricsNamesRequest, opts ...grpc.CallOption) (*MetricsNamesReply, error) @@ -40,8 +42,9 @@ func NewMetricsNamesClient(cc grpc.ClientConnInterface) MetricsNamesClient { } func (c *metricsNamesClient) GetMetricsNames(ctx context.Context, in *MetricsNamesRequest, opts ...grpc.CallOption) (*MetricsNamesReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MetricsNamesReply) - err := c.cc.Invoke(ctx, MetricsNames_GetMetricsNames_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, MetricsNames_GetMetricsNames_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *metricsNamesClient) GetMetricsNames(ctx context.Context, in *MetricsNam // MetricsNamesServer is the server API for MetricsNames service. // All implementations must embed UnimplementedMetricsNamesServer // for forward compatibility +// +// MetricsNames serves list of names of metrics. type MetricsNamesServer interface { // GetMetricsNames gets map of metrics names. GetMetricsNames(context.Context, *MetricsNamesRequest) (*MetricsNamesReply, error) diff --git a/api/qanpb/object_details.pb.gw.go b/api/qanpb/object_details.pb.gw.go index 18286bd649..39dda45c4d 100644 --- a/api/qanpb/object_details.pb.gw.go +++ b/api/qanpb/object_details.pb.gw.go @@ -428,21 +428,21 @@ func RegisterObjectDetailsHandlerServer(ctx context.Context, mux *runtime.ServeM // RegisterObjectDetailsHandlerFromEndpoint is same as RegisterObjectDetailsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterObjectDetailsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/qanpb/object_details_grpc.pb.go b/api/qanpb/object_details_grpc.pb.go index 26a2bbc5c2..5f3b9ffc52 100644 --- a/api/qanpb/object_details_grpc.pb.go +++ b/api/qanpb/object_details_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: qanpb/object_details.proto @@ -17,8 +17,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( ObjectDetails_GetMetrics_FullMethodName = "/qan.v1beta1.ObjectDetails/GetMetrics" @@ -34,6 +34,8 @@ const ( // ObjectDetailsClient is the client API for ObjectDetails service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// ObjectDetails serves agregated metrics filtered by given dimension value and period. type ObjectDetailsClient interface { // GetMetrics gets map of metrics for specific filtering. GetMetrics(ctx context.Context, in *MetricsRequest, opts ...grpc.CallOption) (*MetricsReply, error) @@ -62,8 +64,9 @@ func NewObjectDetailsClient(cc grpc.ClientConnInterface) ObjectDetailsClient { } func (c *objectDetailsClient) GetMetrics(ctx context.Context, in *MetricsRequest, opts ...grpc.CallOption) (*MetricsReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MetricsReply) - err := c.cc.Invoke(ctx, ObjectDetails_GetMetrics_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_GetMetrics_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -71,8 +74,9 @@ func (c *objectDetailsClient) GetMetrics(ctx context.Context, in *MetricsRequest } func (c *objectDetailsClient) GetQueryExample(ctx context.Context, in *QueryExampleRequest, opts ...grpc.CallOption) (*QueryExampleReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(QueryExampleReply) - err := c.cc.Invoke(ctx, ObjectDetails_GetQueryExample_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_GetQueryExample_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -80,8 +84,9 @@ func (c *objectDetailsClient) GetQueryExample(ctx context.Context, in *QueryExam } func (c *objectDetailsClient) GetLabels(ctx context.Context, in *ObjectDetailsLabelsRequest, opts ...grpc.CallOption) (*ObjectDetailsLabelsReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ObjectDetailsLabelsReply) - err := c.cc.Invoke(ctx, ObjectDetails_GetLabels_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_GetLabels_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -89,8 +94,9 @@ func (c *objectDetailsClient) GetLabels(ctx context.Context, in *ObjectDetailsLa } func (c *objectDetailsClient) GetQueryPlan(ctx context.Context, in *QueryPlanRequest, opts ...grpc.CallOption) (*QueryPlanReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(QueryPlanReply) - err := c.cc.Invoke(ctx, ObjectDetails_GetQueryPlan_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_GetQueryPlan_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -98,8 +104,9 @@ func (c *objectDetailsClient) GetQueryPlan(ctx context.Context, in *QueryPlanReq } func (c *objectDetailsClient) GetHistogram(ctx context.Context, in *HistogramRequest, opts ...grpc.CallOption) (*HistogramReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HistogramReply) - err := c.cc.Invoke(ctx, ObjectDetails_GetHistogram_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_GetHistogram_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -107,8 +114,9 @@ func (c *objectDetailsClient) GetHistogram(ctx context.Context, in *HistogramReq } func (c *objectDetailsClient) QueryExists(ctx context.Context, in *QueryExistsRequest, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(wrapperspb.BoolValue) - err := c.cc.Invoke(ctx, ObjectDetails_QueryExists_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_QueryExists_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -116,8 +124,9 @@ func (c *objectDetailsClient) QueryExists(ctx context.Context, in *QueryExistsRe } func (c *objectDetailsClient) ExplainFingerprintByQueryID(ctx context.Context, in *ExplainFingerprintByQueryIDRequest, opts ...grpc.CallOption) (*ExplainFingerprintByQueryIDReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ExplainFingerprintByQueryIDReply) - err := c.cc.Invoke(ctx, ObjectDetails_ExplainFingerprintByQueryID_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_ExplainFingerprintByQueryID_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -125,8 +134,9 @@ func (c *objectDetailsClient) ExplainFingerprintByQueryID(ctx context.Context, i } func (c *objectDetailsClient) SchemaByQueryID(ctx context.Context, in *SchemaByQueryIDRequest, opts ...grpc.CallOption) (*SchemaByQueryIDReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SchemaByQueryIDReply) - err := c.cc.Invoke(ctx, ObjectDetails_SchemaByQueryID_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, ObjectDetails_SchemaByQueryID_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -136,6 +146,8 @@ func (c *objectDetailsClient) SchemaByQueryID(ctx context.Context, in *SchemaByQ // ObjectDetailsServer is the server API for ObjectDetails service. // All implementations must embed UnimplementedObjectDetailsServer // for forward compatibility +// +// ObjectDetails serves agregated metrics filtered by given dimension value and period. type ObjectDetailsServer interface { // GetMetrics gets map of metrics for specific filtering. GetMetrics(context.Context, *MetricsRequest) (*MetricsReply, error) diff --git a/api/qanpb/profile.pb.gw.go b/api/qanpb/profile.pb.gw.go index dd6d54183d..e272e66cfd 100644 --- a/api/qanpb/profile.pb.gw.go +++ b/api/qanpb/profile.pb.gw.go @@ -92,21 +92,21 @@ func RegisterProfileHandlerServer(ctx context.Context, mux *runtime.ServeMux, se // RegisterProfileHandlerFromEndpoint is same as RegisterProfileHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterProfileHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/qanpb/profile_grpc.pb.go b/api/qanpb/profile_grpc.pb.go index bcabfb75b5..dd4b81ef4a 100644 --- a/api/qanpb/profile_grpc.pb.go +++ b/api/qanpb/profile_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: qanpb/profile.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Profile_GetReport_FullMethodName = "/qan.v1beta1.Profile/GetReport" @@ -26,6 +26,8 @@ const ( // ProfileClient is the client API for Profile service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Profile of metrics by QueryID, Host etc. type ProfileClient interface { // GetReport returns list of metrics group by queryid or other dimentions. GetReport(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportReply, error) @@ -40,8 +42,9 @@ func NewProfileClient(cc grpc.ClientConnInterface) ProfileClient { } func (c *profileClient) GetReport(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReportReply) - err := c.cc.Invoke(ctx, Profile_GetReport_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Profile_GetReport_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *profileClient) GetReport(ctx context.Context, in *ReportRequest, opts . // ProfileServer is the server API for Profile service. // All implementations must embed UnimplementedProfileServer // for forward compatibility +// +// Profile of metrics by QueryID, Host etc. type ProfileServer interface { // GetReport returns list of metrics group by queryid or other dimentions. GetReport(context.Context, *ReportRequest) (*ReportReply, error) diff --git a/api/serverpb/server.pb.gw.go b/api/serverpb/server.pb.gw.go index a04f221f4d..1a6d5930f3 100644 --- a/api/serverpb/server.pb.gw.go +++ b/api/serverpb/server.pb.gw.go @@ -524,21 +524,21 @@ func RegisterServerHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser // RegisterServerHandlerFromEndpoint is same as RegisterServerHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterServerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/serverpb/server_grpc.pb.go b/api/serverpb/server_grpc.pb.go index de69a805f0..17cd6efc9f 100644 --- a/api/serverpb/server_grpc.pb.go +++ b/api/serverpb/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: serverpb/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( Server_Version_FullMethodName = "/server.Server/Version" @@ -35,6 +35,8 @@ const ( // ServerClient is the client API for Server service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Server service provides generic PMM Server public APIs. type ServerClient interface { // Version returns PMM Server versions. Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) @@ -68,8 +70,9 @@ func NewServerClient(cc grpc.ClientConnInterface) ServerClient { } func (c *serverClient) Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(VersionResponse) - err := c.cc.Invoke(ctx, Server_Version_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_Version_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -77,8 +80,9 @@ func (c *serverClient) Version(ctx context.Context, in *VersionRequest, opts ... } func (c *serverClient) Readiness(ctx context.Context, in *ReadinessRequest, opts ...grpc.CallOption) (*ReadinessResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReadinessResponse) - err := c.cc.Invoke(ctx, Server_Readiness_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_Readiness_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -86,8 +90,9 @@ func (c *serverClient) Readiness(ctx context.Context, in *ReadinessRequest, opts } func (c *serverClient) LeaderHealthCheck(ctx context.Context, in *LeaderHealthCheckRequest, opts ...grpc.CallOption) (*LeaderHealthCheckResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LeaderHealthCheckResponse) - err := c.cc.Invoke(ctx, Server_LeaderHealthCheck_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_LeaderHealthCheck_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -95,8 +100,9 @@ func (c *serverClient) LeaderHealthCheck(ctx context.Context, in *LeaderHealthCh } func (c *serverClient) CheckUpdates(ctx context.Context, in *CheckUpdatesRequest, opts ...grpc.CallOption) (*CheckUpdatesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CheckUpdatesResponse) - err := c.cc.Invoke(ctx, Server_CheckUpdates_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_CheckUpdates_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -104,8 +110,9 @@ func (c *serverClient) CheckUpdates(ctx context.Context, in *CheckUpdatesRequest } func (c *serverClient) StartUpdate(ctx context.Context, in *StartUpdateRequest, opts ...grpc.CallOption) (*StartUpdateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartUpdateResponse) - err := c.cc.Invoke(ctx, Server_StartUpdate_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_StartUpdate_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -113,8 +120,9 @@ func (c *serverClient) StartUpdate(ctx context.Context, in *StartUpdateRequest, } func (c *serverClient) UpdateStatus(ctx context.Context, in *UpdateStatusRequest, opts ...grpc.CallOption) (*UpdateStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateStatusResponse) - err := c.cc.Invoke(ctx, Server_UpdateStatus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_UpdateStatus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -122,8 +130,9 @@ func (c *serverClient) UpdateStatus(ctx context.Context, in *UpdateStatusRequest } func (c *serverClient) GetSettings(ctx context.Context, in *GetSettingsRequest, opts ...grpc.CallOption) (*GetSettingsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetSettingsResponse) - err := c.cc.Invoke(ctx, Server_GetSettings_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_GetSettings_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -131,8 +140,9 @@ func (c *serverClient) GetSettings(ctx context.Context, in *GetSettingsRequest, } func (c *serverClient) ChangeSettings(ctx context.Context, in *ChangeSettingsRequest, opts ...grpc.CallOption) (*ChangeSettingsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ChangeSettingsResponse) - err := c.cc.Invoke(ctx, Server_ChangeSettings_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_ChangeSettings_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -140,8 +150,9 @@ func (c *serverClient) ChangeSettings(ctx context.Context, in *ChangeSettingsReq } func (c *serverClient) TestEmailAlertingSettings(ctx context.Context, in *TestEmailAlertingSettingsRequest, opts ...grpc.CallOption) (*TestEmailAlertingSettingsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(TestEmailAlertingSettingsResponse) - err := c.cc.Invoke(ctx, Server_TestEmailAlertingSettings_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_TestEmailAlertingSettings_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -149,8 +160,9 @@ func (c *serverClient) TestEmailAlertingSettings(ctx context.Context, in *TestEm } func (c *serverClient) AWSInstanceCheck(ctx context.Context, in *AWSInstanceCheckRequest, opts ...grpc.CallOption) (*AWSInstanceCheckResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AWSInstanceCheckResponse) - err := c.cc.Invoke(ctx, Server_AWSInstanceCheck_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Server_AWSInstanceCheck_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -160,6 +172,8 @@ func (c *serverClient) AWSInstanceCheck(ctx context.Context, in *AWSInstanceChec // ServerServer is the server API for Server service. // All implementations must embed UnimplementedServerServer // for forward compatibility +// +// Server service provides generic PMM Server public APIs. type ServerServer interface { // Version returns PMM Server versions. Version(context.Context, *VersionRequest) (*VersionResponse, error) diff --git a/api/uieventspb/server.pb.gw.go b/api/uieventspb/server.pb.gw.go index f11e823e3e..a0bdc6d93d 100644 --- a/api/uieventspb/server.pb.gw.go +++ b/api/uieventspb/server.pb.gw.go @@ -92,21 +92,21 @@ func RegisterUIEventsHandlerServer(ctx context.Context, mux *runtime.ServeMux, s // RegisterUIEventsHandlerFromEndpoint is same as RegisterUIEventsHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterUIEventsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/uieventspb/server_grpc.pb.go b/api/uieventspb/server_grpc.pb.go index 2a167dccb0..9bcc0a0b87 100644 --- a/api/uieventspb/server_grpc.pb.go +++ b/api/uieventspb/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: uieventspb/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( UIEvents_Store_FullMethodName = "/uievents.UIEvents/Store" @@ -26,6 +26,8 @@ const ( // UIEventsClient is the client API for UIEvents service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// UIEvents collects UI related events. type UIEventsClient interface { // Store persists received UI events for further processing. Store(ctx context.Context, in *StoreRequest, opts ...grpc.CallOption) (*StoreResponse, error) @@ -40,8 +42,9 @@ func NewUIEventsClient(cc grpc.ClientConnInterface) UIEventsClient { } func (c *uIEventsClient) Store(ctx context.Context, in *StoreRequest, opts ...grpc.CallOption) (*StoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StoreResponse) - err := c.cc.Invoke(ctx, UIEvents_Store_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, UIEvents_Store_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,6 +54,8 @@ func (c *uIEventsClient) Store(ctx context.Context, in *StoreRequest, opts ...gr // UIEventsServer is the server API for UIEvents service. // All implementations must embed UnimplementedUIEventsServer // for forward compatibility +// +// UIEvents collects UI related events. type UIEventsServer interface { // Store persists received UI events for further processing. Store(context.Context, *StoreRequest) (*StoreResponse, error) diff --git a/api/userpb/user.pb.gw.go b/api/userpb/user.pb.gw.go index 0260c29b7e..515226f98f 100644 --- a/api/userpb/user.pb.gw.go +++ b/api/userpb/user.pb.gw.go @@ -172,21 +172,21 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve // RegisterUserHandlerFromEndpoint is same as RegisterUserHandler but // automatically dials to "endpoint" and closes the connection when "ctx" gets done. func RegisterUserHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return err } defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) } }() }() diff --git a/api/userpb/user_grpc.pb.go b/api/userpb/user_grpc.pb.go index 3db7168728..8f23808bec 100644 --- a/api/userpb/user_grpc.pb.go +++ b/api/userpb/user_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.4.0 // - protoc (unknown) // source: userpb/user.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.62.0 or later. +const _ = grpc.SupportPackageIsVersion8 const ( User_GetUser_FullMethodName = "/user.User/GetUser" @@ -28,6 +28,8 @@ const ( // UserClient is the client API for User service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// UserService contains rpcs related to user data type UserClient interface { GetUser(ctx context.Context, in *UserDetailsRequest, opts ...grpc.CallOption) (*UserDetailsResponse, error) UpdateUser(ctx context.Context, in *UserUpdateRequest, opts ...grpc.CallOption) (*UserDetailsResponse, error) @@ -43,8 +45,9 @@ func NewUserClient(cc grpc.ClientConnInterface) UserClient { } func (c *userClient) GetUser(ctx context.Context, in *UserDetailsRequest, opts ...grpc.CallOption) (*UserDetailsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UserDetailsResponse) - err := c.cc.Invoke(ctx, User_GetUser_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, User_GetUser_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -52,8 +55,9 @@ func (c *userClient) GetUser(ctx context.Context, in *UserDetailsRequest, opts . } func (c *userClient) UpdateUser(ctx context.Context, in *UserUpdateRequest, opts ...grpc.CallOption) (*UserDetailsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UserDetailsResponse) - err := c.cc.Invoke(ctx, User_UpdateUser_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, User_UpdateUser_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -61,8 +65,9 @@ func (c *userClient) UpdateUser(ctx context.Context, in *UserUpdateRequest, opts } func (c *userClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts ...grpc.CallOption) (*ListUsersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListUsersResponse) - err := c.cc.Invoke(ctx, User_ListUsers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, User_ListUsers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -72,6 +77,8 @@ func (c *userClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts . // UserServer is the server API for User service. // All implementations must embed UnimplementedUserServer // for forward compatibility +// +// UserService contains rpcs related to user data type UserServer interface { GetUser(context.Context, *UserDetailsRequest) (*UserDetailsResponse, error) UpdateUser(context.Context, *UserUpdateRequest) (*UserDetailsResponse, error) diff --git a/descriptor.bin b/descriptor.bin index 2fba714eb24d29befc483a065ad66a03e26862b9..5d6deb6a9097661536c8c945d77e7aec35484b2b 100644 GIT binary patch delta 40537 zcmb7tcbrtkvOg!xIcLtyrr9MeX?97H5fdngNKjBg5hHqWfdN*5#a&SJUY$$Maliv8 zASftFk~(nBD2fCFAPNYIf^f+OkRbTJ)#(ho_xH!|ectCis;2wf)zwwi)zy90`5T*_ z`S|Kpv6kkXrKaoEXs+k29pAFKrEOjN@vXL|4M=Qh`*7e^W2~mHt=+Dfqpeu`;GH+> zYqxa1Pp?rwvq2}*sgqf^YtEp4gL?Fh4U82R_Ucg*D}Ji5SFB`h&3n#i`rNd&)$UE` zx%aslePRWJhZM(plnfa(sHk{wr3z8)s!+3riGubO5?$_ds(0YO-^+jQnl9Q4I`^#yaB)%ZA-!U~D`|;;w60MLflWh~|nW83SS^B?WzB3TC*L_^qI&)*{iQ=QRP=C{fV! zlGZWNqgUf9u4~=jzH7%04`u2R$2B{5>D)fk$TuA=Q%fxD^>TcIhWTYq=$t!Ti&Vou zBX;9KJsbBLG$=QN{?T^OAfcI(NDb$|cElm>;{{I@c^VS=*|(Bn1hOo1{YnO8=-&KyPFZRRej5u&^dEzXZ-)EoinF(?qoTK?aU)~ z{wX8TyZ0IMoaRoX zqrw@YeTs^sC4*wU3i~_*6N>hZ^(h$Ae{i&CtY5)Xg+;|B(fU1OXcMa+Er<$@xY4Hz zN}_!Vi%SMaeUEP(jdtr-SQ5qm#`^S$wd*yw@Tpk;XQBlIqxppc`xFi=92|=dDkvG8 z-`I7-Zh&NC!evTIhp5>V+~GPC9MtWvoGH;d(G+giWhg7cj3ytorR9T?e5u=-)D}J)ku$yXVqhUAI(1{rL>G`6egNFC% zl_iCS_f^dkh{1?)ziJpn!}$HGWe_dzS1sL$@qlXSqU8gsp^JtOpy4{Mm{7!cM6Z&& zREyr7VjiW;V#vUrMMDPmj`db{!#9!mV7cri{fdV4?;R}~*#8+f8iO0bgrY-A(4*%w zFuWms3kQ}&2lp!&9PI^*hz*6w4UP^jiVkFLi(^j?DJ+h`Se}XY>Q^wZZw!r#+^E>9 zV0!~&Ps_2D{e-j{Bz&6CRR|M%Bs14->grhJz+>eQ$nJQ$N%~_>6}N?JnwnlNViY9C zK7CX30-f0)v9RU^A-J9!APSl)h%gHv3g%T%IoGYvI^(CFiHlD+Y~E9K*3h}9>P+U` zGs0F5oi%jsS+$ybE$a-?Vu>C@uWuexopp4Msm^5Ou}D=RhmOv%8d3Ki))_?K#I~XL zHt(xC8|d6O#GC?Sk>&TzVirUcwXa>*eU^2G;Xj^u@R@%#e_VAo(fM)JnH=Krtf&~- zMCZqA)^@LFozZYWBK&Og_yE;80NWoBVrGr8$VmoNsVh1M(0M@p24t=H4GjnCjl@qD z+^{Z|Mgmn=T+|zR_S?VNFnroK2k~a4x#t+RjRp-+0fyLIZR8;f3EgzY0TWiCNTgc zNQ=l&M3Nej*}0N5h^$t_tq1?oBi1Ob+@gf_d^8?%4HM>Tj?x?o#ipsl(ah1BUWN4p zg<(MQVL%3mgupZ^NOT>o!RZ8vVMc54I*x=Nk^I&dKWab%DUmb?JT|Uj^>|-+AbyV4 zmL#CYYFE)}l2CfY9H+qwcv~G%ASD#66{JF<`Ha(G2%<5N#%Ztwjs$9grZ?a}#&rWw zpe2+6s0kWeg!hGWf~-%nzi&&F2J)s%=cY_o=83~SC)wSqnT9qk@598J2Q#3Q|X1F%zVmYR0X%U}+ zep9sUN_Ub>R1Uo%~vIL|>!q5H)2$Nv=BgARv2M4>e z>VqMs(yFHmS+Q8tHM5CoK#Bsx2c-p@uBGMsEr2;)t6AS?0CTzq*WsFm5HtAl$I0vh z00b>njj#q1KFD>8xCSy;u0H}BNVWcG`+}x75p5CLh?Gc(Z6K8;AwvKetuGq`>CqQ_ zsqBb3OVg!sAifbPp%CCeDxr`=fXvMkP&S}uX|-y*%PBO_CSc9g^p_LshAqpQtGN}$ za?!SD&cnJ_>V$t{fO)ZbBgP=^LoH?R0$WSHuE3g)5mFr3pA}!F;vD1uTQ`dtL z^VP(#5u+Y_)rSZ|pjZ7cgP065B0~j&GRXW|Fb*Aip7okmZm*_cyD&_0*w-|tnoCjN zAnh&D5^c_P>VDnB1dZ0q zG`GBa2TUF$4YVQ=8g*B@6;iK^i)pNodSwjsTcKrFW_HdP7-xlsRO49zga)eJ z9x+HHNNXEOG}sI z1!;Y*WI!8?v6_s|ph%k3S9ucWV3$;dg1FszP{L;ayra z9%Jz|WWB6MYtuD;c(wQwIMkHwPj(Y)2BcK1Ul6wvO-i%oLwQ`>(`b=upbid|QWu9u1-hR;ZzlEoQ2E-4V z9dhr5VnC9o{*>4>>Ar41N&PV{pnsD3BL=$tEcM4|&fxlE4D|S!^!Ky?2K`Io$;r=j z`$aSTW|X=7Ld|Gls2?imqDWx4%25D!OpKY*G=4M{9I2dn zG!-1WJf@lD6*z5$U}X9X^f;zv=O}TotjAM((3S^=-vj4jFl3K7W`NZ^fjmKB($)q> zn$JL&6Iy1L8U*HWGIh>4ClkY;vx6QdY0jVOLQU}NKhP!jEj`+;pl_qzvHpbvP=#3g z*3|2?eEi~T7>8#x&B}HgiLP$MJd+4dZ<2o|bsji6n`gA_@@`GhEEF-%B_5q#JAN(| z4F^$FmVhSL3wihXR0V}0I~cy~Ve~k!MSPW}Ma&DSrjv#qVEFn;LyrqurmzW8X?n!G zsF@X&2Gh|63?5O*DALj8qLx!ZiIovC|4QwVfgWJ^Ju=YaFX~ZO%r`S)UcyB3D@N}t z!4du8!oCj|^o_;_CjOl$pO0Vs8KFFgrkIiJ3V*$v=%1+FDGQ@qPHmcnrkDBTVcm$< z)-YWkr}H!xG};f-?J$nvWc^4;BIXF)teBgd*fyzhqV_Ebg zCg|dn0}_Ky(8VbSBwTocE^;AudYY)~JTQU+5=cTqstOuV6LlQeDKdft)I>e2q9g$| zQO~U+go5ake4!|91}TN2?PHRUL=kF|p2c@7PaP=tC(#|F>!L&^F}I=1&|Tm}fdaP7ZlXKSq% z`VbZ%7WxnrvKHzhJ2Z6*5DWGEn(j!h352V~iLG-+w_5BY*g#n9>yjeaVm(W)AtmRF zb(C-}a0G;}<%uaT{uN*DBRD`O&5+!R}q}FQVXVzM%4J4qpklN}(QY&J8sh9h2;`4=d;$P~h zD3YWWN&1zP6cq45a(s}G^eZVTNWgz3B?SriucV|FNxEGZ)d^5Q0x6M5((QVvCR_bD zerBy}@ze<WB|O0qlss zuoS?K$lzhI0Ct4z=4#jtF0hX4<$g^Jd97*uxbARowns2@ewR zC#2nggnTEY-Pok4lXB|-1tgFXiS%_+#;7=cX06560TNIr<9aLqv84iXT<3~W+d7|eaRfm^Fb^YJOc80X_tf-%m=4*-9hj~@X3IKp3<4m)ro)^elV>!#MM zbJUwwN4s@x-ipIk=5oWy<`)7k*}$4ar8m#ES|bGj4+5-_+6D;$)))~Ur9nb~H3p*e zuN0+ST8s5-?|7?3Yqj2oprv2$L(tN%HzK_DfG&VoZ=ejl*kBM?`;XRMeEW6n;g5U> zTJw*j8eC@Y9~qh4=RpGEBcl$F7a*aAkBoZ!zzz~>_{gZ=0@np3BHDhExU{Z8{1YFZ zj_sfL@MH&{7@52PfF9JvXxfY|8%V%^VqDXXonDA!KVRF{{gO`rcJh^>-< z3ZNP8sQbs*ePc-smyL8gJvd$z9b7ylMputTgXsR6{&ios4vm`Q;xX3i3AzNQ%TIcU z&=5D>{R(^ai#}c0zd!mH7d=ha*|DL$VuR>4MYOOF0G^`P6#@by3@Rw5ThBhlMFY?! zhQ7GhEGl-R1tpYY#qk?PEQpp2E@orV3l0>|qusi+>vChXSO0=yT*YIIf?k7hd;T=t zm_n%DCDEcjm=7992jf);W@f825*^>UBWs6YXS?li_5+*Tac5%DJ00?O8fK6k8W|T3veO8sxwnaC7<*SD?cI*~ zy9{wGr)G4N+-0C_A)A5zHZkJrEX<$JZWv|9(Aw+=rmU&~bld=rDBLj}&wmI_^gb z8$urUg|rEggyhP=k0%UWE*sqofRxIhBhv{nP8`C}ndyX)$u}C180ds?RehmJhha5n zDM<`;!f1Gt7zih-lfKsJLD>ZCs*I#HdB`!fn+pp*WLf*9x|&8Pv2 zlP<c5e9fA1-Eg)}I+2&(8WYqvP3G1J5RCvqUeBs~{ zIc=Dk_-bQ^Tho9t3@2bQcp6ZKnIb=Obt?W^GCg8x5lgk9$R39!Aa8pfD<8bv%z)dxA z5Z}z z7a$;kGna7w#c*I$(%wSPs-qvyPMW(o2aM|qwNPfEj68^c!#O(t4CprFWCVN3fjt%VBOy$^= zj-`_5$Vj@53`MM^X1NO{zm6pDS!y~J-0uRIREQ;i@2y?3ZI9mlJvkF_A>DhXa5<3Z z^q!f?4>_Wbi9-awp_d#2bLLBi$UGaI#ZkI@>2D4pDp*#Fgu?i+l3$|g7X_$2-Y zGm~F|qX#s#!EDBFK0yM1gL!RxF`Nec4d!+2+>;z1bKR7vv;A~@laEh(;3glRWY}bi zs1#zU<|Y#*JuW|`nw!iTO(hBZO=h$S(|QP6-)!pHEGUL3oNhKlVcwF3Q=g0nX}uUt z5i~?gwAoDOrA<(!NY)m=^0th^oeYzRoxV1kJ}G~F*7NrlzOB>n zXMeKPA(ezojI1F#989eKHm~tPzXRn{sU$iuavx>bAyyAq^W6{HBd2{C=^%F6myr-o zo0&Y8qX%R>ZMNWv4M;58X|rV)mckRses0y7d3}g1;CJTrZSilY;&*=-%7K2DUXNcf z%}Up%v(ni?0^}??J6$N!26jHt zX73}N&P!hpF<%GCeH|p!bDn&iTsDm3zFBU8#a)&*qrXfi$DK}^3sXutBCz)G-h>t( z5fJMOF60>z5M_Ok=rkfAit!*J&xiny_hcI&p}P@*D*SK+5+*+)P?bOZ2~#pVGN4Zj z7`!#Ru^bt|okgJp<9<)O zcXGgVSPD!nDYu;*fG^Rt7BN6i4TzgUMx!Sf{N9f-SPP`NJGdV3`|P!~e*8vjHQQGM zMV8qC5xK&wL@_&%$?qgULJhM?4Ra{^g=x&iYp?(5B|W~_hoB{291y!W+F+c;0lb0Z zs-v^#;s9!kf`ld)2deRNB^pDMiv!iK#;kx31GZiZ=&O__S)2~oY3v>gKa(bxz&dji z_Z+I7kALwiIra-=TM|I-UytdBT|6yM%sSK{e|c&%QseT}W}sIl4jpPxcV%ibn(0bv zHrr(r$0Rld^ai=(-L*IT^10E!f5EfQpg7N-?(>5o&T%+umJFuDY77thi*Y)`L)=1~ z8rhkXo#)&rer`mkJTU2OO8>+e6Gz?wg*c(&oF^XR;tWg2O&kE*CVCvLkmsWM&(DBE z1|xpSp`T{&e)|*@_D{Tgw0<0iLD8!NSQvv#fUi90z|0%tvj=)(jVXeSaK3&PKw>~XOB`o$2B&xW^>CWy3rpd%J9MOI7}h4=uqYgE z3W%GkFpHm?0=TIXooP!6RIV>c+EM~||3%NoVRnGtmY8&6b@y#PKE=LmK0d|1Z2@u5 zfgV_}Z2_cL9G_y}wty%?;aA{q3!q4JgyREhM`HHLqYv-!@u>*4!^fwfw<937#4rnb zI|5=$1PS~d0kI{51pbZyw#3#D0H&ho^A3%U2JD!(D-je76bf z7T|XUa(My)67ahMRqFHFW0-tsPvV)=v;VQj$EPFV9v`2MgnI&+(hKQGxF>*9C07p} z3HJo@c>)1E0u0n_=5A!_q35PQ1oWR1gMR%a{zJg#ce`QSSi&2B44C|p5Th{)82t4D zW5A7m4B)9f4_YiX97yd!4i1LjgZ%SAY7fvq1x)_lDs0Aact;m-`1=bQgnacUvL#9l z!jzpH3WztWpkO;7rB%|)wnG8&IuySG>rkMIG!xnq4+ZMhb64mD1tYSK1@yB4Bljgd zVxW@G+GfA!Y4KwLyP}v99-86&95AbjK+WHwfx&OQfx)iCj|Xr?%$0zrMmPxjQv%Hy zazs2!ussXn5T zyOu$&H`0Q#chch%bSHNnYncsmKi1&!G5OUCwq9)0tm-Si!%F!K3&rZf{x&tVzc-%_eUV3bp>Vs`O;36Cr)veM*QA7oJMu z_hI5o30Y>uM~n`R4Mk?uhp&^I5@yFfrIKR%Mo~DJe~mYwp!f+apG3qzVF)70H{y8E z1nDudFFl>MrdrC+&;rs=wQ_vjQ`$V0bdPcqS3VdsEwf(kiqeLeqJ8`mcL4p1@KT^S zD$FweKkPEf=HiyJ$Nu;}u&hxs8xxlZ|Jwpx49e~q{-+7Xl|504h$;ALpsUE4sf$RP z)J&_q*yvz!bk3e>p}@|=4a$+8C7%9=b*f2%l;I`}G|y7uhK_-rm0OSBnWHtJJgZ@2 zc1{iB8G|{;!a4QM)>M?7`zaTL`3=EmXG?3(wzh`^%OnaD`d*B$Y%bM$&0HEn>Z5m0K=O%QU}NES#39_?JfE zZ&4!eLhDwGq(;DlMi$8c3=%yS$p8!z8d+rFI+V`;X=KQ+lU_Tu!M~x|*L@uF+1I6J z@hfX8Gz$_quS?BRWq29WY$AR!aQiZ;*fgeCkX*4KF|%c)SejXS#CpRjw^huH%D`_} zxaoZif~C{U)+DxG?AdCKln6Wwv&IsqUy$gr#>(Ut0}>LgvG5k|5aq$?G_`e!C;mG8 z&^jN1cFc7?0?lciC5{Q`0fcpyI3|EZVzSN>#{`f_ZPr;hCQwZ%9Y*n=#Ij3yjsGLp zKAo+7Dv8N5auemJ>6G(rSbO18C$0MiUm}Vv8+?gK>J64C3ZV-m+F-Td_rxF}(FW_L z&Mes=lKtHBE@lns)OaJTp+#H#6KlEAAB9|ZqqGV9icvO7n*d22rA?$$_}j#70{>=& za9WVS*(7ZOBycuKZvzROP0}W)%D;u#MCWw!wk^^qK%pB*ZWJJ)m@U#MG9uO&R=GpM zD5$Fch2>Oo|D-j|AgkEn-JxmcAKoD+2PQ_^Ayo(xeRjx21qq>c$VCMS74DFW3KEOD zgBF$iDTB1Xi)j%5#LRd3gOE4uk{ZOX)KY2?BnH_<8hnGxi5cznat&=&!CoJNmU^!* zCk?jO5{JADw$ytqJvH@Us6eTjqA`Wniz`q%xaL6JKNQ=O) znA8Dj5g>tcKw1Rd*c{{*kwF%5P+9~ibOXsP0wnZzP+CN0#5!!1`%72^UCbP|P~oQq z%Orz1%F@ub_%|dwDrX21k{y*R1`-{Q$`u0%$&OMYx|_;vnY0*Zl3xY1y;}D(J_f~$ zGjhq$h+0Y00tt*Wmbm`|i6uK@iTgj0Sh6z~?*B-KndJTFm=3+W9nHGwoIePADJ4~i zh8X0WR3S(Va!#s{ZmBMk3LoioQED%fX%8gV9!LyzQED$MVqLb%&9iy2mAxmoobv82 znspYbZ=9XHA*g+;^%!T1MFktfjI%|c1qq49*&R2T_BdNi8ziPZ&c?J) zlPhFVxplIwPq)1RA?;+l$+kF);|CgjiY?CKjK(-%@Pi*?U?x*+9C~XZt0D#(OtroF zVXbz}skZpqhVjvGs$HR?dxK~QdYbJW4r|Th(`@na0yU&%m}axjLumdue zIkwoaL9&h_6{35}xwf}DUF+Utt}W7_EM`a`xgmjs%yVt*))NeD*O7>|*e>^<lV8*EhK;NKw&?mF33G0J9X2k&L z8#V$qWvUSpbCs?02YR3Y2$EX?Na%Hy9m-~b6eO@#+4z8u;wnfWt+G)uXCDGYSOk32 ztCg+Ii@)h(kVJ3VqUs)Dmh`4A?#@91<4qgix^Zcs_P1Y&^x_3Z&~RkP?b2x$AtPs7AHU&XP+* z*H`Pv7`RYanf11Kff~{2<6@8!=~}AVuJ@&);?;UP!po>=4XE`to}lg}>&}i?8|`wR zI?0mq+HNhr5k*#3@yVtD_NlFJvH5)wXuy1G+x+_@kYqfc*`m0|XfyzWSG*Vl3;LNY zDqh4ugH5*hc8JlO!7Z2=IE7M^j7(ndBNbH zC^7~xH&f80%2qa}VQsbbZ*3Fnf=_9{fI7k9>I4a8Z?(lsRFHt%YKzZ|L1MVAHcr49 z@CuN4*Sytk_${BF!Whxn(AyVEZ^QuNm$q5m&2;0uONEH_wQcUO1I%x! zQw6lyZd-K}BL^ruZL>W(Ic%65l4Pe{xoHXq6WwVyYwLFc$~RYZA`kq=?-VcR?I62tJ3}lht6%N$O@&u=z=-pj zY&PAY0dbElYO=%t#9mumr7@Z__}wF8pvPWY+&vNl^!K*--i*=c0R}I5Fa~RZdrfW$ zS|o1mxAh~;6lgVRTLeQ|0&R=?WkAHQfZI8 zj@jl_d=R4101Uoku?7G9|ZIXKOpdn7BFN$ z;1?|?cnBf)hSaBQ{k&RJ%0a-8Yf3rDDObzQ1o!tAhzoj{dSyf8dMCE{-nwi^?yKz>sUoFODwxYl?d!)YzG8$H_c_Nvi;k z^ldO$6H#qK3oPQ_G=>-xn-yqS3DX~bCeyo;0RYC}u8w&RbMy%g1$}Z}0t6#2&4O~u zVUDQM;b*`NbHtze0134YbMP${cXd2F2U_C^&?1uu56@v0!yOg$@sJ+^j&S5=i3Vg9 zBOMm>$taa7PZm{p8(l-Cjil8kdy&?gQiI?jR9a#I2aDB~R! zzKMZO*FpzxO1Oto2E5Qg+RB#)ZyA7AXN6jx04>ie{_+Ia^1ONl0|G9h z<>9V@7MQ|ff4u@u91HfkV=h$-7GMju#9y!gTd-x0*+p!f#DHka{PiLZfR{PV?ouO> z6E1hmTm4Stgv+n!1P6$N)$A7bMllPY5aZ@6eI!3&$=Mdb+uETu1*mL;{nVCy>mA}uUQm~!JrIzjbpwI zrLbg^v4FA`&lFNP0D9B0a#J{%;aiSX%?CnSm~_l{Qh{j0U#Ea*d=?1SJ607RiFEZJ z#}W%iZ7|roY7H0zIPW?+QNI&!lYd(&DZUi*N`uCMYgiUV{ zKA?%H>C*=Ap<_kyM;@5M%}*R}S5(Vuj=rDxx~9p2l)9z}_X+9xM$v1dqi5$gqHl@3 z16#D5&OL|p={cmZfA1#j_7qg3SP8#w$)+a?8y$Qe%e;a4Ybq&!U9RIymxD8iQ|^~! zy*#afmc7++a@|!_vB;r{#n+DheX?)9)S zj<|_s49sr3Bd+fm16tWmF~76GM1yY}^XlB2@p&Wro1rD_3nlSKQvGT1az$LUifc&%r5qd}z8sW=f8(U_SjJkgVJbCb&c+y!;~S?*Q}=Em2ek8@V>ZaW z<$ub7k>mVtPS$1jgW_tscMKnI{XfN`G!mG;Sd>V9mns&8!|$9*{K!UPQ7-wNgU{(` z3BiDa@1gAtD-dTimSB$~k{J4(T=hx@Cc+qE(dfy>9tZm$1vKhG26rWc^*{?TCSF49 zrCnG6(DxvFA@uz$ROFBm>~r+1d24nM2FU|7e#8v-IpPCzkQi&9Q;Yv`E|8erK2rK{ zs(<@UeYH1@|9q=J&?G8BNuLq(HHFC0fMFb=u4mcI@pK=LAs$9B;$yK+`B|g1E^) z@11I*eH*|Bc(H=y=BC;*y%2nEI;dYrVL##8Cpy~o)FcAE~ zM+pjy<3Y2T0;Q}G3?Gz=e8*EkDRVp?%%Sw3uLk9g$Ae9;rjHkN6FJ21LHwmEYI`$&4?30Ip)kV=WFTj~*IQ}N{^P7PLNH;3XM-XQ0*S%S1}pIUF_0MQ zY!KfqQ%+TZjPTE(o^ZJlf=25C>FfIknTDh&G9T7eU)3ajw3N=O#fxM}$wHEF1 zGuJEukRe`@nq>?Iki#DgG6saW6vTr;dfY<{j5y5o(r?j*b{OWSK#?^KbA=DFhJYI8 zia#I07=Rk)qF}vOss@bFuDA6T?fctDr(%&6jZVcPD;n*JzaT+aWJIG~WVVlUv8Y%& z-ZiJW-sv`4znt-IFw5BD3f33zkW7@VoDcXL~4DiV_PlxV_W^L7tQ~Svs~|ks&3`vnjiF+ zChF%;CGYNUyt3^YnqfOU2wv$>lD|EOV?+uIqU{Lc7}pRc+>UN|cLnu&o>pw-d8fZH z%w+8w&461sfSZ5Qm#9hC zsxMGE52))1bwYb3tIkp1ajhCcR^kBlUDs;tt!!_O6S5i-bpw77sGJAXj|ugL4hq%a zsGqt>mbnIq1Juu4tCrWjgE>v0ni6#zCLvHc52#-d>Md&rqtw7~G zpdKXDM{ifC7Dqjd`3h9x0QHD#HT8zwZoVi`ZHao)wQdlooCnlXgj%JeLbW;SZ)AjA zR^kBlch|bcYu!<4z>%oueGPCPP%jYbH$JMvQ7`!#AP!J3lLpRrH0KIggA#RQ$Z9TR zsoJpCv&zybtUSQkafL4WmP)V8|Wje1RI0sB=PA3xUdcKz)%=v+q=>A&xpPWYrU>!~yF3kaeAR z!<|ajutZ(t%gT8`T}-H7`lw-!y2O{2I6z%Wvi^Rjk~K}DuJUE&JfN;7)MM>sxo3uLupKOVoElRx6 z0d+f}{_LY>a@21^2t?clhy&DJ5XrOeRvO5XsNee<;5?x2Bh)2#D_OHR>W{t#hy&CE zq=9WdDq=9-3l96JoCnk+gj#fuLd8}^QTv#WN*tgbC)C6}O0U@x^*3LyoCnn33H7F~ z3N@Rfp7r%g9H9P5dhOBGOp4XYk*JqKRy(0r&I9UYLM?xhQ32 zx7Xrc^F4uDUZRc-TljD4u-%aJfI2P=)H6P6d5$_UY_V$|>|4YE>ZGuBuUEO7`IbPf zAW;)xtGz(wJfO}X)NS3AtQ9z_7q)H^vJwZVv%=P0-ml%vcLZuhi8?QA-7Zi$52*7A zb=iFiwIWAd=xcyDKz)TY@a28x6oFbvqAm%;VYmi352#BC_0jtkY9)@kB5dUeS&0MG zH^NpUZ`l26hp8-4-wdlAhVy{>7NM4ZK%rLVsO!RNhanD7*N3sgw0Jh&g`<8ER`HcM zK>ad|n3a6cd{yYRszm*U7MAOk^MJaGP#=Csp;qOnyTevPp;zJnbx+u8?mhpIxm2K5 zlc+z^!g5s31L^@nt^2S-t;SIghOH(7l{i2>1d+Tu9yW&y)anxT7)^_#avo5R6YAE7 z%~}$qI)^s0dW9(I&9VKY4JZa<8G^wy!fzLBcQ)pK3VlKb6K!+R!Xjk$24tG zkW6LaKRVIQ%E0I$mS$393gN#U(jHcc@5)nn_|JN@uiDi6w9p(?MwUr zuDqX6d-PYRB3C|OsOTVa<)5GvZ$$rq%xYDxe8jM12Cj1D{}O7&0SZ;*%Et|re~MiB z1Saa;G$0`JdX+2xZdgr)tSVRjgHX5ls3KSX(@+_>$d%6-Rs-+U0HpzyD_=HLBvZNa z--Pg6Y(VA8Gw_4ZfXbC;66ziwRpiREOmzwqx$(v<;qJq+IYDp!8X*MQ2E-zL!w@MFjUC-+DBC(XFH*`N+?tja=!6V zMabEuqfAkdu;dn}Le4%NyCIiVg`E9_>dvrgU&nP#0R~?X9?-1{LRJxke$uU)DIDxh zKkHUKukj4)4WSbigpTSe467h?jKvb`X z3QK?D2QeQNmd?>Qi)X6&P!Pg67yWTWp!!Q!K~)5*OFDw;=9$(?F^&pUBmHef1*%aL zQii^u#-Xr;amE@-Zz6P!GgP`HLf3f1YUsW6g7t|QM}@9whH^0#x~9`OJv=oI1uBd) z(;r6!vll2vbG?aR<{8!v-U!c>lQ(&VvUs7Ev7X(e?VC>ZRRrwf;5Cw-6s_-a8h#Ri-C`5=>-l#(gRe99+KC1F4M2!ru*)IxJ_|K0%s_-Ag zj8@+LzgRLYQ~q;US9Y!Z=Ln&m^-+blAWX35p@_V~TaII?z1+jrdZAb4Ex+kjTVYws zTYe|h?T3}D!Z*(9R?91W1EJ$q@9be~nLt&(fgm6YBFZ-|6Y9%H6smBIVFvbDZdt-L zh8s8rd~(E+o2T075f;i6#Sj=Wyk7rRsA8j^NEsYQ6&w8|jN^^@ul0hERc-VM!@5Rj zKyCCh2({`_g(^0B#DY>A{VW5kb<0sp78}(@k4PX3qiUm{PpEr*RI$+`6i5w-js6wG zy4|~c)LJBDRU7>hL;054=$8`e!edHSvCpsYBbg|Qy}^(u;D>kX7y#vivv30YN9>;vSMLa(YQhVw#(mwv*kB|$`0>|;MZ zimKQr$W>K*+2l8>ISB5C@p>yuAju$JVC5ml6YRV#aSut>v*mCM_;WR+Ni z$=5Y?#t`SBC7N|ZvQ>Her;vW)p=4g3{Z)D}(UKpGwP?BDkZ4c z{27h9p_5(a9%7qTHspRmjl0}ouMqQ5k#wiuSVhursPV-+Yi%EGa^ItHK7)s8mA#ge?E!67*h`KQmof0HmjWu<>izTeeu;_9zAOrCng z?oht;F#kj;q|`9~!Z6ns+cTxRsqJmJzc6Zh8<9H4OZD8E-mquw?BsuoZG3{VBscl; zv-Y#0(t~z~u1XF12nMY@+8!sG$}x?eum#>!4r%m4(*>jLw`Ea4F0b)8%DcR+TwUV{ z6a^j_WADx~zkkxr1uQe4erP$_nYTS358jx@1ft_0C zZQj^z3PaiIZhvKzt?nU=%3s(rk}6aEQB&nFWvU0L@!BtJxkae0_b@&^6jM=K?-6R; z^-I-Q?WiaH#%f1BMU8*`(q1X^Ewxjg@h7f!%Cl&leEBQ8mSrZJNMqW&%Rb}iuT=9U zR0vi{p7_CDSjM9MQP!e*VBE>a?0=WGs2J9_ltuMH)3oFEXwg&|RDWfBa%GGGXgdA4 zJw-H?D`1qUrg8y{!Dt#iVS7!*aB=~RXR+&Y38emwf2Kr=Pm>>=ut%D~^%?XRR?3xY zt*TZPyj9i0A@BQV?TX1czuC9gawalj8#f`R;?UA~jg~3UYX>F|owsM@=+oLK_UyUO&Ww;T0S%f@MWXjkV!G68P%WuQp3iBj@+6Yy^BRs1UpI7K6R677|JKw^y>j(`Q$qT5BZVrG z=MlQ9l#1keq>ekE7aKX-1gZ)N3543Wv7-_Wkv&h=RY^~rET`yJEIFaE zvp7Tl^6um{H#;*T!PO0T!tpvK9M^kkzdIF^)$Vbw&k{pR&%u9vS0xh4^0DC|(DiiW z(OVhxSU=t>gC2**FZ6QcZLTuYDSo(>Q3U@rRshfI<;d8qZ0!Z)OhN(5);wz5ytg9{ zFv?)&YU)s+3}zlR{;s#PM&9=;J3ulg@6(hWP%@`7lv5$s`|CZYW^#SZ>8fj|lHq<% zC!In&lkFx#tWWf{8(_#JVCdoZdJDtjxR`evzYAvQH0q|eah14}CIr2G# zQuGXeRg|J3EJesU9#p#=& ze{pj%KF|5OOsaqgC=X?7CWwK^J>PK>LO3-O#6YiXel^oc@J97t`V%Mm0rSsp#D}$ zCdwG!i3ZD@L1OACCRfm)jInKAaFjrm3uyF5iJ7Cy^g+~8E%qV%cqMyrKd{h#Y5w=@YpVg)bd^5uVs za@6|XW1j{?-eVnuZIiEGA8cc>)hVY3`Ey320bVoGItmU3X=tV;kF*RnDz3#T^YIC`c_jSPI@r;dADHOH2uR?$@HGV4pp*vsz*sR z(#6lT&j0Z4eJ)s6IJAsGCh}r=Q>)@M4xSm_GtUJV3k*u3f$7`6@Y+2eTrMy~dc2!3PWc$pf?VkKK9&DExoOBc4!hT~FBwj_ixt|mAnl`mV$@tXZyh>Lpa1#w$b%~n1 zQXrHiADb!#vQzr4OM($s%I4DGw?Yneb^ykzWeP*-54w^VN`Jo)#;#>b4mv5o7><)1|5_fbBM;;<%HTin zt3YI!G3of8T(~?qQP&q#O*UN_ToefYmdTyzKJH9(CQW9)6Q%X zx%1uNLqUCR-DHzbgV$xpQ~efEaZp)TeiBbq@aYe`YK@pB=2I3#vBk}+Vx+{&!KIyi zh&9)bL&I-!D-9?Zh(8=Y0MGlAb9M)dg4(5|`*ZMx?9%#qlAY~R-)kGi(9is{Wn$kD z^{`r;z@M___+xHMettGMG!WdH!z}Hl*|1&`BRMnT9*B6X`;j;S*n|jW=T1lR`DLJGn{!_@>56PG7 zxaT6J1s_<}a*HsG*TO9w@{8582(dCH)}MaJf2n?QLkm~4gVU<=rFldx%|pp9ZQL4V zRMxHRes~{79?-eW$PcR5T4Lmftl#{R-@Gk3tF!xQSU=b(`B-;%RGHHml1lk9Oa(00Tb64;VF=Sg>1=_DA5W-XCU$^|m#5bD?`U3Im~SIESvwvwpK5C=E< zIMdcuYjmt>GWn$2BN!ZBoo@v5JT2XAK$Z0J$sYf77dWL?t#euL?t-EJ9#Pudy26F8 zFt>Yg^Il`5`&?;rdsrdL*%;k{_~J-~D6H)t3XxC6=z(Yd@A!yv4?sRClL@&67=3|w z!zhJFy9iw3afL_>xWp6qJmG;+Zd}MHcLcbKbP2g3AmhX#&PSv@1&B{6k01sRpT;|Y zGo#$+1)|&@jOUfx%H6?;1F?9tG7M3jLfM3UgN$g&t5YU!3G%!bM!T}!q0SlOHB7wJ zIb#ADM$<70RTQUSne0Pipo-!Y?6Q;BZHy}mBdR!sDvI0>J-Wdt(CcLs^jLfx*ZNI20 zoxwzTBg6aW1_dj;0p;^jwc2+y>s8I0zrmGvLCPII@>Q#j-5UtD>Bma7!W~dMlByN% zfFek1uiMA&ZXv942i%d$1yklsNS_@}`XmUFX$!BJ^!(C&++XrKVXpX=WmoJo7~8Lqj{5e7h(#PSdt0 zZ+SA5QRZx(rec@egN$_a?OYtXO4DB)m>gOX%E$>0@4z>JU-?M@cggI2q(buRF`+7D zFf-K=T482E1;@sQCJ510Hc=55a;36~N@zM{TxhCjDy=~y_gl2@lFJ$<#c(#&723O zzzW^^K=Z~~VOhbGYizEiCx%=yxyUA-Zz0~gWu0z4>pf_Pa#Ph8T?^Q?1 zD&o>MUG1l0m;M3|B)v^eSeB!uk>NjDkH6SaYL~|IEqpQ(RHz~>edo(6!qRSfDK#t@ zmJfoZJ(@pIQ;sSP()^K7@z=iPii@a(H=T0t7n}4!-D=^rbi=aFE=|`wN=v{|rR|#R zmFE{es<=VID^K=kPY~NXaVRU!B+0 zC7O7DbwRft^!9|pGX$!7fAw#ALC?r{NchV#1-0g7!*L4?^hKp`>9bu+$aF;(+{(IL4fA_W@_eQ6NK-!) z^5WIPPx(1XNUxHTlZ1k~$v>)vryG&fJpkEelV}rfR9?8$LGNlvcg2{^tQ);WdExFN zFmZQAZhC`NzI14Aj%obuBXS2vWRtl(_itQ-xAtn}haVCGN$)mpiC*VDoga?UA4iZG R1?0RH8Klp^$ZdTs{2$$ESVjN< delta 24593 zcmZu(d3;nw*3H|O?u4Y1u!OBiSY#0pWdxN`WKnTsRZwsXp^<1vFbSfLLj$r42t1$w z8BjqpA^{}A0~G-k6j2Eo&g{&s`h@_IXK z)QC|JJrXO9l@=B}R2D0JqOc%VR<~7Dy2`vk8=hZO7V95DmZ~YeW3tjby+u{1-z7<| zw5zlMj_i!>m@vmw8el;`}IpBL_L#)?Oey!)w9vB+Gf>Cn5S z7S2;cTh!~HT^bt&w%D+qRJ2ENLCLVf;zuG+I$MTzM^UvPFVa74boua31M`athvk_NBs57}Bn%TeB$XHof{v)wO(Px~k1vg38I=>ZM>-=Td6{(wZZLDp!X{){a z^zM-^MQmFi*rWd)J?~4Goo8Y%=IZ7NBmJb&N;gj$>8I%b&-G59-Mg1=es83oFmivF zoezfptWJ^ax=#8db)CTjJ38ME=~PuUVyrBmlALQFYvq(a*1>Tfn;wWI+~$rIB;6J%S}Qe-KjbYK4V7^#;;DLLH^+Zu^wpv>BK zh-U)mA=mLfQIQ^rj52*g#x)YpsYH}sj`mb#R6(v@a++60L9SjI+4etpCN-k;c7A>8 z?{O8Gddt~fCKZ`_*RAK(sYR4Na*p>&L&iRdj2bfbNo3R`N?$qG%cvt`U%8%-kg;!r zCLW^^QTin^8pznAUm~Z0oc$6x&4|)Jk<&!Z{)vnxGWJKtcD4-d)qyEbI+17Er42Oe z+nsGymE@F&GRW!k%#ED}$u_A$BD7^tD8onK8x*PSBUo%uy&St0FN{z3I`2KxrqjKN z!V(JKn;W55y7*-`k*}eH||h&4xJ5|M8bjLlT8$6dsZ&Og%Rw(!i@(M&Tii zqjo=D7~lbC-aiI(dLU6)LE#5N+#^sIb?5^b+|Gn3f3p_$)4VV`^kJv**k?LDoG7fK z@WYA1)X@)TM7^3-6n;3bnf(`D7#RzkePcVt3lfDj^l3qecRuQ(&M&Cn!Yizya6zlq z)Tj7{jKk!sy-zyy7?vQ>>079g{|zL=8eiojkPK_x#v_4a#N@Vd@0$UZSc1g>ODxpH z{|1&=Zc875CD!I@j|EOMTyE=qGC?vtL1Kbrc&M@e4J5;(K8XpE;Y8AhH^_=8Bjh|U zrv;V~2^I@1BSOC8SYR1Z$8VkmmJv;I?Vm6VVHP{06g&5htLa>vC~c#3ame=^8>NeL zT6y)@C|!JYTl*DJIuudLohjohI+Z6%htNyq2}cT{ba|w%S2~2!<@FodSM#dF5oL_? z$b@Eb;rn4UVN8N13?;^dB3{8TXvSpv-5dtZn1+q*t1zad zZQ}_RsxR*O19E~T4u1%9Rg{Q2UXokeshCLcN#)S?p-vFv#QTc*XuMRvxqxvRqrfex zA=E0AogiVXh|H>hK9vfp2@*z&_Z3tVBn%f1f@y-(x{aMiOiD^bpD4-GBt?8yU`ur( zmLGYbBvH>KNe$bzY(sq0NRS!{1Sma8%B&j*P}?M_euD%ZGE8>< znAj*jIhhC(qdGa62)zLT)*`2r?!#f<6^yG{A&XSO@`gns`hG zm}W^$o7t;qE}&UocO-d%q~yFHIr~>;I+c^13`er-c)ddlo;nYm-KhJ#z><8;Q|AS} z0|Dxp7j!cOsA*o%%~;JM>U?x_-8hm^d44h-b@u#ZI_m8CL1*)|5CU|z=od4hGD&XZ zwF=WQLEi+Jj{!q<{jcC+QoR-)%)*omj5X$2ZUfnhsEeHkr%t+eaX?`~p~VuW6VV@- zjR7Nm_h32(%xwx~WUO}jKc$p^OA=-VMTJGxe@bRUo926kthY>JePyXv0RYro=GOrT zHJAB=5)dVqNsX`NRRW@pWzt_d^FgW5pnOS^H+q8-7`b1P>}>l^I6olOwA?u{?XEkP z`-bIGv}3t%SS~=hAwz|v=H@)=-11yDYiVm?XW8_DJs=YU zi3(AFRY<9s2^Q+F3Ms2$AOLNJ6m4QdNueM{=PKuh=a%2ODwzpe73 zR2PlNRpdy!eI^LrkkrOGn#Qwpc2V8P#l+n&jEH5RVEs zd|#43bWS~gbH@9UQP=K9y{mHf+wR;jyT`rTCAF4lH%U?Nb}5o6w1NQSJ0#Wf8^S{1 zS&9TGu|vv;*fWG-Q2i&8+#_eKbN2bh&ZXIp4h9qhU6B>2{)rT7;HggC{E5_1Ou+cc z%VGi+_ETV?Po%cpeTZ4~6RBM{doYb!^z&!Z{BhF2YZVP6=`$%+%pO1>1r##@AoTl8 z%C2i)i=nSZ^nFsw+s-|6JG9>?nGN_@Rmn*ECHW_BtOA2#zhs2$0WcOIjnxB=JNKTu z5BSF7Qcxf8jYR?!`@%OC$3h^C#RVww1sQ9MM-2R>^RV;O-Cs&-kPU}8^-Ib|3ni6< zVZM^oEZ$8VgBSwQZ(M*9Uy&+4F^0zx5Z~cEF|U36NHRG#bLx>~a+va{q-H0`vA-ul zdLTfFqf%y8LLKztH_0Vv^@AWNp`*k%i4sL<0XpwntRe|cTIL`~4Fo9it(2aTs06)# zEV<1%_mLoIGmd@`pv^mE&rBH0C#&Ynzg@~bncQLv8BalnIvr;6mUus1C zG1*U2Q38U%7^x`nqm=GBKpgfT)$wNAoZX($4Lm@>%&(op1_lvO*SR;`G7KDk6K zlz<>8Q41x`Q;8N{d($K81vDhLPV}BK?C%E`J~BA}k!Y;gDOs4Ei!VWo(oysRwa71u z$*bBKvangt4AfGcoHYYkt3~7C%9xJz8cF^=G1O>2sgaB@4&2l?eEV`qaxxaR9(XD6 z7l=V~Ny_${$9E@}gXRH)2m;^3AV7)BRN@m_GKd<2-y~=5qEF+$C1(_JWTc&nN@IPT zj6(}eLO>WufMNmz#9$dGd)o{^R60(^vBk@baXL=+_B?bHQpd}(nCyVS1V~JAVx}c| zyo@8cC`qYkO~xN$;_(GOFBz8%?v1L z>75yvh8EtLa>TbIExR-2Mvd*UoB?^~III6TuFIT&KqFy5K-1718G8U>AH*2|v2M>1 zIzVAo_1Mx(sS67zbWpH>g61VAd%HkY)l-RCH_*tV1nVLKnI$(UJC3$d)b%dMihD>6)ow&r0U?mnn+oDWV=2; zS|SsfVXv$;)3I0Cnz_y+8sNpw_*z7f2uhGVF6ku58q8 zUosI*jQf&_$PD{rFOa~?foLDubR`W#ou;&d&hC|~ZaNqkfM&FVvbWVl7H}Mt8;Zyc zAQh3@wzG>k0orod+3{Whe^vYV zH?k=Pw?XFm*7q79R01eE2oUt&`t*RH|JL^!K+u2ddyPScI_9q=Kwtv&naEzp{3$Dr z&pfxck^qA0n7@)3 zeo{_3D@!@GlVgI;^Oc$Lld?&HP*pX_2B&-*0HHcSQ5_&OKjqs15Y?UXZ2*YsPWd)4 zNte^I7eN356QIvTBj>anii(kg&pdY%5kde2)oB?K1fdjca7OmxF($VGpif0MI3s)U z7<>iO8QF`+0D|d^jCf3Y*uaYD=jD_?V1wL0+2F<1jfb3<5mTV*EV97`-v&U?98gpT z2pe4RZ2*YsF8DS8M0FR)28=x2B4ui1CuhyVcuhb-4p0+NP}^%{+$+#nM-foe(3&Nb zLEA6NxJ(frss90eW$18!F<_$VF3ORHer7OTlo28TQ-3f6UdDpseWhS1pif2P@3QR0 zbdVQRm*sk*g8+Hiyry;!-YgWoB0JBn?K$L1z(51=iod{E{Cek#obEHw0K6iDK{N#Z z2-xf|KE&F7MQ+~F;|CM2>zcmNGynI1pY|KS2mG|(_&wmK{l@PBzXtx_1AYzszZ3tO zH28sySdWsjP?b9LjGi*>=-oVWa2s3O@T6MNt za(?99q~Ppd-$_54?I`bN!~umv*fJg2HwE>OLu^vg#bF;`dD-?IJYqWgZ&I%9&QCM= zO53JQ%5~lBuM$xTtbPS5bo`{u_G{3w&HgZ&Xw6H8XGM`Fe^HfG# zChVb#ONy_)=kA_Yce0~HpDK@`(#J>Bb+*`Hm6ey`emcr8y4%{(yTs*lv@|w6UKA@3 z6%`g0MTeDe^~&-`;>IL;d&wB8x{c7NJXTyr8gY_nSvlp;FCab3g4+LFc^OFV9szYr zL}NzeQ`Tr~_;6H;Z5&z`hebx0#fC-46qb+Rl@}F4{nF9J<%Oh#XK}iKfJqY&y|pdq zEn5AyDe1mr(cs&rv=pl;Ukm`-bn&U+72A}nZ?gYJUSU#r2P+{^+drc+$a0;Y>oEJ~r0;|gw7Y1INmCC8QMH9kZg$CW1S?KrOjfu&Q<#GU_m z2$#0%si2B5syG!?LGh+jinlP@GVW~wah)%!2&0NqN^`L=;w!2+rL^d1&lSx;DC(^9 z@W->erlO9sK^>{6<80ul6rnn+MEq4D6?L4YKDmP{is00F#kpoz&s)>Laz0>51Izh< zg@RV+m5A7U*m4?J&MSDez>oB{jEL1mrE1fzG^uMX@LUXdYJulsz(b*|i@{1+3p^JU zguE%XV9N+&{i-7#;IPg!Im>XH%`R?_+vpA!6mA*ZTClABVd^nutdNz zDPW0!Ws(~4Cz%LXCaJBjw%-#hnYf~KKK^WL*G#ZX4_Gq6GCg3)1j}?av6aXK%XAe6 zqPqoK&O#_grMrdOkOt4pfF}#H)=bsATfkTF%v8O*1wio3B%WtDPc|Yls(eFEv2*jZ zj!t~fEw^NY4IOQW;<|CqwD^40i{;xq zmJcXm`GAQNrkEWNfR1nVJ%^5C{=hpzrRU_D99n*|Aiv@Vm0NID(?Si zfG$?e+V&S38WrN(uF5KV-ywNOrQZ@rpcbFiqckFfphVV0Y9yK8v}mQVWaBJN+G_<+o&S8CiJIG-bS@?dmn;- zqZ)0;tsa8a-%{mFKCy?$>Tju`u*k`+9>BOo{lzgYHzAtX-%`^=j1lO6AkT}hA}>d{ z0pS|)bI)690R68o>fE9*&mL87lru+<_U?0cj~k-hORx)aPJcPOs_@_wau3lgI-nq% zaLy3lkM0RfLi^D@YPxtEfUlerx2#R!YSid`&epG*U%fAAEEPzG(22vwUV;58dq|V& zUmK$3ZhugYwo=IuBjQjzUKRU5VnTnl9#a6oIZs)y`t6 z0z~&6Rd4FU_s#_Q=PteZ=ns)69OI+E8`7xlSWpe^e~$U1A74?;F@N*}g69~Ge!3|S z(J}eB%5TbV1pv|UfQX()9QOx4zJlnuKkxxTbesl0-Q>}Fc~YgDygnhi$vf$fejpSB z6r&#ymO4qJp9XO_qW_?#JgbXAOiSPos+ncaB_oDuV_B_M-TsXu#jAa-Aca=dsuytw zM4@Wci<1LFt7;WTZSodCSg~5IFU}``7zEX71M%c0Ok3KYRC&Cnh}`_f@Fx}57>%)K z#b?r>MpbL&ID?NhY>Jf4x3~NYno*CHXR)HU`tTRo1F=0tkhiOJCzgog)vg9K8X^yk*RI^;9#4Q>B0^JsAI03Ze z_ThIzOPtH6TIViF&PHZjlAH~AnbY%h>lVwBvr$WzQMNx)dBf3&t(x3A=Ui&l!qYny zsn9uks7btFM6BR39P1t*U08}U6+fz#@uO8?v5iw=QU23UMaxDHz1n*l*EWjtSw5X8 z+e8cUi;C!wct_bC#f9aCc)0v@Y}i#T>6k`G){@cXIE8xU5RlJ*3iaSUHNN6(8^uAf zIO=HUTE@Lv{i7dFf5kDp;x5ZCeF{W$_sL`dP zN~o&gyw!pQ?L(8h7Do$5jw*_cj1`yjx7j#{78Z<%7K|uC3Fupb1A7VJ|6@$Fd~{hk z8WJri!Fjk0r{eNx{!myaT3AlzjQjS4emFQkMcS7a7K|>+FHN>Q4+hx(s|V+f;UtV! zw#qLWlmAp%D^HI?9JBwYW81(U(N;V>(8~6+#s9y2rLjlyONSMq7swunDexLlnl}~J z^5070gpL4041Fn#jstkKD=%~xI=n;s4jtMECqi7H5bjkbdZ473?7;KI$@n4!QC=F$ z9~m7snqm+CYyaXW=wjTi!A!34xi zy%qDu?cTVi1#qk8T@vCmA27Hi6r-LZI9s)Pt$c`4zg5FqJ9?OoX$9-WcE>#b#*pnn z1+>a-4<;sB<+f|yjS@(EWZ@V;a6BOpl+b+%91ObA7m*#DP0KvaY!zSovu0H0!-J0Ac=Njjsu^pV}tL-6x zzM<%lzdNXhR=?eWooMyjt<@15jj*hvp50oG*gFEEp50pgRwCdVrpa=z^HcSr2lod2 z6am;9@KXd}ua@plw-f=`t09OW>_icOy;`o=JA#i0wY(1Yc5Wv;2GI{_@|Vu(pFW5m z&#?;rrj?zRlLCB7_~qko{4Y)=F2ZMJo^``6JG=lCYPX@9D<+(O~eP2O8_6z zRPnSetm1_*EhLbLhb~kJP0EKfI2G**!?ZCytl=rJXc`490DZI5E5gH?_xu)l!F5=x z@B0hwf(~mq-d9q1CJb-Vk7@E*P03jzix65>Wla+)eoQm!cum5azKHr?O>N+<$l}Q# z1mYP6IAq$B{8z&@y)Xjaap8(2XcDjx_$`6}CBCB;`6YmlYid)kj<~{&07>IStz?Ab z8t$6>B52C@$!gI^gdk80zwdw`NiA6FM9?=152i!l_YDLnaRPl4PgDXYJDFUBh6@Bi z5&Y}}f`kJov?(~1+;(z&2!giLv!GMSZHF_SPHw3o#ks_HJ4MD1L68Nb(r-Il;D_Y4 zQ#V5pw4I&>{gB*tY~IgkYW;*c=^O%qc$Z9_NbiHr(3S^I7KfLiz&TA8fgm8*4$${9 zx|Bbsc~@lk3bJ#WcSQz>t~sY6Fv2%Cbgz0rlYjO%HwtYzFKBp~&08aGRI4?$iO`Mk zZKw?rajhCA3F@oXQavM*036j?w&#>2K%LbZE_iZj8w3F|{N&93rD^=9WFk6Z{-k+N zKzTOGr)7D=kII4QCkKVQIC@0JW-!BwN-2Ml6lQY@`T zOS`%qKXZgBSaw-M#Nn@9E(ewjf#R~}#Tt+Y6qhwG)&K~K%bIuE2+N3tUD3p80|2^Q z35f7320$;&fUh9BqIqEkKoDKgywe7S&i>GF+8EO256ufRg!w@OP#iP>;SYakIA}D$ z`6LW)7|-x)x<+lr>)uH>%ul+>5G6S5?3I|n`bpA_w@=W$h(wqlcatGXa7c%l)QCPw zPnqQ%W+>J+NylM^qBW^B2Tfu9Y^n3DNTcCXbk7$7(eNp{XF)&|oT7Uc1VqE9=(s?l z^I9r-#dOw3mipZ|Jz$`F)9JcrI^>~Dx@S5-Fih7y(@{il=KQ!c=&n>cr_Izo^8uk0 zpfDdGnl@AS&S_~8eYT#m+G`pG0B7sC6?+&erBT!7vA7})?K00-2}0B}Pxp=|fG9Fg zPZw9xfKX|kj(0@g(fXA}ty;_)snYlNEeqC>HD9LJx=;WwGup z^njR?7VB8(=^USi&R@bF)TAbDm-wBZ#ydY5qP-k`L@P@g&DJa2N)12Z8?qwMiO$_C z0-Z?l6}oqXM;Yj}Lhmf@)c~Q>3jN03e4Zf4Ki_m0cZoF0Tp?TnX}Cm1Pz_zXR`@P~ zuc)TNcL_i$>AOT4ZNgTPOWfHNX#xQc{Qza9?-=+Bo|V310D@!C(q2gve z_ZmK4Yf&d}6`g}LI%jK83w82VzjN>vwQTh}2arnookNlH_j%{sk}7GpzwdWWE#5hR zqH_Szp7;IENss6|^pr2X&Y?j04jmy# z?$>dDLNi`E4a5V&f=ENt13@jcS2^HY5MNQt0pEgvsO5lfLAo_KL>BCmPV?R&--19W z1t=^Ci24rs7R-p~hxL@-JPXp@z+v6Ywm+w)XOIa`=45am312ISQPl~*?SLqS zX9OZ51qiK9_-zM7+fVpy2SnRXP}|RuduC9C>WnU**V(I?(%J53bZ=LS4^;bE-P_f2 zjCvptTPQ9-OU~-pJ~qXUf&|F$qt3p_lA7iHsC&N#;BsXAQLkOczTV3Sd`@T4Y^hWH zobJ77r;OAW=XCy}o!XC}&jnqs*2R4?FnR|9vAF<5?_AKmJr*FUzo0h|p*TR;;ezfx z6##@Cs&!r5cLBl<)wqt_a#8#OMp=O3i;A= z3ibyP><^5TMQ(W=X}Xj-$-ukBU9{FjXoLBjAS4KwKWEtD$v8exFV8Sk@zXhu zp)~|zXUPRnW`^Ny2)O{7&oI2-1aSd$pJCv^4{cXTfDAJYHIHvsIR+;L9%r0#fOMvT zcF>Rhcotp;S5XN8NM{jWbwoZ2!w#b5dhIe&l{mkK4Aia>v;n|HKO?w z5KPY-h%@q+%@MvxIqZS@($csSaF9lh;l(N=+?gE1yY&MEhhyMZIYJwleV*ZM{Uh9A z0DWy}a-SD4ku~NS5plpoW-!e&@H~K@A|eFm8{R`ZAT$inr=nQOe8USx<147<8yVty z6_A(3Lpz}qiY_p`hn{GqfIbriO%?=7(L%kzh$G_+3Nce@4zAltRxeG`u%-5gz{s^qH=s5XiznD>?}-G$JA+f#$tt zsNxrK#6aB(f%p{_7l89M1M?;w6Eo2a{dGfLXQ*&&{5Ajr^f4sDoPaR)>xTE14iI#& z8{Y3D0a4xS25ui~VN?L(W#;Qfn{}`n4O-rFbPX^vKp^4? znH1;;;d&$P1r$hv92*QT;LouTh#L|vK#>iGcSAw~VAt?|sKPNyKp<{kxPa%t?TfHH zwBBUMTe#)Pc#?_$1SG!YX(ig^PeAw#x=l1g(gXwu%Wt9~AuNxT2yD4q5|-yb>U%4& zyu>a4wlFl=83HiAlPrjn<1_;Eg%`?CT?-`h0{1V9UzHhZS<)C&#;+qWu6nWp^W)qbFe-I1`5xIlF z9~2^T_kkEj-+@OX8i;FY zzi)_>ECYexH4yL|36F->`waPD!qBwvK;RpiHY@uKFK&~`XQq9I_Y-(PB@)MH{KPDKQJ_2xWZlk6Brr-DEN6`XoVa40Qs+QXb6zwi(ux!k21eB-5x{>GLS@{ZxW3LCPRN47#adl9t#YO>u==vuc7`8 zR)B)o80g;{^67;C(t7^AVPtql!jEWhVhF4#eq(b2^S?LQbke}%P0Hm zoJ$svq0bv?AJ3yT?$H+v^;Z5wCKExUpAA{OWXYr_GCv!kG%=I$*ikYBHHQ>!qDNd8 z@dJ)XZX`-~n|(`5%1efh9vpL?6q`s$)cmnWK*8zE^RBdlj4(2gs;hG@PQn2is|iFIED*A zAQl%cfD=qHy`VT3K=mo67Zm3LIKmXun-NHW3{y>&9K+ys(2)}YkCPu=Kswb-72eN_ z@G^D91kVK^ooeDY2h%}zJ~V&5C{Q&8FfHU;u(?y4kM1 zJ%LW^S$uk!#jfulP3$r&;Go^dEE9j9hk84UPhzvoOtE_h1jj5BN0-Th19qRwE_INm z{&j9ZK@02LfP&00H=v+(buLjHlF(P#5q+_l@&bGJTIpcMViN(M2^r8Xn;N>qbpLgo z^sHI1!{>$=+&fI~bOs3S9cGrehXe%o4$%YPpzi+AlowlKFAt2|ADTF?PBYN!z*Nf- zQ*D!TiOuRF9Z*XO3P!t+{#ANiE`(V06VHZGa>Vq0XT}9!I$~yue&Yhve8j}8MSaZ$ z2oW4H8??65@fuwSV5}o%!&dfQ`t3N0Kyuu4$99zlNb%#z_0jq9cyfI-OpYhlM;&oI zxjqU>98a!KqD!gcRNpIMuRaKvrMAqO7p7k@l+zpj0VShL3u4_$+`iqUbUlvGL96NP z$t>@%PWqC<%*qn?hFkzGn1%BvjUo~NFSOKF2`kV}0D^#%4xtN^IcbNp(8>~nB+fZF z3I2$ZPYRAjmf9gfN~<0O0V$nF7bTO@%D2eMqAi8!4O;saS?#Z(_lmMwJEFg6;cwwd zIY*?VA5oQ$U=Q|^zO414W!AHwgcsH(|5(m$zf*ep!R3}W%pimhF1Nhp01%Zew`z+B zDStZxk1!Q5BZwb6kLu z6_)37T!5M?EYIh-06tJ*c|Iou=<*5+KG4Uj3>+&hwQ0`H(L09WaYyjlV|ZZ^Yk!y2 zxd%QA%Mt-O;!5ALT)+vk#6>X|K#7$WE{f@|K#%}6uD00fyQC+3u1=;RZ(5z)9`dHu zmiJptUJ_KREyPy7^i2anmBosBOJChymCQw6RF%v{UQ}gyKi4EK3TISVSm7TPYSFpg zwbXYlHoK2BBFnX`47(>rCi3F2j4s$@v2b7MwicT#-L^Aq%m0GrY_hP^y(y6yRlRMo zr~67>TD)!PR#Il#;Js~OBho368IsKw`?{~xxp1?khmtarp*CB1d`fOkD#NR{Sl*F| zV<8ASgSK~DtW+MXg2FtX4P~1pOKf$ zke3~H&po9q|J2=dn|i&?>h@QgvWNStGg4T8EcM$H-vhGFd{(I>v>^`K1--oYF2P0K9824B0hamOj5OpEzbU#w#?pK$x zo(~{3>jB7mKZw+V2O+!vA*5D3q`u6GA4Y1!!|K1-MWu;>V+MvPG3WZesqno+2}#fl$AYQv-IELQXw zQg1#6?MD?MwXq1gJUJ4nts|k!$&c(u3GDxS)=h9%s5_qk+q$G)Dsi5Ijr5YNR4?` zo6cHJMC$R0+AP*$5>h3Tw0W%cWTeU_YqMGFDU_OmuPvuizNwJ4oJOf>+9cL!I#R=@ zYm7B}4ylpPY0KDkGmv^_25Rd*Q_FK_%+#trm)~0Ib{(ca+ED(mz^xpwPioBuSL#jK z%a!_b?4H#~{d2WGiS=58)Z8`tYph@`Qk&Q6m2B=CNd54JUcug8hg5czzM7q`LaN7` z`unW?dZebW*T=JKH|R-LoV?PVv_b!_vApn6x9D^IXv_KKM$`H47*&i(MpJe~GS)Iz zM(PjQ_=x?eAa%WJRI;#!)ZH3VEfIESkL$*Zth0gCc*EGp@=c^(GmVw(?-o+;TgEar z-9~D!ZOmuShmblDG8VH%VWhqZ8!K34DpEhEf@O0WQd%uzB738jkrz(%_td^NYrNHN z?B=B#kyPuGj-ne^vGGrvt=ZUmX2>mXXcXlzvy+kM_UUAN8&Y1m*JktIu$sB|bvIU~ zS-Wl!WsXysY}WVnP^#N@fKiddej91bWb2BJRcvyJv7GfAWh@Ikt=e|;9yf3oc!*Wb zH5<5n%8aPO=09OHwiDXTb&oz_;LnjBYVBr>H+p8Xe=IQOr6xW<*V4{o=a(9p?tRQy zZ^&*vH+`A$bcn58X-s7gzHY2{JFhYhW~epAb`z1Y<-5j&+VX$8x|RElYa1~0yphYg zoHtz7;DRxS{pSLpU2V)}?^VN)6Muq*@BA76L~4xH?uiH)xPPl>A^@If%j!ZmqlvjN zOP+Cy`+7%nNj+B5$85^nKISWIVqc^_>1+PLj`l<9hW_S0)^Pw*&krznvT=7KwexOs z9b0}6Qm5}RUuByHA|(wnKVd%)GV|P!_Au@DX zU=9t-Z?tt^dfDui%`!Kd3)r5G<{~zClesY{ubKM>vo23odk>loEw&;6vJ{x$#+z=RW>HzoVljfl`c|}LJ z{w4FhI!sHq{>A>2Zp~oRGOX$B#)vhWRY$BO2Rd_$Z;{V3t(uVa#Z{u#WX=FEW74bBa5x-3eUs{%XYu-ZoR3xTkf!I)je~Ul`FB1eXObMSRZR5 zo7vZz%sTh8X1hQ3vo=f8>u%)$tBER&cRw3s9m8$ngI439uA1g<(}%44b!oOcK4xvx z-Qh*nH9Ff|Y9$S=39eOU9ns{)b=*@=T2pm*LENfV*_w$~<6w4pWuU!aoz>WFFv-eG zmA|;r?K;=$S)VPcw3@T;E3H@9($z@)uo?z>Z4FWv*C6%gTB}*0%%=O?@Ecb5bnA2{ zVcQF0n!s?cO{+?6ckwoBXo5FOeGf6;dm{vOZ@s4kLBwFl2MT z#>8{vYiouqzg*uP`Hl68W>wb`HoZrzReaX!`@OYRXBlU$Tz21C>jQT4k5-dlV%gx% z{?WS6lJ_@vPhYY+X0o36xj~ZBH@HsN{<|f;>DH=kFUVxOTH*~$VysSb>$I|;)TD{- z>~{8Xi!JG#T=>N{?upL!tA>28fjhgay(X2#`q)uc(Z`;^`t(iC`SA_z3w`m|nydxQ zMFXCo26SYjM%%sJenae$kybdZ>e$C&%k;QfuG5By!@1ZIlOUnezLxGa#kOQvAJrFB z_j4*2R3lT9SO%$s|I9*y1j~}1Zr^9^9bxN}Hlnj$@;YlYy!6v{c5T+>vK3-SVpguZ zaJH>wv+b|gOF)RMQ5`s>?BjeFZ3%bLD})bMxge=ut^>gl)HUd%GzMQX^q_KPfUi=7vY z!EwzoMXeoRWx3C7vG3Ha`SpY$3iv>CtGC-j!bygBP|g3dAxMxg#Jc|O*1h)k>DIRP zLjC^;_3!T+uFY3Pc63`P#HRKQ=d#TI+I8KY|F!pIu$yb3+teC+4SVP!QWY2NGwhv9 zNNJbt8kYA9QboVmm)MM7k^0ZC_8d0r3R0h6vAqhScP4;U%nBcckWa56@sddmuHdM|eKFvnNtc&oE>CZ$oPFZQ;4> z?%R=Ca(nm#HuVmq{(VQ-VbApnCpp)ly6)j#;h}hPoa%P%8~#jZe;E``8osY)x)TP4 zC#u#${2_YU#P$@X%DX>2#9efMc#gulJRFX)_`~7B><>zH%@5zpR^^8qo4yPDAB9&u A-T(jq diff --git a/go.mod b/go.mod index 1f431abbe4..d110e768fd 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/percona/pmm go 1.22 -toolchain go1.22.2 +toolchain go1.22.5 // Update saas with // go get -v github.com/percona-platform/saas@latest @@ -82,9 +82,9 @@ require ( golang.org/x/sys v0.21.0 golang.org/x/text v0.16.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 - google.golang.org/grpc v1.64.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 + google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.1 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/reform.v1 v1.5.1 @@ -253,9 +253,8 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/term v0.21.0 // indirect - google.golang.org/appengine v1.6.8 // 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 8e938f37c4..39d267310b 100644 --- a/go.sum +++ b/go.sum @@ -351,7 +351,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -921,8 +920,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1122,8 +1121,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1154,10 +1151,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1170,8 +1167,8 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= 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= @@ -1183,7 +1180,6 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 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.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= diff --git a/tools/go.mod b/tools/go.mod index 507e62a6ce..247445ce94 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -2,7 +2,7 @@ module github.com/percona/pmm/tools go 1.22 -toolchain go1.22.2 +toolchain go1.22.5 replace github.com/go-openapi/spec => github.com/Percona-Lab/spec v0.20.5-percona @@ -10,14 +10,14 @@ 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.6.0 - github.com/bufbuild/buf v1.31.0 + github.com/bufbuild/buf v1.34.0 github.com/daixiang0/gci v0.13.0 github.com/envoyproxy/protoc-gen-validate v1.0.4 github.com/go-delve/delve v1.22.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 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 github.com/jstemmer/go-junit-report v1.0.0 github.com/quasilyte/go-consistent v0.6.0 github.com/reviewdog/reviewdog v0.18.0 @@ -25,21 +25,23 @@ require ( github.com/vektra/mockery/v2 v2.43.0 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 golang.org/x/tools v0.22.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 google.golang.org/protobuf v1.34.2 gopkg.in/reform.v1 v1.5.1 mvdan.cc/gofumpt v0.6.0 ) require ( - buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240401165935-b983156c5e99.1 // indirect + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2 // indirect + buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1 // indirect + buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2 // indirect cloud.google.com/go v0.114.0 // indirect cloud.google.com/go/auth v0.5.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/datastore v1.17.1 // indirect code.gitea.io/sdk/gitea v0.18.0 // indirect - connectrpc.com/connect v1.16.1 // indirect + connectrpc.com/connect v1.16.2 // indirect connectrpc.com/otelconnect v0.7.0 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect @@ -55,7 +57,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.11.0 // indirect - github.com/bufbuild/protocompile v0.9.0 // indirect + github.com/bufbuild/protocompile v0.14.0 // indirect + github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee // indirect github.com/bufbuild/protovalidate-go v0.6.2 // indirect github.com/bufbuild/protoyaml-go v0.1.9 // indirect github.com/chigopher/pathlib v0.19.1 // indirect @@ -69,24 +72,24 @@ require ( github.com/denisenkom/go-mssqldb v0.9.0 // indirect github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v26.1.0+incompatible // indirect + github.com/docker/cli v26.1.4+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v26.1.0+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.1 // indirect + github.com/docker/docker v27.0.0+incompatible // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/fgprof v0.9.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-chi/chi/v5 v5.0.12 // indirect + github.com/go-chi/chi/v5 v5.0.13 // indirect github.com/go-delve/gore v0.11.6 // indirect github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d // indirect github.com/go-fed/httpsig v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.11.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.3 // indirect github.com/go-openapi/errors v0.20.2 // indirect @@ -105,7 +108,7 @@ require ( github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 // indirect github.com/go-toolsmith/typep v1.0.2 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect - github.com/gofrs/uuid/v5 v5.1.0 // indirect + github.com/gofrs/uuid/v5 v5.2.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect @@ -113,14 +116,14 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/google/cel-go v0.20.1 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/go-containerregistry v0.19.1 // indirect + github.com/google/go-containerregistry v0.19.2 // indirect github.com/google/go-dap v0.11.0 // indirect github.com/google/go-github/v33 v33.0.0 // indirect github.com/google/go-github/v60 v60.0.0 // indirect github.com/google/go-github/v62 v62.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-20240422182052-72c8669ad3e7 // indirect + github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -147,7 +150,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/klauspost/compress v1.17.8 // indirect + github.com/klauspost/compress v1.17.9 // 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 @@ -190,7 +193,7 @@ require ( github.com/skeema/knownhosts v1.2.1 // indirect github.com/spf13/afero v1.10.0 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.15.0 // indirect @@ -217,7 +220,7 @@ require ( golang.org/x/arch v0.6.0 // indirect golang.org/x/build v0.0.0-20240616231658-d6ee231f334b // indirect golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect @@ -228,9 +231,9 @@ require ( golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.183.0 // indirect google.golang.org/genproto v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/grpc v1.65.0 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/tools/go.sum b/tools/go.sum index 942ba3201b..2fd31b6e20 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1,5 +1,9 @@ -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240401165935-b983156c5e99.1 h1:2IGhRovxlsOIQgx2ekZWo4wTPAYpck41+18ICxs37is= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.33.0-20240401165935-b983156c5e99.1/go.mod h1:Tgn5bgL220vkFOI0KPStlcClPeOJzAv4uT+V8JXGUnw= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2 h1:cFrEG/pJch6t62+jqndcPXeTNkYcztS4tBRgNkR+drw= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1 h1:PmSlGbLLyhKIAm46ROmzdGVaaYgDdFsQNA+VftjuCLs= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1/go.mod h1:4ptL49VoWyYwajT6j4zu5vmQ/k/om4tGMB9atY2FhEo= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2 h1:y1+UxFIWzj/eF2RCPqt9egR7Rt9vgQkXNUzSdmR6iEU= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2/go.mod h1:psseUmlKRo9v5LZJtR/aTpdTLuyp9o3X7rnLT87SZEo= cloud.google.com/go v0.0.0-20170206221025-ce650573d812/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -50,8 +54,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= code.gitea.io/sdk/gitea v0.18.0 h1:+zZrwVmujIrgobt6wVBWCqITz6bn1aBjnCUHmpZrerI= code.gitea.io/sdk/gitea v0.18.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI= -connectrpc.com/connect v1.16.1 h1:rOdrK/RTI/7TVnn3JsVxt3n028MlTRwmK5Q4heSpjis= -connectrpc.com/connect v1.16.1/go.mod h1:XpZAduBQUySsb4/KO5JffORVkDI4B6/EYPi7N8xpNZw= +connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE= +connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc= connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY= connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= @@ -112,10 +116,12 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.11.0 h1:R9d0v+iobRHSaE4wKUnXFiZp53 github.com/bradleyfalzon/ghinstallation/v2 v2.11.0/go.mod h1:0LWKQwOHewXO/1acI6TtyE0Xc4ObDb2rFN7eHBAG71M= 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.31.0 h1:YHLGIr8bjcLaTCIw0+/bCAvJLiR8u46QTwKvn7miSEg= -github.com/bufbuild/buf v1.31.0/go.mod h1:LlxpG2LF33f1Ixw29BTt0pyLriLzg3rXY1K9XQVHSio= -github.com/bufbuild/protocompile v0.9.0 h1:DI8qLG5PEO0Mu1Oj51YFPqtx6I3qYXUAhJVJ/IzAVl0= -github.com/bufbuild/protocompile v0.9.0/go.mod h1:s89m1O8CqSYpyE/YaSGtg1r1YFMF5nLTwh4vlj6O444= +github.com/bufbuild/buf v1.34.0 h1:rZSVfYS5SakOe6ds9PDjbHVwOc+vBGVWNW9Ei+Rg/+c= +github.com/bufbuild/buf v1.34.0/go.mod h1:Fj+KBmY2ODYD2Ld02w4LH9Y3WiRH2203IjGJbKYK5Hc= +github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= +github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= +github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee h1:E6ET8YUcYJ1lAe6ctR3as7yqzW2BNItDFnaB5zQq/8M= +github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee/go.mod h1:HjGFxsck9RObrTJp2hXQZfWhPgZqnR6sR1U5fCA/Kus= github.com/bufbuild/protovalidate-go v0.6.2 h1:U/V3CGF0kPlR12v41rjO4DrYZtLcS4ZONLmWN+rJVCQ= github.com/bufbuild/protovalidate-go v0.6.2/go.mod h1:4BR3rKEJiUiTy+sqsusFn2ladOf0kYmA2Reo6BHSBgQ= github.com/bufbuild/protoyaml-go v0.1.9 h1:anV5UtF1Mlvkkgp4NWA6U/zOnJFng8Orq4Vf3ZUQHBU= @@ -153,7 +159,6 @@ github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9N github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cosiner/argv v0.1.0 h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg= github.com/cosiner/argv v0.1.0/go.mod h1:EusR6TucWKX+zFgtdUsKT2Cvg45K5rtpCcWz4hK06d8= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -174,14 +179,14 @@ github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d h1:hUWoLdw5kvo2xC github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d/go.mod h1:C7Es+DLenIpPc9J6IYw4jrK0h7S9bKj4DNl8+KxGEXU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v26.1.0+incompatible h1:+nwRy8Ocd8cYNQ60mozDDICICD8aoFGtlPXifX/UQ3Y= -github.com/docker/cli v26.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwenxRM7/rLu8= +github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v26.1.0+incompatible h1:W1G9MPNbskA6VZWL7b3ZljTh0pXI68FpINx0GKaOdaM= -github.com/docker/docker v26.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.1 h1:j/eKUktUltBtMzKqmfLB0PAgqYyMHOp5vfsD1807oKo= -github.com/docker/docker-credential-helpers v0.8.1/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= +github.com/docker/docker v27.0.0+incompatible h1:JRugTYuelmWlW0M3jakcIadDx2HUoUO6+Tf2C5jVfwA= +github.com/docker/docker v27.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -214,8 +219,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= -github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.0.13 h1:JlH2F2M8qnwl0N1+JFFzlX9TlKJYas3aPXdiuTmJL+w= +github.com/go-chi/chi/v5 v5.0.13/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-delve/delve v1.22.0 h1:c7GOFs49/jMGHdp10KphKkGqNmLjOp7fcwz1MQwcMlw= github.com/go-delve/delve v1.22.0/go.mod h1:cSvtTzN0Ei8NsPH7TbxeQSLBmdsreeAD5p1UNhrII7w= github.com/go-delve/gore v0.11.6 h1:MyP7xTNQO+dDiLBKxI/DKgkn74cMBjHZZxS8grtJ6G8= @@ -243,8 +248,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= @@ -332,8 +337,8 @@ github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14j 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= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid/v5 v5.1.0 h1:S5rqVKIigghZTCBKPCw0Y+bXkn26K3TB5mvQq2Ix8dk= -github.com/gofrs/uuid/v5 v5.1.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM= +github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= 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= @@ -368,7 +373,6 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -391,11 +395,10 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.19.1 h1:yMQ62Al6/V0Z7CqIrrS1iYoA5/oQCm88DeNujc7C1KY= -github.com/google/go-containerregistry v0.19.1/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= +github.com/google/go-containerregistry v0.19.2 h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w= +github.com/google/go-containerregistry v0.19.2/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= github.com/google/go-dap v0.11.0 h1:SpAZJL41rOOvd85PuLCCLE1dteTQOyKNnn0H3DBHywo= github.com/google/go-dap v0.11.0/go.mod h1:HAeyoSd2WIfTfg+0GRXcFrb+RnojAtGNh+k+XTIxJDE= github.com/google/go-github/v33 v33.0.0 h1:qAf9yP0qc54ufQxzwv+u9H0tiVOnPJxo0lI/JXqw3ZM= @@ -424,8 +427,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe 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-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/pprof v0.0.0-20240422182052-72c8669ad3e7 h1:3q13T5NW3mlTJZM6B5UAsf2N5NYFbYWIyI3W8DlvBDU= -github.com/google/pprof v0.0.0-20240422182052-72c8669ad3e7/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 h1:ASJ/LAqdCHOyMYI+dwNxn7Rd8FscNkMyTr1KZU1JI/M= +github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -445,8 +448,8 @@ github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoF github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= @@ -495,8 +498,8 @@ github.com/jdx/go-netrc v1.0.0 h1:QbLMLyCZGj0NA8glAhxUpf1zDg6cxnWgMBbjq40W0gQ= github.com/jdx/go-netrc v1.0.0/go.mod h1:Gh9eFQJnoTNIRHXl2j5bJXA1u84hQWJWgGh569zF3v8= 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.6 h1:WMYJbw2Wo+KOWwZFvgY0jMoVHM6i4XIvRs2RcBj5VmI= -github.com/jhump/protoreflect v1.15.6/go.mod h1:jCHoyYQIJnaabEYnbGwyo9hUqfyUMTbJw/tAut5t97E= +github.com/jhump/protoreflect v1.16.0 h1:54fZg+49widqXYQ0b+usAFHbMkBGR4PpXrsHc8+TBDg= +github.com/jhump/protoreflect v1.16.0/go.mod h1:oYPd7nPvcBw/5wlDfm/AVmU9zH9BgqGCI469pGxfj/8= github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= @@ -516,8 +519,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.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= -github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= 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= @@ -661,8 +664,8 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -746,8 +749,8 @@ go.opentelemetry.io/otel/sdk/metric v1.19.0 h1:EJoTO5qysMsYCa+w4UghwFV/ptQgqSL/8 go.opentelemetry.io/otel/sdk/metric v1.19.0/go.mod h1:XjG0jQyFJrv2PbMvwND7LwCEhsJzCzV5210euduKcKY= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94= -go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20231101134539-556fd59b42f6 h1:+eC0F/k4aBLC4szgOcjd7bDTEnpxADJyWJE0yowgM3E= go.starlark.net v0.0.0-20231101134539-556fd59b42f6/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -796,8 +799,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-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= 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= @@ -1131,10 +1134,10 @@ google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1152,10 +1155,10 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 h1:9SxA29VM43MF5Z9dQu694wmY5t8E/Gxr7s+RSxiIDmc= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0/go.mod h1:yZOK5zhQMiALmuweVdIVoQPa6eIJyXn2B9g5dJDhqX4= 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= @@ -1166,8 +1169,6 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= From e003c6f98df081fabd01497c3ac6edf3f7fc0182 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:28:56 +0200 Subject: [PATCH 04/70] Bump @typescript-eslint/eslint-plugin in /cli-tests (#3091) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.16.0 to 7.17.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/v7.17.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 | 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 4a2d008a28..da8eedffe4 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": "^7.16.0", + "@typescript-eslint/eslint-plugin": "^7.17.0", "@typescript-eslint/parser": "^7.16.1", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", @@ -249,16 +249,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz", - "integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", + "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/type-utils": "7.16.0", - "@typescript-eslint/utils": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/type-utils": "7.17.0", + "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -409,13 +409,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.0.tgz", - "integrity": "sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", + "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0" + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -426,13 +426,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.0.tgz", - "integrity": "sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", + "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.16.0", - "@typescript-eslint/utils": "7.16.0", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/utils": "7.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -453,9 +453,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.0.tgz", - "integrity": "sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", + "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -466,13 +466,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.0.tgz", - "integrity": "sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", + "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/visitor-keys": "7.16.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -518,15 +518,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.0.tgz", - "integrity": "sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", + "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.16.0", - "@typescript-eslint/types": "7.16.0", - "@typescript-eslint/typescript-estree": "7.16.0" + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -540,12 +540,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.0.tgz", - "integrity": "sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", + "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.16.0", + "@typescript-eslint/types": "7.17.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { diff --git a/cli-tests/package.json b/cli-tests/package.json index b1f6cbe09a..787cdee8ef 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": "^7.16.0", + "@typescript-eslint/eslint-plugin": "^7.17.0", "@typescript-eslint/parser": "^7.16.1", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", From e392fe7a7bd9e76d96b036b70a6fc3b37a9bbfb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:36:40 +0000 Subject: [PATCH 05/70] Bump github.com/go-delve/delve from 1.22.0 to 1.23.0 in /tools (#3089) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/go-delve/delve](https://github.com/go-delve/delve) from 1.22.0 to 1.23.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.22.0...v1.23.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- tools/go.mod | 7 +++---- tools/go.sum | 14 ++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 247445ce94..743b8a0fcc 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -13,7 +13,7 @@ require ( github.com/bufbuild/buf v1.34.0 github.com/daixiang0/gci v0.13.0 github.com/envoyproxy/protoc-gen-validate v1.0.4 - github.com/go-delve/delve v1.22.0 + github.com/go-delve/delve v1.23.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 @@ -83,8 +83,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-chi/chi/v5 v5.0.13 // indirect - github.com/go-delve/gore v0.11.6 // indirect - github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d // indirect + github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 // indirect github.com/go-fed/httpsig v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect @@ -117,7 +116,7 @@ require ( github.com/google/cel-go v0.20.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-containerregistry v0.19.2 // indirect - github.com/google/go-dap v0.11.0 // indirect + github.com/google/go-dap v0.12.0 // indirect github.com/google/go-github/v33 v33.0.0 // indirect github.com/google/go-github/v60 v60.0.0 // indirect github.com/google/go-github/v62 v62.0.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 2fd31b6e20..5e84e080b9 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -221,12 +221,10 @@ github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-chi/chi/v5 v5.0.13 h1:JlH2F2M8qnwl0N1+JFFzlX9TlKJYas3aPXdiuTmJL+w= github.com/go-chi/chi/v5 v5.0.13/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-delve/delve v1.22.0 h1:c7GOFs49/jMGHdp10KphKkGqNmLjOp7fcwz1MQwcMlw= -github.com/go-delve/delve v1.22.0/go.mod h1:cSvtTzN0Ei8NsPH7TbxeQSLBmdsreeAD5p1UNhrII7w= -github.com/go-delve/gore v0.11.6 h1:MyP7xTNQO+dDiLBKxI/DKgkn74cMBjHZZxS8grtJ6G8= -github.com/go-delve/gore v0.11.6/go.mod h1:6RBVnEUxVGkztpRY0UDUnEzS4GqETQjWrw8rhegmN4I= -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-delve/delve v1.23.0 h1:jYgZISZ14KAO3ys8kD07kjrowrygE9F9SIwnpz9xXys= +github.com/go-delve/delve v1.23.0/go.mod h1:S3SLuEE2mn7wipKilTvk1p9HdTMnXXElcEpiZ+VcuqU= +github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 h1:IGtvsNyIuRjl04XAOFGACozgUD7A82UffYxZt4DWbvA= +github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62/go.mod h1:biJCRbqp51wS+I92HMqn5H8/A0PAhxn2vyOT+JqhiGI= github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -399,8 +397,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.19.2 h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w= github.com/google/go-containerregistry v0.19.2/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= -github.com/google/go-dap v0.11.0 h1:SpAZJL41rOOvd85PuLCCLE1dteTQOyKNnn0H3DBHywo= -github.com/google/go-dap v0.11.0/go.mod h1:HAeyoSd2WIfTfg+0GRXcFrb+RnojAtGNh+k+XTIxJDE= +github.com/google/go-dap v0.12.0 h1:rVcjv3SyMIrpaOoTAdFDyHs99CwVOItIJGKLQFQhNeM= +github.com/google/go-dap v0.12.0/go.mod h1:tNjCASCm5cqePi/RVXXWEVqtnNLV1KTWtYOqu6rZNzc= 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= github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= From d467dd70dc433d132b95ce5923d5709d96036a4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:51:26 +0000 Subject: [PATCH 06/70] Bump @typescript-eslint/parser from 7.16.1 to 7.17.0 in /cli-tests (#3090) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.16.1 to 7.17.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/v7.17.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- cli-tests/package-lock.json | 115 +++--------------------------------- cli-tests/package.json | 2 +- 2 files changed, 9 insertions(+), 108 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index da8eedffe4..ad8daa5374 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": "^7.17.0", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/parser": "^7.17.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", @@ -282,15 +282,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", - "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.16.1", - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/typescript-estree": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", + "@typescript-eslint/scope-manager": "7.17.0", + "@typescript-eslint/types": "7.17.0", + "@typescript-eslint/typescript-estree": "7.17.0", + "@typescript-eslint/visitor-keys": "7.17.0", "debug": "^4.3.4" }, "engines": { @@ -309,105 +309,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", - "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", - "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", - "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "@typescript-eslint/visitor-keys": "7.16.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.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": "7.16.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", - "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.16.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 787cdee8ef..72cd396dc4 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": "^7.17.0", - "@typescript-eslint/parser": "^7.16.1", + "@typescript-eslint/parser": "^7.17.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", From 320d51562a19851f840db5b044ab4819be1040b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:07:57 +0000 Subject: [PATCH 07/70] Bump github.com/reviewdog/reviewdog from 0.18.0 to 0.20.1 in /tools (#3087) Bumps [github.com/reviewdog/reviewdog](https://github.com/reviewdog/reviewdog) from 0.18.0 to 0.20.1. - [Release notes](https://github.com/reviewdog/reviewdog/releases) - [Changelog](https://github.com/reviewdog/reviewdog/blob/master/CHANGELOG.md) - [Commits](https://github.com/reviewdog/reviewdog/compare/v0.18.0...v0.20.1) --- updated-dependencies: - dependency-name: github.com/reviewdog/reviewdog 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 | 37 +++++++------------------- tools/go.sum | 73 ++++++++++++++-------------------------------------- 2 files changed, 30 insertions(+), 80 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 743b8a0fcc..8f46b1ea1a 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -20,11 +20,11 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 github.com/jstemmer/go-junit-report v1.0.0 github.com/quasilyte/go-consistent v0.6.0 - github.com/reviewdog/reviewdog v0.18.0 + github.com/reviewdog/reviewdog v0.20.1 github.com/vburenin/ifacemaker v1.2.1 github.com/vektra/mockery/v2 v2.43.0 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 - golang.org/x/tools v0.22.0 + golang.org/x/tools v0.23.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 google.golang.org/protobuf v1.34.2 gopkg.in/reform.v1 v1.5.1 @@ -35,11 +35,6 @@ require ( buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2 // indirect buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1 // indirect buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2 // indirect - cloud.google.com/go v0.114.0 // indirect - cloud.google.com/go/auth v0.5.1 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/datastore v1.17.1 // indirect code.gitea.io/sdk/gitea v0.18.0 // indirect connectrpc.com/connect v1.16.2 // indirect connectrpc.com/otelconnect v0.7.0 // indirect @@ -56,7 +51,6 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.0 // indirect 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.11.0 // indirect github.com/bufbuild/protocompile v0.14.0 // indirect github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee // indirect github.com/bufbuild/protovalidate-go v0.6.2 // indirect @@ -109,24 +103,18 @@ require ( github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/gofrs/uuid/v5 v5.2.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/google/cel-go v0.20.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-containerregistry v0.19.2 // indirect github.com/google/go-dap v0.12.0 // indirect github.com/google/go-github/v33 v33.0.0 // indirect - github.com/google/go-github/v60 v60.0.0 // indirect github.com/google/go-github/v62 v62.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-20240618054019-d3b898a103f8 // indirect - github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.4 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect @@ -134,7 +122,7 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/haya14busa/go-actions-toolkit v0.0.0-20200105081403-ca0307860f01 // indirect - github.com/haya14busa/go-sarif v0.0.0-20210102043135-e2c5fed2fa3d // indirect + github.com/haya14busa/go-sarif v0.0.0-20240630170108-a3ba8d79599f // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/huandu/xstrings v1.4.0 // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect @@ -200,12 +188,9 @@ require ( github.com/subosito/gotenv v1.4.2 // indirect github.com/toqueteos/webbrowser v1.2.0 // indirect github.com/vbatts/tar-split v0.11.5 // indirect - github.com/vvakame/sdlog v1.2.0 // indirect - github.com/xanzy/go-gitlab v0.105.0 // indirect + github.com/xanzy/go-gitlab v0.106.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect go.mongodb.org/mongo-driver v1.9.0 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 // indirect @@ -217,19 +202,17 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/arch v0.6.0 // indirect - golang.org/x/build v0.0.0-20240616231658-d6ee231f334b // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/build v0.0.0-20240712162709-0b82a206aadf // indirect + golang.org/x/crypto v0.25.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.183.0 // indirect - google.golang.org/genproto v0.0.0-20240528184218-531527333157 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect google.golang.org/grpc v1.65.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 5e84e080b9..1548e93379 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -24,24 +24,14 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY= -cloud.google.com/go v0.114.0/go.mod h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E= -cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw= -cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.17.1 h1:6Me8ugrAOAxssGhSo8im0YSuy4YvYk4mbGvCadAH5aE= -cloud.google.com/go/datastore v1.17.1/go.mod h1:mtzZ2HcVtz90OVrEXXGDc2pO4NM1kiBQy8YV4qGe0ZM= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -112,8 +102,6 @@ github.com/bmatcuk/doublestar/v2 v2.0.4 h1:6I6oUiT/sU27eE2OFcWqBhL1SwjyvQuOssxT4 github.com/bmatcuk/doublestar/v2 v2.0.4/go.mod h1:QMmcs3H2AUQICWhfzLXz+IYln8lRQmTZRptLie8RgRw= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradleyfalzon/ghinstallation/v2 v2.11.0 h1:R9d0v+iobRHSaE4wKUnXFiZp53AL4ED5MzgEMwGTZag= -github.com/bradleyfalzon/ghinstallation/v2 v2.11.0/go.mod h1:0LWKQwOHewXO/1acI6TtyE0Xc4ObDb2rFN7eHBAG71M= 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.34.0 h1:rZSVfYS5SakOe6ds9PDjbHVwOc+vBGVWNW9Ei+Rg/+c= @@ -339,8 +327,6 @@ github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM= github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= 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-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= @@ -391,7 +377,6 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -401,8 +386,6 @@ github.com/google/go-dap v0.12.0 h1:rVcjv3SyMIrpaOoTAdFDyHs99CwVOItIJGKLQFQhNeM= github.com/google/go-dap v0.12.0/go.mod h1:tNjCASCm5cqePi/RVXXWEVqtnNLV1KTWtYOqu6rZNzc= 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= -github.com/google/go-github/v60 v60.0.0 h1:oLG98PsLauFvvu4D/YPxq374jhSxFYdzQGNCyONLfn8= -github.com/google/go-github/v60 v60.0.0/go.mod h1:ByhX2dP9XT9o/ll2yXAu2VD8l5eNVg8hD4Cr0S/LmQk= github.com/google/go-github/v62 v62.0.0 h1:/6mGCaRywZz9MuHyw9gD1CwsbmBX8GWsbFkwMmHdhl4= github.com/google/go-github/v62 v62.0.0/go.mod h1:EMxeUqGJq2xRu9DYBMwel/mr7kZrzUOfQmmpYrZn2a4= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -428,21 +411,15 @@ github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0Z github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 h1:ASJ/LAqdCHOyMYI+dwNxn7Rd8FscNkMyTr1KZU1JI/M= github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= 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= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.4 h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg= -github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= @@ -465,8 +442,9 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/haya14busa/go-actions-toolkit v0.0.0-20200105081403-ca0307860f01 h1:HiJF8Mek+I7PY0Bm+SuhkwaAZSZP83sw6rrTMrgZ0io= github.com/haya14busa/go-actions-toolkit v0.0.0-20200105081403-ca0307860f01/go.mod h1:1DWDZmeYf0LX30zscWb7K9rUMeirNeBMd5Dum+seUhc= github.com/haya14busa/go-checkstyle v0.0.0-20170303121022-5e9d09f51fa1/go.mod h1:RsN5RGgVYeXpcXNtWyztD5VIe7VNSEqpJvF2iEH7QvI= -github.com/haya14busa/go-sarif v0.0.0-20210102043135-e2c5fed2fa3d h1:2uCbyMhWNFYI+HkRqXfIeTq5pTPxQM68yG+INJ2gvq8= github.com/haya14busa/go-sarif v0.0.0-20210102043135-e2c5fed2fa3d/go.mod h1:1Hkn3JseGMB/hv1ywzkapVQDWV3bFgp6POZobZmR/5g= +github.com/haya14busa/go-sarif v0.0.0-20240630170108-a3ba8d79599f h1:IrBUFBhHflcoA53Wp5TEK15bAgad0bgzY0FzW2CV5Oc= +github.com/haya14busa/go-sarif v0.0.0-20240630170108-a3ba8d79599f/go.mod h1:1Hkn3JseGMB/hv1ywzkapVQDWV3bFgp6POZobZmR/5g= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= @@ -624,8 +602,8 @@ github.com/reviewdog/errorformat v0.0.0-20240608101709-1d3280ed6bd4 h1:wFzV+/Kig github.com/reviewdog/errorformat v0.0.0-20240608101709-1d3280ed6bd4/go.mod h1:AqhrP0G7F9YRROF10JQwdd4cNO8bdm6bY6KzcOc3Cp8= github.com/reviewdog/go-bitbucket v0.0.0-20201024094602-708c3f6a7de0 h1:XZ60Bp2UqwaJ6fDQExoFVrgs4nIzwBCy9ct6GCj9hH8= github.com/reviewdog/go-bitbucket v0.0.0-20201024094602-708c3f6a7de0/go.mod h1:5JbWAMFyq9hbISZawRyIe7QTcLaptvCIvmZnYo+1VvA= -github.com/reviewdog/reviewdog v0.18.0 h1:U7em0JfRjEp1oaUvIe2kMI4NwTOUQkW8gK8b+hVb61M= -github.com/reviewdog/reviewdog v0.18.0/go.mod h1:7TGHiO6vrNCLEdlo5WcurtIFabcHNhQx9i6R7DxKydI= +github.com/reviewdog/reviewdog v0.20.1 h1:t5MGy3pSgAoXnCvcZvrzzQ8FtDkjH8QRblD8vYLgQVc= +github.com/reviewdog/reviewdog v0.20.1/go.mod h1:h5ON9DMAcqjkpo2Vi7AdetHbYykKD3WYCBaQ1pmi5RI= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -702,10 +680,8 @@ github.com/vburenin/ifacemaker v1.2.1 h1:3Vq8B/bfBgjWTkv+jDg4dVL1KHt3k1K4lO7XRxY github.com/vburenin/ifacemaker v1.2.1/go.mod h1:5WqrzX2aD7/hi+okBjcaEQJMg4lDGrpuEX3B8L4Wgrs= github.com/vektra/mockery/v2 v2.43.0 h1:9jgLwYbFIKPwWJUeK6Y+0s9oLRIGXLfW4FWlmF9R8c0= github.com/vektra/mockery/v2 v2.43.0/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= -github.com/vvakame/sdlog v1.2.0 h1:gwZRXZ0EmhJQJN/Do/+PTQigcmFiSqZ07aDjxqGOLT8= -github.com/vvakame/sdlog v1.2.0/go.mod h1:gFYv2g/iR3pJSxkJz0YnkNmhNbXT5R3PzWsfZKGQADY= -github.com/xanzy/go-gitlab v0.105.0 h1:3nyLq0ESez0crcaM19o5S//SvezOQguuIHZ3wgX64hM= -github.com/xanzy/go-gitlab v0.105.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= +github.com/xanzy/go-gitlab v0.106.0 h1:EDfD03K74cIlQo2EducfiupVrip+Oj02bq9ofw5F8sA= +github.com/xanzy/go-gitlab v0.106.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -727,10 +703,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= @@ -761,8 +733,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/arch v0.6.0 h1:S0JTfE48HbRj80+4tbvZDYsJ3tGv6BUU3XxyZ7CirAc= golang.org/x/arch v0.6.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= -golang.org/x/build v0.0.0-20240616231658-d6ee231f334b h1:g2bDentUrL5ARPWxm9++zo6zvqaby93QvbQJqxRCZHY= -golang.org/x/build v0.0.0-20240616231658-d6ee231f334b/go.mod h1:Q3Y4+jnPQCnNizilofBXOJ7EmO14lCIRAAE8pKZshic= +golang.org/x/build v0.0.0-20240712162709-0b82a206aadf h1:yxXHOnHUeXT9mop6DOYhyBNeVl20sSyKYR6+5YAwLnk= +golang.org/x/build v0.0.0-20240712162709-0b82a206aadf/go.mod h1:YsGhg4JUVUWLzdqU2wCrtpRrOveOql6w56FLDHq/CJ4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -781,8 +753,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -833,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.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -864,7 +836,6 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -873,8 +844,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= 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= @@ -964,16 +935,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= 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= @@ -1052,8 +1023,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.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= 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= @@ -1085,8 +1056,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE= -google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1130,8 +1099,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20240528184218-531527333157 h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE= -google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ= google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc= google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= From 3d753a9449b1324e736009d878efa30464eed01c Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Wed, 24 Jul 2024 17:22:03 +0500 Subject: [PATCH 08/70] PMM-13197 Update scripts to stop using deprecated repos. (#3084) --- build/ansible/roles/pmm2-images/tasks/main.yml | 2 +- build/packer/pmm2.el9.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/ansible/roles/pmm2-images/tasks/main.yml b/build/ansible/roles/pmm2-images/tasks/main.yml index b5cf372685..3ab716ba59 100644 --- a/build/ansible/roles/pmm2-images/tasks/main.yml +++ b/build/ansible/roles/pmm2-images/tasks/main.yml @@ -64,7 +64,7 @@ yum: name: "*" state: latest - disablerepo: percona-release-x86_64 + disablerepo: pmm2-server - name: Packages | Install OS tools for EL7 when: diff --git a/build/packer/pmm2.el9.json b/build/packer/pmm2.el9.json index ea1b7c118a..f259a2f07f 100644 --- a/build/packer/pmm2.el9.json +++ b/build/packer/pmm2.el9.json @@ -3,7 +3,7 @@ "single_disk": "false", "pmm2_server_repo": "testing", "pmm_client_repos": "pmm2-client testing", - "pmm_client_repo_name": "percona-testing-x86_64" + "pmm_client_repo_name": "pmm2-client-testing-x86_64" }, "builders": [ { From dbcdb0fbacdbfeabffaa72ebeb66373c7659e595 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 12:01:45 +0200 Subject: [PATCH 09/70] Bump github.com/aws/aws-sdk-go from 1.51.3 to 1.55.3 (#3096) Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.51.3 to 1.55.3. - [Release notes](https://github.com/aws/aws-sdk-go/releases) - [Commits](https://github.com/aws/aws-sdk-go/compare/v1.51.3...v1.55.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go 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 d110e768fd..eadc70536c 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/alecthomas/kong v0.9.0 github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 - github.com/aws/aws-sdk-go v1.51.3 + github.com/aws/aws-sdk-go v1.55.3 github.com/blang/semver v3.5.1+incompatible github.com/brianvoe/gofakeit/v6 v6.28.0 github.com/charmbracelet/bubbles v0.18.0 diff --git a/go.sum b/go.sum index 39d267310b..d71a0ef912 100644 --- a/go.sum +++ b/go.sum @@ -119,8 +119,8 @@ github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.40.7/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.51.3 h1:OqSyEXcJwf/XhZNVpMRgKlLA9nmbo5X8dwbll4RWxq8= -github.com/aws/aws-sdk-go v1.51.3/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.55.3 h1:0B5hOX+mIx7I5XPOrjrHlKSDQV/+ypFZpIHOx5LOk3E= +github.com/aws/aws-sdk-go v1.55.3/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= From 974e9e16fefce1378e222bb634c7888ea93eadc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jul 2024 19:54:02 +0100 Subject: [PATCH 10/70] Bump k8s.io/cli-runtime from 0.29.0 to 0.30.3 (#3079) * Bump k8s.io/cli-runtime from 0.29.0 to 0.30.3 Bumps [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) from 0.29.0 to 0.30.3. - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.29.0...v0.30.3) --- updated-dependencies: - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * PMM-7 go mod tidy. --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nurlan Moldomurov --- go.mod | 14 +++++++------- go.sum | 33 ++++++++++++++++----------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index eadc70536c..fb39a73abf 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/percona/pmm -go 1.22 +go 1.22.0 toolchain go1.22.5 @@ -89,11 +89,11 @@ require ( gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/reform.v1 v1.5.1 gopkg.in/yaml.v3 v3.0.1 - k8s.io/api v0.29.0 + k8s.io/api v0.30.3 k8s.io/apiextensions-apiserver v0.29.0 - k8s.io/apimachinery v0.29.0 - k8s.io/cli-runtime v0.29.0 - k8s.io/client-go v0.29.0 + k8s.io/apimachinery v0.30.3 + k8s.io/cli-runtime v0.30.3 + k8s.io/client-go v0.30.3 k8s.io/kubectl v0.29.0 sigs.k8s.io/controller-runtime v0.14.6 ) @@ -149,8 +149,8 @@ require ( golang.org/x/time v0.3.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - k8s.io/klog/v2 v2.110.1 // indirect - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect diff --git a/go.sum b/go.sum index d71a0ef912..832b8e3619 100644 --- a/go.sum +++ b/go.sum @@ -240,7 +240,6 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -612,10 +611,10 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= -github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= -github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.0 h1:54UJxxj6cPInHS3a35wm6BK/F9nHYueZ1NVujHDrnXE= +github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= 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= @@ -1221,20 +1220,20 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.0 h1:NiCdQMY1QOp1H8lfRyeEf8eOwV6+0xA6XEE44ohDX2A= -k8s.io/api v0.29.0/go.mod h1:sdVmXoz2Bo/cb77Pxi71IPTSErEW32xa4aXwKH7gfBA= +k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= +k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= -k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o= -k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis= -k8s.io/cli-runtime v0.29.0 h1:q2kC3cex4rOBLfPOnMSzV2BIrrQlx97gxHJs21KxKS4= -k8s.io/cli-runtime v0.29.0/go.mod h1:VKudXp3X7wR45L+nER85YUzOQIru28HQpXr0mTdeCrk= -k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8= -k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38= -k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= +k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/cli-runtime v0.30.3 h1:aG69oRzJuP2Q4o8dm+f5WJIX4ZBEwrvdID0+MXyUY6k= +k8s.io/cli-runtime v0.30.3/go.mod h1:hwrrRdd9P84CXSKzhHxrOivAR9BRnkMt0OeP5mj7X30= +k8s.io/client-go v0.30.3 h1:bHrJu3xQZNXIi8/MoxYtZBBWQQXwy16zqJwloXXfD3k= +k8s.io/client-go v0.30.3/go.mod h1:8d4pf8vYu665/kUbsxWAQ/JDBNWqfFeZnvFiVdmx89U= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/kubectl v0.29.0 h1:Oqi48gXjikDhrBF67AYuZRTcJV4lg2l42GmvsP7FmYI= k8s.io/kubectl v0.29.0/go.mod h1:0jMjGWIcMIQzmUaMgAzhSELv5WtHo2a8pq67DtviAJs= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= From 439e2fcd2c082699deb8f43c17651ef7d1dfe770 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Mon, 29 Jul 2024 09:37:16 +0300 Subject: [PATCH 11/70] PMM-13078 List available client versions (#3077) * PMM-13078 List available client versions * PMM-13078 add unit tests * PMM-13078 add an API test * PMM-13078 follow up on PR review comments * PMM-13078 address review comments --- Dockerfile | 3 +- api-tests/management/services/agent_test.go | 46 ++ api/management/v1/agent.pb.go | 392 +++++++++++++-- api/management/v1/agent.pb.validate.go | 346 +++++++++++++ api/management/v1/agent.proto | 30 ++ .../list_agent_versions_parameters.go | 127 +++++ .../list_agent_versions_responses.go | 470 ++++++++++++++++++ .../management_service_client.go | 41 ++ api/management/v1/json/v1.json | 89 ++++ api/management/v1/service.pb.go | 354 ++++++------- api/management/v1/service.pb.gw.go | 65 +++ api/management/v1/service.proto | 26 +- api/management/v1/service_grpc.pb.go | 40 ++ api/swagger/swagger-dev.json | 89 ++++ api/swagger/swagger.json | 89 ++++ managed/services/management/agent.go | 80 +++ managed/services/management/agent_test.go | 145 +++++- managed/services/management/service.go | 3 + 18 files changed, 2191 insertions(+), 244 deletions(-) create mode 100644 api-tests/management/services/agent_test.go create mode 100644 api/management/v1/json/client/management_service/list_agent_versions_parameters.go create mode 100644 api/management/v1/json/client/management_service/list_agent_versions_responses.go diff --git a/Dockerfile b/Dockerfile index 64db89a18d..7047453d6d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,4 +8,5 @@ RUN export GOPATH=$(go env GOPATH) && \ COPY . $GOPATH/src/github.com/percona/pmm/ WORKDIR $GOPATH/src/github.com/percona/pmm/api-tests/ -CMD make init run-race +CMD ["make", "init", "run-race"] + diff --git a/api-tests/management/services/agent_test.go b/api-tests/management/services/agent_test.go new file mode 100644 index 0000000000..89ea9c6ebd --- /dev/null +++ b/api-tests/management/services/agent_test.go @@ -0,0 +1,46 @@ +// 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 ( + "context" + "testing" + "time" + + "github.com/AlekSi/pointer" + "github.com/stretchr/testify/require" + + pmmapitests "github.com/percona/pmm/api-tests" + "github.com/percona/pmm/api/management/v1/json/client" + mgmtSvc "github.com/percona/pmm/api/management/v1/json/client/management_service" +) + +func TestListAgentVersions(t *testing.T) { + ctx, cancel := context.WithTimeout(pmmapitests.Context, 30*time.Second) + t.Cleanup(func() { cancel() }) + + t.Run("PMM Agent needs no update", func(t *testing.T) { + listAgentVersionsOK, err := client.Default.ManagementService.ListAgentVersions( + &mgmtSvc.ListAgentVersionsParams{ + Context: ctx, + }) + require.NoError(t, err) + require.Len(t, listAgentVersionsOK.Payload.AgentVersions, 1) + + expected := pointer.ToString(mgmtSvc.ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUPTODATE) + require.Equal(t, expected, listAgentVersionsOK.Payload.AgentVersions[0].Severity) + }) +} diff --git a/api/management/v1/agent.pb.go b/api/management/v1/agent.pb.go index 8e88d23464..39595809ac 100644 --- a/api/management/v1/agent.pb.go +++ b/api/management/v1/agent.pb.go @@ -22,6 +22,65 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type UpdateSeverity int32 + +const ( + UpdateSeverity_UPDATE_SEVERITY_UNSPECIFIED UpdateSeverity = 0 + // The client version is newer than the server version. + UpdateSeverity_UPDATE_SEVERITY_UNSUPPORTED UpdateSeverity = 1 + // The client version matches the server version. + UpdateSeverity_UPDATE_SEVERITY_UP_TO_DATE UpdateSeverity = 2 + // The client's minor or patch version is older. + UpdateSeverity_UPDATE_SEVERITY_REQUIRED UpdateSeverity = 3 + // The client's major version is older. + UpdateSeverity_UPDATE_SEVERITY_CRITICAL UpdateSeverity = 4 +) + +// Enum value maps for UpdateSeverity. +var ( + UpdateSeverity_name = map[int32]string{ + 0: "UPDATE_SEVERITY_UNSPECIFIED", + 1: "UPDATE_SEVERITY_UNSUPPORTED", + 2: "UPDATE_SEVERITY_UP_TO_DATE", + 3: "UPDATE_SEVERITY_REQUIRED", + 4: "UPDATE_SEVERITY_CRITICAL", + } + UpdateSeverity_value = map[string]int32{ + "UPDATE_SEVERITY_UNSPECIFIED": 0, + "UPDATE_SEVERITY_UNSUPPORTED": 1, + "UPDATE_SEVERITY_UP_TO_DATE": 2, + "UPDATE_SEVERITY_REQUIRED": 3, + "UPDATE_SEVERITY_CRITICAL": 4, + } +) + +func (x UpdateSeverity) Enum() *UpdateSeverity { + p := new(UpdateSeverity) + *p = x + return p +} + +func (x UpdateSeverity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UpdateSeverity) Descriptor() protoreflect.EnumDescriptor { + return file_management_v1_agent_proto_enumTypes[0].Descriptor() +} + +func (UpdateSeverity) Type() protoreflect.EnumType { + return &file_management_v1_agent_proto_enumTypes[0] +} + +func (x UpdateSeverity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UpdateSeverity.Descriptor instead. +func (UpdateSeverity) EnumDescriptor() ([]byte, []int) { + return file_management_v1_agent_proto_rawDescGZIP(), []int{0} +} + type UniversalAgent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -528,6 +587,167 @@ func (x *ListAgentsResponse) GetAgents() []*UniversalAgent { return nil } +type AgentVersions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Agent ID. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // Agent version. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + // Node name where the agent runs. + NodeName string `protobuf:"bytes,3,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` + // Update severity. + Severity UpdateSeverity `protobuf:"varint,4,opt,name=severity,proto3,enum=management.v1.UpdateSeverity" json:"severity,omitempty"` +} + +func (x *AgentVersions) Reset() { + *x = AgentVersions{} + if protoimpl.UnsafeEnabled { + mi := &file_management_v1_agent_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AgentVersions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AgentVersions) ProtoMessage() {} + +func (x *AgentVersions) ProtoReflect() protoreflect.Message { + mi := &file_management_v1_agent_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AgentVersions.ProtoReflect.Descriptor instead. +func (*AgentVersions) Descriptor() ([]byte, []int) { + return file_management_v1_agent_proto_rawDescGZIP(), []int{3} +} + +func (x *AgentVersions) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +func (x *AgentVersions) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *AgentVersions) GetNodeName() string { + if x != nil { + return x.NodeName + } + return "" +} + +func (x *AgentVersions) GetSeverity() UpdateSeverity { + if x != nil { + return x.Severity + } + return UpdateSeverity_UPDATE_SEVERITY_UNSPECIFIED +} + +type ListAgentVersionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListAgentVersionsRequest) Reset() { + *x = ListAgentVersionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_management_v1_agent_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAgentVersionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAgentVersionsRequest) ProtoMessage() {} + +func (x *ListAgentVersionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_management_v1_agent_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAgentVersionsRequest.ProtoReflect.Descriptor instead. +func (*ListAgentVersionsRequest) Descriptor() ([]byte, []int) { + return file_management_v1_agent_proto_rawDescGZIP(), []int{4} +} + +type ListAgentVersionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of Agent versions. + AgentVersions []*AgentVersions `protobuf:"bytes,1,rep,name=agent_versions,json=agentVersions,proto3" json:"agent_versions,omitempty"` +} + +func (x *ListAgentVersionsResponse) Reset() { + *x = ListAgentVersionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_management_v1_agent_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAgentVersionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAgentVersionsResponse) ProtoMessage() {} + +func (x *ListAgentVersionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_management_v1_agent_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAgentVersionsResponse.ProtoReflect.Descriptor instead. +func (*ListAgentVersionsResponse) Descriptor() ([]byte, []int) { + return file_management_v1_agent_proto_rawDescGZIP(), []int{5} +} + +func (x *ListAgentVersionsResponse) GetAgentVersions() []*AgentVersions { + if x != nil { + return x.AgentVersions + } + return nil +} + type UniversalAgent_MySQLOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -540,7 +760,7 @@ type UniversalAgent_MySQLOptions struct { func (x *UniversalAgent_MySQLOptions) Reset() { *x = UniversalAgent_MySQLOptions{} if protoimpl.UnsafeEnabled { - mi := &file_management_v1_agent_proto_msgTypes[3] + mi := &file_management_v1_agent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -553,7 +773,7 @@ func (x *UniversalAgent_MySQLOptions) String() string { func (*UniversalAgent_MySQLOptions) ProtoMessage() {} func (x *UniversalAgent_MySQLOptions) ProtoReflect() protoreflect.Message { - mi := &file_management_v1_agent_proto_msgTypes[3] + mi := &file_management_v1_agent_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -596,7 +816,7 @@ type UniversalAgent_AzureOptions struct { func (x *UniversalAgent_AzureOptions) Reset() { *x = UniversalAgent_AzureOptions{} if protoimpl.UnsafeEnabled { - mi := &file_management_v1_agent_proto_msgTypes[4] + mi := &file_management_v1_agent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -609,7 +829,7 @@ func (x *UniversalAgent_AzureOptions) String() string { func (*UniversalAgent_AzureOptions) ProtoMessage() {} func (x *UniversalAgent_AzureOptions) ProtoReflect() protoreflect.Message { - mi := &file_management_v1_agent_proto_msgTypes[4] + mi := &file_management_v1_agent_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -684,7 +904,7 @@ type UniversalAgent_MongoDBOptions struct { func (x *UniversalAgent_MongoDBOptions) Reset() { *x = UniversalAgent_MongoDBOptions{} if protoimpl.UnsafeEnabled { - mi := &file_management_v1_agent_proto_msgTypes[5] + mi := &file_management_v1_agent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -697,7 +917,7 @@ func (x *UniversalAgent_MongoDBOptions) String() string { func (*UniversalAgent_MongoDBOptions) ProtoMessage() {} func (x *UniversalAgent_MongoDBOptions) ProtoReflect() protoreflect.Message { - mi := &file_management_v1_agent_proto_msgTypes[5] + mi := &file_management_v1_agent_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -778,7 +998,7 @@ type UniversalAgent_PostgreSQLOptions struct { func (x *UniversalAgent_PostgreSQLOptions) Reset() { *x = UniversalAgent_PostgreSQLOptions{} if protoimpl.UnsafeEnabled { - mi := &file_management_v1_agent_proto_msgTypes[6] + mi := &file_management_v1_agent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -791,7 +1011,7 @@ func (x *UniversalAgent_PostgreSQLOptions) String() string { func (*UniversalAgent_PostgreSQLOptions) ProtoMessage() {} func (x *UniversalAgent_PostgreSQLOptions) ProtoReflect() protoreflect.Message { - mi := &file_management_v1_agent_proto_msgTypes[6] + mi := &file_management_v1_agent_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1019,19 +1239,47 @@ var file_management_v1_agent_proto_rawDesc = []byte{ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x42, 0xab, 0x01, 0x0a, - 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0d, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x9c, 0x01, 0x0a, + 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 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, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, + 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0xae, 0x01, 0x0a, 0x0e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x1b, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, + 0x1b, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, + 0x0a, 0x1a, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x55, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1c, + 0x0a, 0x18, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, + 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x42, 0xab, 0x01, 0x0a, 0x11, 0x63, + 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1047,34 +1295,41 @@ func file_management_v1_agent_proto_rawDescGZIP() []byte { } var ( - file_management_v1_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 8) - file_management_v1_agent_proto_goTypes = []any{ - (*UniversalAgent)(nil), // 0: management.v1.UniversalAgent - (*ListAgentsRequest)(nil), // 1: management.v1.ListAgentsRequest - (*ListAgentsResponse)(nil), // 2: management.v1.ListAgentsResponse - (*UniversalAgent_MySQLOptions)(nil), // 3: management.v1.UniversalAgent.MySQLOptions - (*UniversalAgent_AzureOptions)(nil), // 4: management.v1.UniversalAgent.AzureOptions - (*UniversalAgent_MongoDBOptions)(nil), // 5: management.v1.UniversalAgent.MongoDBOptions - (*UniversalAgent_PostgreSQLOptions)(nil), // 6: management.v1.UniversalAgent.PostgreSQLOptions - nil, // 7: management.v1.UniversalAgent.CustomLabelsEntry - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp + file_management_v1_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) + file_management_v1_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 11) + file_management_v1_agent_proto_goTypes = []any{ + (UpdateSeverity)(0), // 0: management.v1.UpdateSeverity + (*UniversalAgent)(nil), // 1: management.v1.UniversalAgent + (*ListAgentsRequest)(nil), // 2: management.v1.ListAgentsRequest + (*ListAgentsResponse)(nil), // 3: management.v1.ListAgentsResponse + (*AgentVersions)(nil), // 4: management.v1.AgentVersions + (*ListAgentVersionsRequest)(nil), // 5: management.v1.ListAgentVersionsRequest + (*ListAgentVersionsResponse)(nil), // 6: management.v1.ListAgentVersionsResponse + (*UniversalAgent_MySQLOptions)(nil), // 7: management.v1.UniversalAgent.MySQLOptions + (*UniversalAgent_AzureOptions)(nil), // 8: management.v1.UniversalAgent.AzureOptions + (*UniversalAgent_MongoDBOptions)(nil), // 9: management.v1.UniversalAgent.MongoDBOptions + (*UniversalAgent_PostgreSQLOptions)(nil), // 10: management.v1.UniversalAgent.PostgreSQLOptions + nil, // 11: management.v1.UniversalAgent.CustomLabelsEntry + (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp } ) var file_management_v1_agent_proto_depIdxs = []int32{ - 4, // 0: management.v1.UniversalAgent.azure_options:type_name -> management.v1.UniversalAgent.AzureOptions - 8, // 1: management.v1.UniversalAgent.created_at:type_name -> google.protobuf.Timestamp - 7, // 2: management.v1.UniversalAgent.custom_labels:type_name -> management.v1.UniversalAgent.CustomLabelsEntry - 5, // 3: management.v1.UniversalAgent.mongo_db_options:type_name -> management.v1.UniversalAgent.MongoDBOptions - 3, // 4: management.v1.UniversalAgent.mysql_options:type_name -> management.v1.UniversalAgent.MySQLOptions - 6, // 5: management.v1.UniversalAgent.postgresql_options:type_name -> management.v1.UniversalAgent.PostgreSQLOptions - 8, // 6: management.v1.UniversalAgent.updated_at:type_name -> google.protobuf.Timestamp - 0, // 7: management.v1.ListAgentsResponse.agents:type_name -> management.v1.UniversalAgent - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 8, // 0: management.v1.UniversalAgent.azure_options:type_name -> management.v1.UniversalAgent.AzureOptions + 12, // 1: management.v1.UniversalAgent.created_at:type_name -> google.protobuf.Timestamp + 11, // 2: management.v1.UniversalAgent.custom_labels:type_name -> management.v1.UniversalAgent.CustomLabelsEntry + 9, // 3: management.v1.UniversalAgent.mongo_db_options:type_name -> management.v1.UniversalAgent.MongoDBOptions + 7, // 4: management.v1.UniversalAgent.mysql_options:type_name -> management.v1.UniversalAgent.MySQLOptions + 10, // 5: management.v1.UniversalAgent.postgresql_options:type_name -> management.v1.UniversalAgent.PostgreSQLOptions + 12, // 6: management.v1.UniversalAgent.updated_at:type_name -> google.protobuf.Timestamp + 1, // 7: management.v1.ListAgentsResponse.agents:type_name -> management.v1.UniversalAgent + 0, // 8: management.v1.AgentVersions.severity:type_name -> management.v1.UpdateSeverity + 4, // 9: management.v1.ListAgentVersionsResponse.agent_versions:type_name -> management.v1.AgentVersions + 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_management_v1_agent_proto_init() } @@ -1120,7 +1375,7 @@ func file_management_v1_agent_proto_init() { } } file_management_v1_agent_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*UniversalAgent_MySQLOptions); i { + switch v := v.(*AgentVersions); i { case 0: return &v.state case 1: @@ -1132,7 +1387,7 @@ func file_management_v1_agent_proto_init() { } } file_management_v1_agent_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*UniversalAgent_AzureOptions); i { + switch v := v.(*ListAgentVersionsRequest); i { case 0: return &v.state case 1: @@ -1144,7 +1399,7 @@ func file_management_v1_agent_proto_init() { } } file_management_v1_agent_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*UniversalAgent_MongoDBOptions); i { + switch v := v.(*ListAgentVersionsResponse); i { case 0: return &v.state case 1: @@ -1156,6 +1411,42 @@ func file_management_v1_agent_proto_init() { } } file_management_v1_agent_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*UniversalAgent_MySQLOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_management_v1_agent_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*UniversalAgent_AzureOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_management_v1_agent_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*UniversalAgent_MongoDBOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_management_v1_agent_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*UniversalAgent_PostgreSQLOptions); i { case 0: return &v.state @@ -1173,13 +1464,14 @@ func file_management_v1_agent_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_management_v1_agent_proto_rawDesc, - NumEnums: 0, - NumMessages: 8, + NumEnums: 1, + NumMessages: 11, NumExtensions: 0, NumServices: 0, }, GoTypes: file_management_v1_agent_proto_goTypes, DependencyIndexes: file_management_v1_agent_proto_depIdxs, + EnumInfos: file_management_v1_agent_proto_enumTypes, MessageInfos: file_management_v1_agent_proto_msgTypes, }.Build() File_management_v1_agent_proto = out.File diff --git a/api/management/v1/agent.pb.validate.go b/api/management/v1/agent.pb.validate.go index 7021a16ca6..24ca2995eb 100644 --- a/api/management/v1/agent.pb.validate.go +++ b/api/management/v1/agent.pb.validate.go @@ -617,6 +617,352 @@ var _ interface { ErrorName() string } = ListAgentsResponseValidationError{} +// Validate checks the field values on AgentVersions with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *AgentVersions) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AgentVersions with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AgentVersionsMultiError, or +// nil if none found. +func (m *AgentVersions) ValidateAll() error { + return m.validate(true) +} + +func (m *AgentVersions) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for AgentId + + // no validation rules for Version + + // no validation rules for NodeName + + // no validation rules for Severity + + if len(errors) > 0 { + return AgentVersionsMultiError(errors) + } + + return nil +} + +// AgentVersionsMultiError is an error wrapping multiple validation errors +// returned by AgentVersions.ValidateAll() if the designated constraints +// aren't met. +type AgentVersionsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AgentVersionsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AgentVersionsMultiError) AllErrors() []error { return m } + +// AgentVersionsValidationError is the validation error returned by +// AgentVersions.Validate if the designated constraints aren't met. +type AgentVersionsValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AgentVersionsValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AgentVersionsValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AgentVersionsValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AgentVersionsValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AgentVersionsValidationError) ErrorName() string { return "AgentVersionsValidationError" } + +// Error satisfies the builtin error interface +func (e AgentVersionsValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAgentVersions.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AgentVersionsValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AgentVersionsValidationError{} + +// Validate checks the field values on ListAgentVersionsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListAgentVersionsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAgentVersionsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListAgentVersionsRequestMultiError, or nil if none found. +func (m *ListAgentVersionsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAgentVersionsRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return ListAgentVersionsRequestMultiError(errors) + } + + return nil +} + +// ListAgentVersionsRequestMultiError is an error wrapping multiple validation +// errors returned by ListAgentVersionsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListAgentVersionsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAgentVersionsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAgentVersionsRequestMultiError) AllErrors() []error { return m } + +// ListAgentVersionsRequestValidationError is the validation error returned by +// ListAgentVersionsRequest.Validate if the designated constraints aren't met. +type ListAgentVersionsRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListAgentVersionsRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListAgentVersionsRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListAgentVersionsRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListAgentVersionsRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListAgentVersionsRequestValidationError) ErrorName() string { + return "ListAgentVersionsRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListAgentVersionsRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListAgentVersionsRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListAgentVersionsRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListAgentVersionsRequestValidationError{} + +// Validate checks the field values on ListAgentVersionsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListAgentVersionsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAgentVersionsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListAgentVersionsResponseMultiError, or nil if none found. +func (m *ListAgentVersionsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAgentVersionsResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetAgentVersions() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListAgentVersionsResponseValidationError{ + field: fmt.Sprintf("AgentVersions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListAgentVersionsResponseValidationError{ + field: fmt.Sprintf("AgentVersions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListAgentVersionsResponseValidationError{ + field: fmt.Sprintf("AgentVersions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return ListAgentVersionsResponseMultiError(errors) + } + + return nil +} + +// ListAgentVersionsResponseMultiError is an error wrapping multiple validation +// errors returned by ListAgentVersionsResponse.ValidateAll() if the +// designated constraints aren't met. +type ListAgentVersionsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAgentVersionsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAgentVersionsResponseMultiError) AllErrors() []error { return m } + +// ListAgentVersionsResponseValidationError is the validation error returned by +// ListAgentVersionsResponse.Validate if the designated constraints aren't met. +type ListAgentVersionsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListAgentVersionsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListAgentVersionsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListAgentVersionsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListAgentVersionsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListAgentVersionsResponseValidationError) ErrorName() string { + return "ListAgentVersionsResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListAgentVersionsResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListAgentVersionsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListAgentVersionsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListAgentVersionsResponseValidationError{} + // Validate checks the field values on UniversalAgent_MySQLOptions with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. diff --git a/api/management/v1/agent.proto b/api/management/v1/agent.proto index aa129afe49..05ca8b2d4b 100644 --- a/api/management/v1/agent.proto +++ b/api/management/v1/agent.proto @@ -146,3 +146,33 @@ message ListAgentsResponse { // List of Agents. repeated UniversalAgent agents = 1; } + +enum UpdateSeverity { + UPDATE_SEVERITY_UNSPECIFIED = 0; + // The client version is newer than the server version. + UPDATE_SEVERITY_UNSUPPORTED = 1; + // The client version matches the server version. + UPDATE_SEVERITY_UP_TO_DATE = 2; + // The client's minor or patch version is older. + UPDATE_SEVERITY_REQUIRED = 3; + // The client's major version is older. + UPDATE_SEVERITY_CRITICAL = 4; +} + +message AgentVersions { + // Agent ID. + string agent_id = 1; + // Agent version. + string version = 2; + // Node name where the agent runs. + string node_name = 3; + // Update severity. + UpdateSeverity severity = 4; +} + +message ListAgentVersionsRequest {} + +message ListAgentVersionsResponse { + // List of Agent versions. + repeated AgentVersions agent_versions = 1; +} diff --git a/api/management/v1/json/client/management_service/list_agent_versions_parameters.go b/api/management/v1/json/client/management_service/list_agent_versions_parameters.go new file mode 100644 index 0000000000..d7f16fa9b2 --- /dev/null +++ b/api/management/v1/json/client/management_service/list_agent_versions_parameters.go @@ -0,0 +1,127 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package management_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewListAgentVersionsParams creates a new ListAgentVersionsParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. +func NewListAgentVersionsParams() *ListAgentVersionsParams { + return &ListAgentVersionsParams{ + timeout: cr.DefaultTimeout, + } +} + +// NewListAgentVersionsParamsWithTimeout creates a new ListAgentVersionsParams object +// with the ability to set a timeout on a request. +func NewListAgentVersionsParamsWithTimeout(timeout time.Duration) *ListAgentVersionsParams { + return &ListAgentVersionsParams{ + timeout: timeout, + } +} + +// NewListAgentVersionsParamsWithContext creates a new ListAgentVersionsParams object +// with the ability to set a context for a request. +func NewListAgentVersionsParamsWithContext(ctx context.Context) *ListAgentVersionsParams { + return &ListAgentVersionsParams{ + Context: ctx, + } +} + +// NewListAgentVersionsParamsWithHTTPClient creates a new ListAgentVersionsParams object +// with the ability to set a custom HTTPClient for a request. +func NewListAgentVersionsParamsWithHTTPClient(client *http.Client) *ListAgentVersionsParams { + return &ListAgentVersionsParams{ + HTTPClient: client, + } +} + +/* +ListAgentVersionsParams contains all the parameters to send to the API endpoint + + for the list agent versions operation. + + Typically these are written to a http.Request. +*/ +type ListAgentVersionsParams struct { + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithDefaults hydrates default values in the list agent versions params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ListAgentVersionsParams) WithDefaults() *ListAgentVersionsParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the list agent versions params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ListAgentVersionsParams) SetDefaults() { + // no default values defined for this parameter +} + +// WithTimeout adds the timeout to the list agent versions params +func (o *ListAgentVersionsParams) WithTimeout(timeout time.Duration) *ListAgentVersionsParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the list agent versions params +func (o *ListAgentVersionsParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the list agent versions params +func (o *ListAgentVersionsParams) WithContext(ctx context.Context) *ListAgentVersionsParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the list agent versions params +func (o *ListAgentVersionsParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the list agent versions params +func (o *ListAgentVersionsParams) WithHTTPClient(client *http.Client) *ListAgentVersionsParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the list agent versions params +func (o *ListAgentVersionsParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WriteToRequest writes these params to a swagger request +func (o *ListAgentVersionsParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/management/v1/json/client/management_service/list_agent_versions_responses.go b/api/management/v1/json/client/management_service/list_agent_versions_responses.go new file mode 100644 index 0000000000..989c314387 --- /dev/null +++ b/api/management/v1/json/client/management_service/list_agent_versions_responses.go @@ -0,0 +1,470 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package management_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "encoding/json" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// ListAgentVersionsReader is a Reader for the ListAgentVersions structure. +type ListAgentVersionsReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ListAgentVersionsReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewListAgentVersionsOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewListAgentVersionsDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewListAgentVersionsOK creates a ListAgentVersionsOK with default headers values +func NewListAgentVersionsOK() *ListAgentVersionsOK { + return &ListAgentVersionsOK{} +} + +/* +ListAgentVersionsOK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ListAgentVersionsOK struct { + Payload *ListAgentVersionsOKBody +} + +func (o *ListAgentVersionsOK) Error() string { + return fmt.Sprintf("[GET /v1/management/agents/versions][%d] listAgentVersionsOk %+v", 200, o.Payload) +} + +func (o *ListAgentVersionsOK) GetPayload() *ListAgentVersionsOKBody { + return o.Payload +} + +func (o *ListAgentVersionsOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListAgentVersionsOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewListAgentVersionsDefault creates a ListAgentVersionsDefault with default headers values +func NewListAgentVersionsDefault(code int) *ListAgentVersionsDefault { + return &ListAgentVersionsDefault{ + _statusCode: code, + } +} + +/* +ListAgentVersionsDefault describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ListAgentVersionsDefault struct { + _statusCode int + + Payload *ListAgentVersionsDefaultBody +} + +// Code gets the status code for the list agent versions default response +func (o *ListAgentVersionsDefault) Code() int { + return o._statusCode +} + +func (o *ListAgentVersionsDefault) Error() string { + return fmt.Sprintf("[GET /v1/management/agents/versions][%d] ListAgentVersions default %+v", o._statusCode, o.Payload) +} + +func (o *ListAgentVersionsDefault) GetPayload() *ListAgentVersionsDefaultBody { + return o.Payload +} + +func (o *ListAgentVersionsDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListAgentVersionsDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/* +ListAgentVersionsDefaultBody list agent versions default body +swagger:model ListAgentVersionsDefaultBody +*/ +type ListAgentVersionsDefaultBody struct { + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*ListAgentVersionsDefaultBodyDetailsItems0 `json:"details"` +} + +// Validate validates this list agent versions default body +func (o *ListAgentVersionsDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ListAgentVersionsDefaultBody) validateDetails(formats strfmt.Registry) error { + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("ListAgentVersions default" + "." + "details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("ListAgentVersions default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this list agent versions default body based on the context it is used +func (o *ListAgentVersionsDefaultBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateDetails(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ListAgentVersionsDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { + if err := o.Details[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("ListAgentVersions default" + "." + "details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("ListAgentVersions default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentVersionsDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentVersionsDefaultBody) UnmarshalBinary(b []byte) error { + var res ListAgentVersionsDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ListAgentVersionsDefaultBodyDetailsItems0 list agent versions default body details items0 +swagger:model ListAgentVersionsDefaultBodyDetailsItems0 +*/ +type ListAgentVersionsDefaultBodyDetailsItems0 struct { + // at type + AtType string `json:"@type,omitempty"` +} + +// Validate validates this list agent versions default body details items0 +func (o *ListAgentVersionsDefaultBodyDetailsItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this list agent versions default body details items0 based on context it is used +func (o *ListAgentVersionsDefaultBodyDetailsItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentVersionsDefaultBodyDetailsItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentVersionsDefaultBodyDetailsItems0) UnmarshalBinary(b []byte) error { + var res ListAgentVersionsDefaultBodyDetailsItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ListAgentVersionsOKBody list agent versions OK body +swagger:model ListAgentVersionsOKBody +*/ +type ListAgentVersionsOKBody struct { + // List of Agent versions. + AgentVersions []*ListAgentVersionsOKBodyAgentVersionsItems0 `json:"agent_versions"` +} + +// Validate validates this list agent versions OK body +func (o *ListAgentVersionsOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateAgentVersions(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ListAgentVersionsOKBody) validateAgentVersions(formats strfmt.Registry) error { + if swag.IsZero(o.AgentVersions) { // not required + return nil + } + + for i := 0; i < len(o.AgentVersions); i++ { + if swag.IsZero(o.AgentVersions[i]) { // not required + continue + } + + if o.AgentVersions[i] != nil { + if err := o.AgentVersions[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("listAgentVersionsOk" + "." + "agent_versions" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("listAgentVersionsOk" + "." + "agent_versions" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this list agent versions OK body based on the context it is used +func (o *ListAgentVersionsOKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateAgentVersions(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ListAgentVersionsOKBody) contextValidateAgentVersions(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.AgentVersions); i++ { + if o.AgentVersions[i] != nil { + if err := o.AgentVersions[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("listAgentVersionsOk" + "." + "agent_versions" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("listAgentVersionsOk" + "." + "agent_versions" + "." + strconv.Itoa(i)) + } + return err + } + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentVersionsOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentVersionsOKBody) UnmarshalBinary(b []byte) error { + var res ListAgentVersionsOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ListAgentVersionsOKBodyAgentVersionsItems0 list agent versions OK body agent versions items0 +swagger:model ListAgentVersionsOKBodyAgentVersionsItems0 +*/ +type ListAgentVersionsOKBodyAgentVersionsItems0 struct { + // Agent ID. + AgentID string `json:"agent_id,omitempty"` + + // Agent version. + Version string `json:"version,omitempty"` + + // Node name where the agent runs. + NodeName string `json:"node_name,omitempty"` + + // - UPDATE_SEVERITY_UNSUPPORTED: The client version is newer than the server version. + // - UPDATE_SEVERITY_UP_TO_DATE: The client version matches the server version. + // - UPDATE_SEVERITY_REQUIRED: The client's minor or patch version is older. + // - UPDATE_SEVERITY_CRITICAL: The client's major version is older. + // Enum: [UPDATE_SEVERITY_UNSPECIFIED UPDATE_SEVERITY_UNSUPPORTED UPDATE_SEVERITY_UP_TO_DATE UPDATE_SEVERITY_REQUIRED UPDATE_SEVERITY_CRITICAL] + Severity *string `json:"severity,omitempty"` +} + +// Validate validates this list agent versions OK body agent versions items0 +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateSeverity(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var listAgentVersionsOkBodyAgentVersionsItems0TypeSeverityPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["UPDATE_SEVERITY_UNSPECIFIED","UPDATE_SEVERITY_UNSUPPORTED","UPDATE_SEVERITY_UP_TO_DATE","UPDATE_SEVERITY_REQUIRED","UPDATE_SEVERITY_CRITICAL"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + listAgentVersionsOkBodyAgentVersionsItems0TypeSeverityPropEnum = append(listAgentVersionsOkBodyAgentVersionsItems0TypeSeverityPropEnum, v) + } +} + +const ( + + // ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUNSPECIFIED captures enum value "UPDATE_SEVERITY_UNSPECIFIED" + ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUNSPECIFIED string = "UPDATE_SEVERITY_UNSPECIFIED" + + // ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUNSUPPORTED captures enum value "UPDATE_SEVERITY_UNSUPPORTED" + ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUNSUPPORTED string = "UPDATE_SEVERITY_UNSUPPORTED" + + // ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUPTODATE captures enum value "UPDATE_SEVERITY_UP_TO_DATE" + ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUPTODATE string = "UPDATE_SEVERITY_UP_TO_DATE" + + // ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYREQUIRED captures enum value "UPDATE_SEVERITY_REQUIRED" + ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYREQUIRED string = "UPDATE_SEVERITY_REQUIRED" + + // ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYCRITICAL captures enum value "UPDATE_SEVERITY_CRITICAL" + ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYCRITICAL string = "UPDATE_SEVERITY_CRITICAL" +) + +// prop value enum +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) validateSeverityEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, listAgentVersionsOkBodyAgentVersionsItems0TypeSeverityPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) validateSeverity(formats strfmt.Registry) error { + if swag.IsZero(o.Severity) { // not required + return nil + } + + // value enum + if err := o.validateSeverityEnum("severity", "body", *o.Severity); err != nil { + return err + } + + return nil +} + +// ContextValidate validates this list agent versions OK body agent versions items0 based on context it is used +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentVersionsOKBodyAgentVersionsItems0) UnmarshalBinary(b []byte) error { + var res ListAgentVersionsOKBodyAgentVersionsItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/management/v1/json/client/management_service/management_service_client.go b/api/management/v1/json/client/management_service/management_service_client.go index 2cf93a3a90..3fedc6bbc0 100644 --- a/api/management/v1/json/client/management_service/management_service_client.go +++ b/api/management/v1/json/client/management_service/management_service_client.go @@ -40,6 +40,8 @@ type ClientService interface { GetNode(params *GetNodeParams, opts ...ClientOption) (*GetNodeOK, error) + ListAgentVersions(params *ListAgentVersionsParams, opts ...ClientOption) (*ListAgentVersionsOK, error) + ListAgents(params *ListAgentsParams, opts ...ClientOption) (*ListAgentsOK, error) ListNodes(params *ListNodesParams, opts ...ClientOption) (*ListNodesOK, error) @@ -289,6 +291,45 @@ func (a *Client) GetNode(params *GetNodeParams, opts ...ClientOption) (*GetNodeO return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) } +/* +ListAgentVersions lists agent versions + +Lists Agent versions and their update severity. +*/ +func (a *Client) ListAgentVersions(params *ListAgentVersionsParams, opts ...ClientOption) (*ListAgentVersionsOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewListAgentVersionsParams() + } + op := &runtime.ClientOperation{ + ID: "ListAgentVersions", + Method: "GET", + PathPattern: "/v1/management/agents/versions", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &ListAgentVersionsReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ListAgentVersionsOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ListAgentVersionsDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + /* ListAgents lists agents diff --git a/api/management/v1/json/v1.json b/api/management/v1/json/v1.json index 3bb84061f2..d98c86ae38 100644 --- a/api/management/v1/json/v1.json +++ b/api/management/v1/json/v1.json @@ -393,6 +393,95 @@ } } }, + "/v1/management/agents/versions": { + "get": { + "description": "Lists Agent versions and their update severity.", + "tags": [ + "ManagementService" + ], + "summary": "List Agent Versions", + "operationId": "ListAgentVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "agent_versions": { + "description": "List of Agent versions.", + "type": "array", + "items": { + "type": "object", + "properties": { + "agent_id": { + "description": "Agent ID.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Node name where the agent runs.", + "type": "string", + "x-order": 2 + }, + "severity": { + "description": " - UPDATE_SEVERITY_UNSUPPORTED: The client version is newer than the server version.\n - UPDATE_SEVERITY_UP_TO_DATE: The client version matches the server version.\n - UPDATE_SEVERITY_REQUIRED: The client's minor or patch version is older.\n - UPDATE_SEVERITY_CRITICAL: The client's major version is older.", + "type": "string", + "default": "UPDATE_SEVERITY_UNSPECIFIED", + "enum": [ + "UPDATE_SEVERITY_UNSPECIFIED", + "UPDATE_SEVERITY_UNSUPPORTED", + "UPDATE_SEVERITY_UP_TO_DATE", + "UPDATE_SEVERITY_REQUIRED", + "UPDATE_SEVERITY_CRITICAL" + ], + "x-order": 3 + }, + "version": { + "description": "Agent version.", + "type": "string", + "x-order": 1 + } + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + }, + "message": { + "type": "string", + "x-order": 1 + } + } + } + } + } + } + }, "/v1/management/annotations": { "post": { "description": "Adds an annotation.", diff --git a/api/management/v1/service.pb.go b/api/management/v1/service.pb.go index 93ca93c69a..bb125bbfc3 100644 --- a/api/management/v1/service.pb.go +++ b/api/management/v1/service.pb.go @@ -984,7 +984,7 @@ var file_management_v1_service_proto_rawDesc = []byte{ 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x32, 0xc8, 0x11, 0x0a, 0x11, 0x4d, 0x61, 0x6e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x32, 0xa2, 0x13, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, @@ -1006,137 +1006,151 @@ var file_management_v1_service_proto_rawDesc = []byte{ 0x6e, 0x74, 0x73, 0x1a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x0c, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x92, 0x41, 0x38, 0x12, 0x0f, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x1a, 0x25, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x4e, 0x6f, 0x64, - 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x70, 0x6d, 0x6d, 0x2d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x0e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x92, 0x41, 0x46, 0x12, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x20, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2f, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x5a, 0x92, 0x41, 0x38, 0x12, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, + 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x1a, 0x25, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x61, 0x20, 0x70, 0x6d, 0x6d, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x0e, + 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x24, + 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x5e, 0x92, 0x41, 0x35, 0x12, 0x11, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x20, 0x61, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x1a, 0x20, 0x55, 0x6e, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x20, 0x61, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x70, 0x6d, 0x6d, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, - 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x45, 0x92, 0x41, 0x26, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x1a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x07, 0x47, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x92, 0x41, 0x25, 0x12, 0x08, 0x47, 0x65, 0x74, 0x20, 0x4e, - 0x6f, 0x64, 0x65, 0x1a, 0x19, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb2, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3a, 0x12, 0x0d, 0x41, - 0x64, 0x64, 0x20, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x29, 0x41, 0x64, - 0x64, 0x73, 0x20, 0x61, 0x20, 0x73, 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, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, - 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x57, 0x92, 0x41, 0x35, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x24, 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, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xaf, 0x01, 0x0a, - 0x0b, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x12, 0x21, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x59, 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, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x3a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x12, 0x8f, - 0x02, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, - 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x01, 0x92, 0x41, 0x67, 0x12, 0x17, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x1a, 0x4c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x20, 0x41, 0x7a, - 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x2c, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x44, 0x42, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x3a, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, - 0x12, 0xc6, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x92, 0x41, 0x35, + 0x12, 0x11, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x4e, + 0x6f, 0x64, 0x65, 0x1a, 0x20, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x20, 0x61, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6d, 0x6d, 0x2d, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, + 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x95, 0x01, 0x0a, 0x09, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x92, 0x41, + 0x26, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x1a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x73, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, + 0x92, 0x41, 0x25, 0x12, 0x08, 0x47, 0x65, 0x74, 0x20, 0x4e, 0x6f, 0x64, 0x65, 0x1a, 0x19, 0x47, + 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x4e, 0x6f, 0x64, + 0x65, 0x20, 0x62, 0x79, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6e, + 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb2, + 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, - 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x92, 0x41, 0x36, 0x12, 0x12, 0x41, 0x64, 0x64, - 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x1a, - 0x20, 0x41, 0x64, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x20, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x5f, 0x92, 0x41, 0x3a, 0x12, 0x0d, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x29, 0x41, 0x64, 0x64, 0x73, 0x20, 0x61, 0x20, 0x73, + 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, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x0d, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x92, 0x41, 0x3c, 0x12, 0x10, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x20, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x28, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x20, 0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x74, 0x73, 0x20, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, 0x2f, + 0x63, 0x65, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x92, + 0x41, 0x35, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x1a, 0x24, 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, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x42, 0xad, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, - 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x76, 0x31, - 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, + 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 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, 0x28, + 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x12, 0x8f, 0x02, 0x0a, 0x15, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0x2b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x01, + 0x92, 0x41, 0x67, 0x12, 0x17, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x1a, 0x4c, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x2c, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x44, 0x42, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x50, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x12, 0xc6, 0x01, 0x0a, 0x10, 0x41, + 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, + 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x61, 0x92, 0x41, 0x36, 0x12, 0x12, 0x41, 0x64, 0x64, 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x1a, 0x20, 0x41, 0x64, 0x64, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 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, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x12, 0xc7, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x6b, 0x92, 0x41, 0x3c, 0x12, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x61, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x28, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, + 0x20, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x61, 0x6c, 0x6f, 0x6e, 0x67, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x74, 0x73, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0xad, 0x01, + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, + 0xaa, 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x19, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1183,22 +1197,24 @@ var ( (*UniversalAgent)(nil), // 25: management.v1.UniversalAgent (*AddAnnotationRequest)(nil), // 26: management.v1.AddAnnotationRequest (*ListAgentsRequest)(nil), // 27: management.v1.ListAgentsRequest - (*RegisterNodeRequest)(nil), // 28: management.v1.RegisterNodeRequest - (*UnregisterNodeRequest)(nil), // 29: management.v1.UnregisterNodeRequest - (*ListNodesRequest)(nil), // 30: management.v1.ListNodesRequest - (*GetNodeRequest)(nil), // 31: management.v1.GetNodeRequest - (*DiscoverRDSRequest)(nil), // 32: management.v1.DiscoverRDSRequest - (*DiscoverAzureDatabaseRequest)(nil), // 33: management.v1.DiscoverAzureDatabaseRequest - (*AddAzureDatabaseRequest)(nil), // 34: management.v1.AddAzureDatabaseRequest - (*AddAnnotationResponse)(nil), // 35: management.v1.AddAnnotationResponse - (*ListAgentsResponse)(nil), // 36: management.v1.ListAgentsResponse - (*RegisterNodeResponse)(nil), // 37: management.v1.RegisterNodeResponse - (*UnregisterNodeResponse)(nil), // 38: management.v1.UnregisterNodeResponse - (*ListNodesResponse)(nil), // 39: management.v1.ListNodesResponse - (*GetNodeResponse)(nil), // 40: management.v1.GetNodeResponse - (*DiscoverRDSResponse)(nil), // 41: management.v1.DiscoverRDSResponse - (*DiscoverAzureDatabaseResponse)(nil), // 42: management.v1.DiscoverAzureDatabaseResponse - (*AddAzureDatabaseResponse)(nil), // 43: management.v1.AddAzureDatabaseResponse + (*ListAgentVersionsRequest)(nil), // 28: management.v1.ListAgentVersionsRequest + (*RegisterNodeRequest)(nil), // 29: management.v1.RegisterNodeRequest + (*UnregisterNodeRequest)(nil), // 30: management.v1.UnregisterNodeRequest + (*ListNodesRequest)(nil), // 31: management.v1.ListNodesRequest + (*GetNodeRequest)(nil), // 32: management.v1.GetNodeRequest + (*DiscoverRDSRequest)(nil), // 33: management.v1.DiscoverRDSRequest + (*DiscoverAzureDatabaseRequest)(nil), // 34: management.v1.DiscoverAzureDatabaseRequest + (*AddAzureDatabaseRequest)(nil), // 35: management.v1.AddAzureDatabaseRequest + (*AddAnnotationResponse)(nil), // 36: management.v1.AddAnnotationResponse + (*ListAgentsResponse)(nil), // 37: management.v1.ListAgentsResponse + (*ListAgentVersionsResponse)(nil), // 38: management.v1.ListAgentVersionsResponse + (*RegisterNodeResponse)(nil), // 39: management.v1.RegisterNodeResponse + (*UnregisterNodeResponse)(nil), // 40: management.v1.UnregisterNodeResponse + (*ListNodesResponse)(nil), // 41: management.v1.ListNodesResponse + (*GetNodeResponse)(nil), // 42: management.v1.GetNodeResponse + (*DiscoverRDSResponse)(nil), // 43: management.v1.DiscoverRDSResponse + (*DiscoverAzureDatabaseResponse)(nil), // 44: management.v1.DiscoverAzureDatabaseResponse + (*AddAzureDatabaseResponse)(nil), // 45: management.v1.AddAzureDatabaseResponse } ) @@ -1227,30 +1243,32 @@ var file_management_v1_service_proto_depIdxs = []int32{ 5, // 21: management.v1.ListServicesResponse.services:type_name -> management.v1.UniversalService 26, // 22: management.v1.ManagementService.AddAnnotation:input_type -> management.v1.AddAnnotationRequest 27, // 23: management.v1.ManagementService.ListAgents:input_type -> management.v1.ListAgentsRequest - 28, // 24: management.v1.ManagementService.RegisterNode:input_type -> management.v1.RegisterNodeRequest - 29, // 25: management.v1.ManagementService.UnregisterNode:input_type -> management.v1.UnregisterNodeRequest - 30, // 26: management.v1.ManagementService.ListNodes:input_type -> management.v1.ListNodesRequest - 31, // 27: management.v1.ManagementService.GetNode:input_type -> management.v1.GetNodeRequest - 1, // 28: management.v1.ManagementService.AddService:input_type -> management.v1.AddServiceRequest - 6, // 29: management.v1.ManagementService.ListServices:input_type -> management.v1.ListServicesRequest - 32, // 30: management.v1.ManagementService.DiscoverRDS:input_type -> management.v1.DiscoverRDSRequest - 33, // 31: management.v1.ManagementService.DiscoverAzureDatabase:input_type -> management.v1.DiscoverAzureDatabaseRequest - 34, // 32: management.v1.ManagementService.AddAzureDatabase:input_type -> management.v1.AddAzureDatabaseRequest - 3, // 33: management.v1.ManagementService.RemoveService:input_type -> management.v1.RemoveServiceRequest - 35, // 34: management.v1.ManagementService.AddAnnotation:output_type -> management.v1.AddAnnotationResponse - 36, // 35: management.v1.ManagementService.ListAgents:output_type -> management.v1.ListAgentsResponse - 37, // 36: management.v1.ManagementService.RegisterNode:output_type -> management.v1.RegisterNodeResponse - 38, // 37: management.v1.ManagementService.UnregisterNode:output_type -> management.v1.UnregisterNodeResponse - 39, // 38: management.v1.ManagementService.ListNodes:output_type -> management.v1.ListNodesResponse - 40, // 39: management.v1.ManagementService.GetNode:output_type -> management.v1.GetNodeResponse - 2, // 40: management.v1.ManagementService.AddService:output_type -> management.v1.AddServiceResponse - 7, // 41: management.v1.ManagementService.ListServices:output_type -> management.v1.ListServicesResponse - 41, // 42: management.v1.ManagementService.DiscoverRDS:output_type -> management.v1.DiscoverRDSResponse - 42, // 43: management.v1.ManagementService.DiscoverAzureDatabase:output_type -> management.v1.DiscoverAzureDatabaseResponse - 43, // 44: management.v1.ManagementService.AddAzureDatabase:output_type -> management.v1.AddAzureDatabaseResponse - 4, // 45: management.v1.ManagementService.RemoveService:output_type -> management.v1.RemoveServiceResponse - 34, // [34:46] is the sub-list for method output_type - 22, // [22:34] is the sub-list for method input_type + 28, // 24: management.v1.ManagementService.ListAgentVersions:input_type -> management.v1.ListAgentVersionsRequest + 29, // 25: management.v1.ManagementService.RegisterNode:input_type -> management.v1.RegisterNodeRequest + 30, // 26: management.v1.ManagementService.UnregisterNode:input_type -> management.v1.UnregisterNodeRequest + 31, // 27: management.v1.ManagementService.ListNodes:input_type -> management.v1.ListNodesRequest + 32, // 28: management.v1.ManagementService.GetNode:input_type -> management.v1.GetNodeRequest + 1, // 29: management.v1.ManagementService.AddService:input_type -> management.v1.AddServiceRequest + 6, // 30: management.v1.ManagementService.ListServices:input_type -> management.v1.ListServicesRequest + 33, // 31: management.v1.ManagementService.DiscoverRDS:input_type -> management.v1.DiscoverRDSRequest + 34, // 32: management.v1.ManagementService.DiscoverAzureDatabase:input_type -> management.v1.DiscoverAzureDatabaseRequest + 35, // 33: management.v1.ManagementService.AddAzureDatabase:input_type -> management.v1.AddAzureDatabaseRequest + 3, // 34: management.v1.ManagementService.RemoveService:input_type -> management.v1.RemoveServiceRequest + 36, // 35: management.v1.ManagementService.AddAnnotation:output_type -> management.v1.AddAnnotationResponse + 37, // 36: management.v1.ManagementService.ListAgents:output_type -> management.v1.ListAgentsResponse + 38, // 37: management.v1.ManagementService.ListAgentVersions:output_type -> management.v1.ListAgentVersionsResponse + 39, // 38: management.v1.ManagementService.RegisterNode:output_type -> management.v1.RegisterNodeResponse + 40, // 39: management.v1.ManagementService.UnregisterNode:output_type -> management.v1.UnregisterNodeResponse + 41, // 40: management.v1.ManagementService.ListNodes:output_type -> management.v1.ListNodesResponse + 42, // 41: management.v1.ManagementService.GetNode:output_type -> management.v1.GetNodeResponse + 2, // 42: management.v1.ManagementService.AddService:output_type -> management.v1.AddServiceResponse + 7, // 43: management.v1.ManagementService.ListServices:output_type -> management.v1.ListServicesResponse + 43, // 44: management.v1.ManagementService.DiscoverRDS:output_type -> management.v1.DiscoverRDSResponse + 44, // 45: management.v1.ManagementService.DiscoverAzureDatabase:output_type -> management.v1.DiscoverAzureDatabaseResponse + 45, // 46: management.v1.ManagementService.AddAzureDatabase:output_type -> management.v1.AddAzureDatabaseResponse + 4, // 47: management.v1.ManagementService.RemoveService:output_type -> management.v1.RemoveServiceResponse + 35, // [35:48] is the sub-list for method output_type + 22, // [22:35] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name diff --git a/api/management/v1/service.pb.gw.go b/api/management/v1/service.pb.gw.go index b139cf1611..3b437a36bc 100644 --- a/api/management/v1/service.pb.gw.go +++ b/api/management/v1/service.pb.gw.go @@ -89,6 +89,22 @@ func local_request_ManagementService_ListAgents_0(ctx context.Context, marshaler return msg, metadata, err } +func request_ManagementService_ListAgentVersions_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListAgentVersionsRequest + var metadata runtime.ServerMetadata + + msg, err := client.ListAgentVersions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_ManagementService_ListAgentVersions_0(ctx context.Context, marshaler runtime.Marshaler, server ManagementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListAgentVersionsRequest + var metadata runtime.ServerMetadata + + msg, err := server.ListAgentVersions(ctx, &protoReq) + return msg, metadata, err +} + func request_ManagementService_RegisterNode_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq RegisterNodeRequest var metadata runtime.ServerMetadata @@ -508,6 +524,30 @@ func RegisterManagementServiceHandlerServer(ctx context.Context, mux *runtime.Se forward_ManagementService_ListAgents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("GET", pattern_ManagementService_ListAgentVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/management.v1.ManagementService/ListAgentVersions", runtime.WithHTTPPathPattern("/v1/management/agents/versions")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ManagementService_ListAgentVersions_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ManagementService_ListAgentVersions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("POST", pattern_ManagementService_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -830,6 +870,27 @@ func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.Se forward_ManagementService_ListAgents_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("GET", pattern_ManagementService_ListAgentVersions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/management.v1.ManagementService/ListAgentVersions", runtime.WithHTTPPathPattern("/v1/management/agents/versions")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ManagementService_ListAgentVersions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ManagementService_ListAgentVersions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("POST", pattern_ManagementService_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1048,6 +1109,8 @@ var ( pattern_ManagementService_ListAgents_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "management", "agents"}, "")) + pattern_ManagementService_ListAgentVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "management", "agents", "versions"}, "")) + pattern_ManagementService_RegisterNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "management", "nodes"}, "")) pattern_ManagementService_UnregisterNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "management", "nodes", "node_id"}, "")) @@ -1074,6 +1137,8 @@ var ( forward_ManagementService_ListAgents_0 = runtime.ForwardResponseMessage + forward_ManagementService_ListAgentVersions_0 = runtime.ForwardResponseMessage + forward_ManagementService_RegisterNode_0 = runtime.ForwardResponseMessage forward_ManagementService_UnregisterNode_0 = runtime.ForwardResponseMessage diff --git a/api/management/v1/service.proto b/api/management/v1/service.proto index a706a3c291..e0e5d2f9b7 100644 --- a/api/management/v1/service.proto +++ b/api/management/v1/service.proto @@ -142,6 +142,14 @@ service ManagementService { description: "Lists Agents with filter." }; } + // ListAgentVersions returns a list of PMM Agent versions and their update severity. + rpc ListAgentVersions(ListAgentVersionsRequest) returns (ListAgentVersionsResponse) { + option (google.api.http) = {get: "/v1/management/agents/versions"}; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + summary: "List Agent Versions" + description: "Lists Agent versions and their update severity." + }; + } // RegisterNode registers a new Node and a pmm-agent. rpc RegisterNode(RegisterNodeRequest) returns (RegisterNodeResponse) { option (google.api.http) = { @@ -177,32 +185,32 @@ service ManagementService { description: "Gets a single Node by ID." }; } - // AddExternal adds external service and adds external exporter. - // It automatically adds a service to inventory, which is running on provided "node_id", - // then adds an "external exporter" agent to inventory, which is running on provided "runs_on_node_id". - - // AddMySQL adds MySQL Service and starts several Agents. + // MySQL: adds MySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", // then adds "mysqld_exporter", and "qan_mysql_perfschema" agents // with provided "pmm_agent_id" and other parameters. - // AddMongoDB adds MongoDB Service and starts several Agents. + // MongoDB: adds MongoDB Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", // then adds "mongodb_exporter", and "qan_mongodb_profiler" agents // with provided "pmm_agent_id" and other parameters. - // AddPostgreSQL adds PostgreSQL Service and starts postgres exporter. + // PostgreSQL: adds PostgreSQL Service and starts postgres exporter. // It automatically adds a service to inventory, which is running on provided "node_id", // then adds "postgres_exporter" with provided "pmm_agent_id" and other parameters. - // AddHAProxy adds HAProxy service and adds external exporter. + // HAProxy: adds HAProxy service and adds external exporter. // It automatically adds a service to inventory, which is running on provided "node_id", // then adds an "external exporter" agent to inventory. - // AddProxySQL adds ProxySQL Service and starts several Agents. + // ProxySQL: adds ProxySQL Service and starts several Agents. // It automatically adds a service to inventory, which is running on provided "node_id", // then adds "proxysql_exporter" with provided "pmm_agent_id" and other parameters. + // External: adds external service and adds external exporter. + // It automatically adds a service to inventory, which is running on provided "node_id", + // then adds an "external exporter" agent to inventory, which is running on provided "runs_on_node_id". + // AddService adds a Service and starts several Agents. rpc AddService(AddServiceRequest) returns (AddServiceResponse) { option (google.api.http) = { diff --git a/api/management/v1/service_grpc.pb.go b/api/management/v1/service_grpc.pb.go index d85ad9ea42..dca811895f 100644 --- a/api/management/v1/service_grpc.pb.go +++ b/api/management/v1/service_grpc.pb.go @@ -22,6 +22,7 @@ const _ = grpc.SupportPackageIsVersion7 const ( ManagementService_AddAnnotation_FullMethodName = "/management.v1.ManagementService/AddAnnotation" ManagementService_ListAgents_FullMethodName = "/management.v1.ManagementService/ListAgents" + ManagementService_ListAgentVersions_FullMethodName = "/management.v1.ManagementService/ListAgentVersions" ManagementService_RegisterNode_FullMethodName = "/management.v1.ManagementService/RegisterNode" ManagementService_UnregisterNode_FullMethodName = "/management.v1.ManagementService/UnregisterNode" ManagementService_ListNodes_FullMethodName = "/management.v1.ManagementService/ListNodes" @@ -42,6 +43,8 @@ type ManagementServiceClient interface { AddAnnotation(ctx context.Context, in *AddAnnotationRequest, opts ...grpc.CallOption) (*AddAnnotationResponse, error) // ListAgents returns a list of Agents filtered by service_id or node_id. ListAgents(ctx context.Context, in *ListAgentsRequest, opts ...grpc.CallOption) (*ListAgentsResponse, error) + // ListAgentVersions returns a list of PMM Agent versions and their update severity. + ListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest, opts ...grpc.CallOption) (*ListAgentVersionsResponse, error) // RegisterNode registers a new Node and a pmm-agent. RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) // UnregisterNode unregisters a Node, pmm-agent and removes the service account and its token. @@ -90,6 +93,15 @@ func (c *managementServiceClient) ListAgents(ctx context.Context, in *ListAgents return out, nil } +func (c *managementServiceClient) ListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest, opts ...grpc.CallOption) (*ListAgentVersionsResponse, error) { + out := new(ListAgentVersionsResponse) + err := c.cc.Invoke(ctx, ManagementService_ListAgentVersions_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *managementServiceClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, opts ...grpc.CallOption) (*RegisterNodeResponse, error) { out := new(RegisterNodeResponse) err := c.cc.Invoke(ctx, ManagementService_RegisterNode_FullMethodName, in, out, opts...) @@ -188,6 +200,8 @@ type ManagementServiceServer interface { AddAnnotation(context.Context, *AddAnnotationRequest) (*AddAnnotationResponse, error) // ListAgents returns a list of Agents filtered by service_id or node_id. ListAgents(context.Context, *ListAgentsRequest) (*ListAgentsResponse, error) + // ListAgentVersions returns a list of PMM Agent versions and their update severity. + ListAgentVersions(context.Context, *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) // RegisterNode registers a new Node and a pmm-agent. RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) // UnregisterNode unregisters a Node, pmm-agent and removes the service account and its token. @@ -222,6 +236,10 @@ func (UnimplementedManagementServiceServer) ListAgents(context.Context, *ListAge return nil, status.Errorf(codes.Unimplemented, "method ListAgents not implemented") } +func (UnimplementedManagementServiceServer) ListAgentVersions(context.Context, *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAgentVersions not implemented") +} + func (UnimplementedManagementServiceServer) RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterNode not implemented") } @@ -310,6 +328,24 @@ func _ManagementService_ListAgents_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _ManagementService_ListAgentVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAgentVersionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagementServiceServer).ListAgentVersions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ManagementService_ListAgentVersions_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagementServiceServer).ListAgentVersions(ctx, req.(*ListAgentVersionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ManagementService_RegisterNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RegisterNodeRequest) if err := dec(in); err != nil { @@ -505,6 +541,10 @@ var ManagementService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListAgents", Handler: _ManagementService_ListAgents_Handler, }, + { + MethodName: "ListAgentVersions", + Handler: _ManagementService_ListAgentVersions_Handler, + }, { MethodName: "RegisterNode", Handler: _ManagementService_RegisterNode_Handler, diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index d6ad4bffd8..917c75e4ca 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -17763,6 +17763,95 @@ } } }, + "/v1/management/agents/versions": { + "get": { + "description": "Lists Agent versions and their update severity.", + "tags": [ + "ManagementService" + ], + "summary": "List Agent Versions", + "operationId": "ListAgentVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "agent_versions": { + "description": "List of Agent versions.", + "type": "array", + "items": { + "type": "object", + "properties": { + "agent_id": { + "description": "Agent ID.", + "type": "string", + "x-order": 0 + }, + "version": { + "description": "Agent version.", + "type": "string", + "x-order": 1 + }, + "node_name": { + "description": "Node name where the agent runs.", + "type": "string", + "x-order": 2 + }, + "severity": { + "description": " - UPDATE_SEVERITY_UNSUPPORTED: The client version is newer than the server version.\n - UPDATE_SEVERITY_UP_TO_DATE: The client version matches the server version.\n - UPDATE_SEVERITY_REQUIRED: The client's minor or patch version is older.\n - UPDATE_SEVERITY_CRITICAL: The client's major version is older.", + "type": "string", + "default": "UPDATE_SEVERITY_UNSPECIFIED", + "enum": [ + "UPDATE_SEVERITY_UNSPECIFIED", + "UPDATE_SEVERITY_UNSUPPORTED", + "UPDATE_SEVERITY_UP_TO_DATE", + "UPDATE_SEVERITY_REQUIRED", + "UPDATE_SEVERITY_CRITICAL" + ], + "x-order": 3 + } + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + } + } + } + } + } + } + }, "/v1/management/annotations": { "post": { "description": "Adds an annotation.", diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index ebe48ccf78..872fef72b9 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -16805,6 +16805,95 @@ } } }, + "/v1/management/agents/versions": { + "get": { + "description": "Lists Agent versions and their update severity.", + "tags": [ + "ManagementService" + ], + "summary": "List Agent Versions", + "operationId": "ListAgentVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "agent_versions": { + "description": "List of Agent versions.", + "type": "array", + "items": { + "type": "object", + "properties": { + "agent_id": { + "description": "Agent ID.", + "type": "string", + "x-order": 0 + }, + "version": { + "description": "Agent version.", + "type": "string", + "x-order": 1 + }, + "node_name": { + "description": "Node name where the agent runs.", + "type": "string", + "x-order": 2 + }, + "severity": { + "description": " - UPDATE_SEVERITY_UNSUPPORTED: The client version is newer than the server version.\n - UPDATE_SEVERITY_UP_TO_DATE: The client version matches the server version.\n - UPDATE_SEVERITY_REQUIRED: The client's minor or patch version is older.\n - UPDATE_SEVERITY_CRITICAL: The client's major version is older.", + "type": "string", + "default": "UPDATE_SEVERITY_UNSPECIFIED", + "enum": [ + "UPDATE_SEVERITY_UNSPECIFIED", + "UPDATE_SEVERITY_UNSUPPORTED", + "UPDATE_SEVERITY_UP_TO_DATE", + "UPDATE_SEVERITY_REQUIRED", + "UPDATE_SEVERITY_CRITICAL" + ], + "x-order": 3 + } + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + } + } + } + } + } + } + }, "/v1/management/annotations": { "post": { "description": "Adds an annotation.", diff --git a/managed/services/management/agent.go b/managed/services/management/agent.go index 067de6660e..fc13caeb90 100644 --- a/managed/services/management/agent.go +++ b/managed/services/management/agent.go @@ -17,8 +17,10 @@ package management import ( "context" + "fmt" "github.com/AlekSi/pointer" + "github.com/pkg/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" @@ -26,6 +28,7 @@ import ( managementv1 "github.com/percona/pmm/api/management/v1" "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/version" ) // ListAgents returns a filtered list of Agents. @@ -207,3 +210,80 @@ func (s *ManagementService) validateListAgentRequest(req *managementv1.ListAgent return nil } + +// ListAgentVersions returns a list of agents with their update recommendations (update severity). +func (s *ManagementService) ListAgentVersions(ctx context.Context, _ *managementv1.ListAgentVersionsRequest) (*managementv1.ListAgentVersionsResponse, error) { + var versions []*managementv1.AgentVersions + + errTX := s.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { + var err error + agentType := models.PMMAgentType + + agents, err := models.FindAgents(s.db.Querier, models.AgentFilters{AgentType: &agentType}) + if err != nil { + return err + } + + nodes, err := models.FindNodes(s.db.Querier, models.NodeFilters{}) + if err != nil { + return err + } + + nodeNames := make(map[string]*string, len(nodes)) + for _, node := range nodes { + nodeNames[node.NodeID] = pointer.ToString(node.NodeName) + } + + serverVersion, err := version.Parse(version.PMMVersion) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("could not parse the server version: %s", version.PMMVersion)) + } + + for _, agent := range agents { + if agent.Disabled { + continue + } + nodeName, ok := nodeNames[pointer.GetString(agent.RunsOnNodeID)] + if !ok { + s.l.Warnf("node not found for agent %s", agent.AgentID) + continue + } + + agentVersion, err := version.Parse(pointer.GetString(agent.Version)) + if err != nil { + // We don't want to fail the whole request if we can't parse the agent version. + s.l.Warnf(errors.Wrap(err, fmt.Sprintf("could not parse the client version %s for agent %s", pointer.GetString(agent.Version), agent.AgentID)).Error()) + continue + } + + var severity managementv1.UpdateSeverity + switch { + case agentVersion.Major < serverVersion.Major: + severity = managementv1.UpdateSeverity_UPDATE_SEVERITY_CRITICAL + case agentVersion.Less(serverVersion): + severity = managementv1.UpdateSeverity_UPDATE_SEVERITY_REQUIRED + case serverVersion.Less(agentVersion): + severity = managementv1.UpdateSeverity_UPDATE_SEVERITY_UNSUPPORTED + default: + severity = managementv1.UpdateSeverity_UPDATE_SEVERITY_UP_TO_DATE + } + + versions = append(versions, &managementv1.AgentVersions{ + AgentId: agent.AgentID, + Version: pointer.GetString(agent.Version), + NodeName: pointer.GetString(nodeName), + Severity: severity, + }) + } + + return nil + }) + + if errTX != nil { + return nil, errTX + } + + return &managementv1.ListAgentVersionsResponse{ + AgentVersions: versions, + }, nil +} diff --git a/managed/services/management/agent_test.go b/managed/services/management/agent_test.go index 4a8f2383c5..e6d0461f73 100644 --- a/managed/services/management/agent_test.go +++ b/managed/services/management/agent_test.go @@ -30,11 +30,12 @@ import ( "gopkg.in/reform.v1" "gopkg.in/reform.v1/dialects/postgresql" - agentv1beta1 "github.com/percona/pmm/api/management/v1" + agentv1 "github.com/percona/pmm/api/management/v1" "github.com/percona/pmm/managed/models" "github.com/percona/pmm/managed/utils/testdb" "github.com/percona/pmm/managed/utils/tests" "github.com/percona/pmm/utils/logger" + "github.com/percona/pmm/version" ) var now time.Time @@ -103,18 +104,18 @@ func setup(t *testing.T) (context.Context, *ManagementService, func(t *testing.T func TestAgentService(t *testing.T) { t.Run("Should return a validation error when no params passed", func(t *testing.T) { ctx, s, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) - response, err := s.ListAgents(ctx, &agentv1beta1.ListAgentsRequest{}) + response, err := s.ListAgents(ctx, &agentv1.ListAgentsRequest{}) assert.Nil(t, response) tests.AssertGRPCError(t, status.New(codes.InvalidArgument, "Either service_id or node_id is expected."), err) }) t.Run("Should return a validation error when both params passed", func(t *testing.T) { ctx, s, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) - response, err := s.ListAgents(ctx, &agentv1beta1.ListAgentsRequest{ServiceId: "foo-id", NodeId: "bar-id"}) + response, err := s.ListAgents(ctx, &agentv1.ListAgentsRequest{ServiceId: "foo-id", NodeId: "bar-id"}) assert.Nil(t, response) tests.AssertGRPCError(t, status.New(codes.InvalidArgument, "Either service_id or node_id is expected, not both."), err) }) @@ -127,7 +128,7 @@ func TestAgentService(t *testing.T) { t.Run("should output a list of agents provisioned by default", func(t *testing.T) { ctx, s, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) services, err := models.FindServices(s.db.Querier, models.ServiceFilters{ NodeID: models.PMMServerNodeID, @@ -140,12 +141,12 @@ func TestAgentService(t *testing.T) { s.r.(*mockAgentsRegistry).On("IsConnected", models.PMMServerAgentID).Return(true).Once() // PMM Server Agent s.r.(*mockAgentsRegistry).On("IsConnected", pgExporterID).Return(false).Once() // PMM Server PostgreSQL exporter s.r.(*mockAgentsRegistry).On("IsConnected", pgStatStatementID).Return(false).Once() // PMM Server PG Stat Statements agent - response, err := s.ListAgents(ctx, &agentv1beta1.ListAgentsRequest{ + response, err := s.ListAgents(ctx, &agentv1.ListAgentsRequest{ ServiceId: service.ServiceID, }) require.NoError(t, err) - expected := []*agentv1beta1.UniversalAgent{ + expected := []*agentv1.UniversalAgent{ { AgentId: pgExporterID, AgentType: "postgres_exporter", @@ -154,7 +155,7 @@ func TestAgentService(t *testing.T) { CreatedAt: timestamppb.New(now), UpdatedAt: timestamppb.New(now), Username: "postgres", - PostgresqlOptions: &agentv1beta1.UniversalAgent_PostgreSQLOptions{ + PostgresqlOptions: &agentv1.UniversalAgent_PostgreSQLOptions{ IsSslKeySet: false, }, ServiceId: "00000000-0000-4000-8000-000000000002", @@ -170,7 +171,7 @@ func TestAgentService(t *testing.T) { CreatedAt: timestamppb.New(now), UpdatedAt: timestamppb.New(now), Username: "postgres", - PostgresqlOptions: &agentv1beta1.UniversalAgent_PostgreSQLOptions{ + PostgresqlOptions: &agentv1.UniversalAgent_PostgreSQLOptions{ IsSslKeySet: false, }, ServiceId: "00000000-0000-4000-8000-000000000002", @@ -193,7 +194,7 @@ func TestAgentService(t *testing.T) { t.Run("should output a list of agents provisioned for RDS service", func(t *testing.T) { ctx, s, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) node, err := models.CreateNode(s.db.Querier, models.RemoteRDSNodeType, &models.CreateNodeParams{ NodeName: "test", @@ -221,12 +222,12 @@ func TestAgentService(t *testing.T) { s.r.(*mockAgentsRegistry).On("IsConnected", rdsExporter.AgentID).Return(false).Once() - response, err := s.ListAgents(ctx, &agentv1beta1.ListAgentsRequest{ + response, err := s.ListAgents(ctx, &agentv1.ListAgentsRequest{ ServiceId: service.ServiceID, }) require.NoError(t, err) - expected := []*agentv1beta1.UniversalAgent{ + expected := []*agentv1.UniversalAgent{ { AgentId: rdsExporter.AgentID, AgentType: "rds_exporter", @@ -243,7 +244,7 @@ func TestAgentService(t *testing.T) { t.Run("should output a list of agents provisioned for Azure service", func(t *testing.T) { ctx, s, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) node, err := models.CreateNode(s.db.Querier, models.RemoteAzureDatabaseNodeType, &models.CreateNodeParams{ NodeName: "test", @@ -271,12 +272,12 @@ func TestAgentService(t *testing.T) { s.r.(*mockAgentsRegistry).On("IsConnected", azureExporter.AgentID).Return(false).Once() - response, err := s.ListAgents(ctx, &agentv1beta1.ListAgentsRequest{ + response, err := s.ListAgents(ctx, &agentv1.ListAgentsRequest{ ServiceId: service.ServiceID, }) require.NoError(t, err) - expected := []*agentv1beta1.UniversalAgent{ + expected := []*agentv1.UniversalAgent{ { AgentId: azureExporter.AgentID, AgentType: "azure_database_exporter", @@ -292,3 +293,115 @@ func TestAgentService(t *testing.T) { }) }) } + +func TestListAgentVersions(t *testing.T) { + t.Run("Should suggest critical severity if major versions differ", func(t *testing.T) { + ctx, s, teardown := setup(t) + t.Cleanup(func() { teardown(t) }) + + pmmAgent := &models.Agent{ + AgentID: uuid.New().String(), + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString(models.PMMServerNodeID), + Version: pointer.ToString("2.0.0"), + } + + err := s.db.Insert(pmmAgent) + require.NoError(t, err) + + version.PMMVersion = "3.0.0" + res, err := s.ListAgentVersions(ctx, &agentv1.ListAgentVersionsRequest{}) + require.NoError(t, err) + require.Len(t, res.AgentVersions, 1) + + assert.Equal(t, agentv1.UpdateSeverity_UPDATE_SEVERITY_CRITICAL, res.AgentVersions[0].Severity) + }) + + t.Run("Should suggest an update if minor versions differ", func(t *testing.T) { + ctx, s, teardown := setup(t) + t.Cleanup(func() { teardown(t) }) + + pmmAgent := &models.Agent{ + AgentID: uuid.New().String(), + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString(models.PMMServerNodeID), + Version: pointer.ToString("3.0.0"), + } + + err := s.db.Insert(pmmAgent) + require.NoError(t, err) + + version.PMMVersion = "3.1.0" + res, err := s.ListAgentVersions(ctx, &agentv1.ListAgentVersionsRequest{}) + require.NoError(t, err) + require.Len(t, res.AgentVersions, 1) + + assert.Equal(t, agentv1.UpdateSeverity_UPDATE_SEVERITY_REQUIRED, res.AgentVersions[0].Severity) + }) + + t.Run("Should suggest an update if patch versions differ", func(t *testing.T) { + ctx, s, teardown := setup(t) + t.Cleanup(func() { teardown(t) }) + + pmmAgent := &models.Agent{ + AgentID: uuid.New().String(), + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString(models.PMMServerNodeID), + Version: pointer.ToString("3.0.0"), + } + + err := s.db.Insert(pmmAgent) + require.NoError(t, err) + + version.PMMVersion = "3.0.1" + res, err := s.ListAgentVersions(ctx, &agentv1.ListAgentVersionsRequest{}) + require.NoError(t, err) + require.Len(t, res.AgentVersions, 1) + + assert.Equal(t, agentv1.UpdateSeverity_UPDATE_SEVERITY_REQUIRED, res.AgentVersions[0].Severity) + }) + + t.Run("Should suggest no update if versions are the same", func(t *testing.T) { + ctx, s, teardown := setup(t) + t.Cleanup(func() { teardown(t) }) + + pmmAgent := &models.Agent{ + AgentID: uuid.New().String(), + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString(models.PMMServerNodeID), + Version: pointer.ToString("3.0.0"), + } + + err := s.db.Insert(pmmAgent) + require.NoError(t, err) + + version.PMMVersion = "3.0.0" + res, err := s.ListAgentVersions(ctx, &agentv1.ListAgentVersionsRequest{}) + require.NoError(t, err) + require.Len(t, res.AgentVersions, 1) + + assert.Equal(t, agentv1.UpdateSeverity_UPDATE_SEVERITY_UP_TO_DATE, res.AgentVersions[0].Severity) + }) + + t.Run("Should say unsupported if client version is newer", func(t *testing.T) { + ctx, s, teardown := setup(t) + t.Cleanup(func() { teardown(t) }) + + pmmAgent := &models.Agent{ + AgentID: uuid.New().String(), + AgentType: models.PMMAgentType, + RunsOnNodeID: pointer.ToString(models.PMMServerNodeID), + Version: pointer.ToString("3.0.0"), + } + + err := s.db.Insert(pmmAgent) + require.NoError(t, err) + + version.PMMVersion = "3.0.0-beta" + res, err := s.ListAgentVersions(ctx, &agentv1.ListAgentVersionsRequest{}) + require.NoError(t, err) + require.Len(t, res.AgentVersions, 1) + + assert.Equal(t, agentv1.UpdateSeverity_UPDATE_SEVERITY_UNSUPPORTED, res.AgentVersions[0].Severity) + }) +} diff --git a/managed/services/management/service.go b/managed/services/management/service.go index d0435f49c1..2efdb28a8f 100644 --- a/managed/services/management/service.go +++ b/managed/services/management/service.go @@ -22,6 +22,7 @@ import ( "github.com/AlekSi/pointer" "github.com/pkg/errors" "github.com/prometheus/common/model" + "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" @@ -44,6 +45,7 @@ type ManagementService struct { //nolint:revive vc versionCache grafanaClient grafanaClient vmClient victoriaMetricsClient + l *logrus.Entry managementv1.UnimplementedManagementServiceServer } @@ -75,6 +77,7 @@ func NewManagementService( vc: vc, grafanaClient: grafanaClient, vmClient: vmClient, + l: logrus.WithField("service", "management"), } } From 1bac0af62b795237a278ef49e9dc1fc004b68e5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:48:24 +0200 Subject: [PATCH 12/70] Bump github.com/prometheus/common from 0.53.0 to 0.55.0 (#3100) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.53.0 to 0.55.0. - [Release notes](https://github.com/prometheus/common/releases) - [Changelog](https://github.com/prometheus/common/blob/main/RELEASE.md) - [Commits](https://github.com/prometheus/common/compare/v0.53.0...v0.55.0) --- updated-dependencies: - dependency-name: github.com/prometheus/common 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 | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index fb39a73abf..9a055ee054 100644 --- a/go.mod +++ b/go.mod @@ -68,8 +68,8 @@ require ( github.com/pkg/sftp v1.13.6 github.com/pmezard/go-difflib v1.0.0 github.com/prometheus/alertmanager v0.27.0 - github.com/prometheus/client_golang v1.19.0 - github.com/prometheus/common v0.53.0 + github.com/prometheus/client_golang v1.19.1 + github.com/prometheus/common v0.55.0 github.com/ramr/go-reaper v0.2.1 github.com/robfig/cron/v3 v3.0.1 github.com/sirupsen/logrus v1.9.3 @@ -85,7 +85,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 google.golang.org/grpc v1.65.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.34.2 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/reform.v1 v1.5.1 gopkg.in/yaml.v3 v3.0.1 @@ -237,7 +237,7 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect github.com/prometheus/exporter-toolkit v0.11.0 // indirect - github.com/prometheus/procfs v0.13.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rs/xid v1.5.0 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect @@ -253,7 +253,7 @@ require ( go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/term v0.21.0 // 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 832b8e3619..a100de8a68 100644 --- a/go.sum +++ b/go.sum @@ -680,8 +680,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.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= 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= @@ -693,8 +693,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g= @@ -704,8 +704,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.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= 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/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -919,8 +919,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1181,8 +1181,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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 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 9627393700bcdf44c96041d05c8bdee37be8a9ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:00:01 +0000 Subject: [PATCH 13/70] Bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.19.0 to 2.21.0 (#3099) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) from 2.19.0 to 2.21.0. - [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases) - [Changelog](https://github.com/grpc-ecosystem/grpc-gateway/blob/main/.goreleaser.yml) - [Commits](https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.19.0...v2.21.0) --- updated-dependencies: - dependency-name: github.com/grpc-ecosystem/grpc-gateway/v2 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: Jiří Čtvrtka <62988319+JiriCtvrtka@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 9a055ee054..39e0a8f377 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/grafana/grafana-api-golang-client v0.27.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.19.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/raft v1.6.0 github.com/jmoiron/sqlx v1.3.5 @@ -82,8 +82,8 @@ require ( golang.org/x/sys v0.21.0 golang.org/x/text v0.16.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 + google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a + google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/alecthomas/kingpin.v2 v2.2.6 diff --git a/go.sum b/go.sum index a100de8a68..a5893686c0 100644 --- a/go.sum +++ b/go.sum @@ -406,8 +406,8 @@ github.com/grafana/grafana-api-golang-client v0.27.0 h1:zIwMXcbCB4n588i3O2N6HfNc github.com/grafana/grafana-api-golang-client v0.27.0/go.mod h1:uNLZEmgKtTjHBtCQMwNn3qsx2mpMb8zU+7T4Xv3NR9Y= 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/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1150,10 +1150,10 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a h1:YIa/rzVqMEokBkPtydCkx1VLmv3An1Uw7w1P1m6EhOY= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a h1:hqK4+jJZXCU4pW7jsAdGOVFIfLHQeV7LaizZKnZ84HI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= From 77d9a6490ccd49fcf478239bee5845273e47b51e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:18:51 +0000 Subject: [PATCH 14/70] Bump github.com/bufbuild/buf from 1.34.0 to 1.35.1 in /tools (#3093) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.34.0 to 1.35.1. - [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.34.0...v1.35.1) --- 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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- tools/go.mod | 6 +++--- tools/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 8f46b1ea1a..99f7005a3b 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -10,7 +10,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.6.0 - github.com/bufbuild/buf v1.34.0 + github.com/bufbuild/buf v1.35.1 github.com/daixiang0/gci v0.13.0 github.com/envoyproxy/protoc-gen-validate v1.0.4 github.com/go-delve/delve v1.23.0 @@ -76,7 +76,7 @@ require ( github.com/felixge/fgprof v0.9.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-chi/chi/v5 v5.0.13 // indirect + github.com/go-chi/chi/v5 v5.0.14 // indirect github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 // indirect github.com/go-fed/httpsig v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -113,7 +113,7 @@ require ( github.com/google/go-github/v62 v62.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-20240618054019-d3b898a103f8 // indirect + github.com/google/pprof v0.0.0-20240622144329-c177fd99eaa9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect diff --git a/tools/go.sum b/tools/go.sum index 1548e93379..3b0f0b79af 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -104,8 +104,8 @@ github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= 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.34.0 h1:rZSVfYS5SakOe6ds9PDjbHVwOc+vBGVWNW9Ei+Rg/+c= -github.com/bufbuild/buf v1.34.0/go.mod h1:Fj+KBmY2ODYD2Ld02w4LH9Y3WiRH2203IjGJbKYK5Hc= +github.com/bufbuild/buf v1.35.1 h1:aiCi/YFOg7eXKZeveWb2ZhnmLFwUMM/FnDCM0roFp+M= +github.com/bufbuild/buf v1.35.1/go.mod h1:SM7b5QW3FkQPNkkqIa/9UWzLOoe51la+GGZpEgH9b68= github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee h1:E6ET8YUcYJ1lAe6ctR3as7yqzW2BNItDFnaB5zQq/8M= @@ -207,8 +207,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-chi/chi/v5 v5.0.13 h1:JlH2F2M8qnwl0N1+JFFzlX9TlKJYas3aPXdiuTmJL+w= -github.com/go-chi/chi/v5 v5.0.13/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.0.14 h1:PyEwo2Vudraa0x/Wl6eDRRW2NXBvekgfxyydcM0WGE0= +github.com/go-chi/chi/v5 v5.0.14/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-delve/delve v1.23.0 h1:jYgZISZ14KAO3ys8kD07kjrowrygE9F9SIwnpz9xXys= github.com/go-delve/delve v1.23.0/go.mod h1:S3SLuEE2mn7wipKilTvk1p9HdTMnXXElcEpiZ+VcuqU= github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 h1:IGtvsNyIuRjl04XAOFGACozgUD7A82UffYxZt4DWbvA= @@ -408,8 +408,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe 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-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 h1:ASJ/LAqdCHOyMYI+dwNxn7Rd8FscNkMyTr1KZU1JI/M= -github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20240622144329-c177fd99eaa9 h1:ouFdLLCOyCfnxGpQTMZKHLyHr/D1GFbQzEsJxumO16E= +github.com/google/pprof v0.0.0-20240622144329-c177fd99eaa9/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= From e1b25fde85760f2c7dfdc6d7964f9a4348c44683 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:34:41 +0000 Subject: [PATCH 15/70] Bump k8s.io/apiextensions-apiserver from 0.29.0 to 0.30.3 (#3080) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) from 0.29.0 to 0.30.3. - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.29.0...v0.30.3) --- updated-dependencies: - dependency-name: k8s.io/apiextensions-apiserver 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: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- go.mod | 3 ++- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 39e0a8f377..b159e5f12d 100644 --- a/go.mod +++ b/go.mod @@ -90,7 +90,7 @@ require ( gopkg.in/reform.v1 v1.5.1 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.30.3 - k8s.io/apiextensions-apiserver v0.29.0 + k8s.io/apiextensions-apiserver v0.30.3 k8s.io/apimachinery v0.30.3 k8s.io/cli-runtime v0.30.3 k8s.io/client-go v0.30.3 @@ -115,6 +115,7 @@ require ( github.com/go-ini/ini v1.67.0 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-logr/zapr v1.3.0 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect diff --git a/go.sum b/go.sum index a5893686c0..db6f15ee3f 100644 --- a/go.sum +++ b/go.sum @@ -244,8 +244,8 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= -github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= @@ -1222,8 +1222,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= -k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= -k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= +k8s.io/apiextensions-apiserver v0.30.3 h1:oChu5li2vsZHx2IvnGP3ah8Nj3KyqG3kRSaKmijhB9U= +k8s.io/apiextensions-apiserver v0.30.3/go.mod h1:uhXxYDkMAvl6CJw4lrDN4CPbONkF3+XL9cacCT44kV4= k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= k8s.io/cli-runtime v0.30.3 h1:aG69oRzJuP2Q4o8dm+f5WJIX4ZBEwrvdID0+MXyUY6k= From 37ddd79db1ec52ea67b8abc53eee5f7f0056777c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:46:33 +0000 Subject: [PATCH 16/70] Bump github.com/charmbracelet/lipgloss from 0.10.0 to 0.12.1 (#3098) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) from 0.10.0 to 0.12.1. - [Release notes](https://github.com/charmbracelet/lipgloss/releases) - [Changelog](https://github.com/charmbracelet/lipgloss/blob/master/.goreleaser.yml) - [Commits](https://github.com/charmbracelet/lipgloss/compare/v0.10.0...v0.12.1) --- updated-dependencies: - dependency-name: github.com/charmbracelet/lipgloss 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: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- go.mod | 5 +++-- go.sum | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index b159e5f12d..b370d38e17 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/brianvoe/gofakeit/v6 v6.28.0 github.com/charmbracelet/bubbles v0.18.0 github.com/charmbracelet/bubbletea v0.25.0 - github.com/charmbracelet/lipgloss v0.10.0 + github.com/charmbracelet/lipgloss v0.12.1 github.com/davecgh/go-spew v1.1.1 github.com/docker/docker v25.0.3+incompatible github.com/docker/go-connections v0.5.0 @@ -104,6 +104,7 @@ require ( github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/charmbracelet/x/ansi v0.1.4 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect @@ -211,7 +212,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect diff --git a/go.sum b/go.sum index db6f15ee3f..60bb0df7d7 100644 --- a/go.sum +++ b/go.sum @@ -152,8 +152,10 @@ github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ= github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao= -github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= -github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE= +github.com/charmbracelet/lipgloss v0.12.1 h1:/gmzszl+pedQpjCOH+wFkZr/N90Snz40J/NR7A0zQcs= +github.com/charmbracelet/lipgloss v0.12.1/go.mod h1:V2CiwIuhx9S1S1ZlADfOj9HmxeMAORuz5izHb0zGbB8= +github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM= +github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= 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= @@ -539,8 +541,8 @@ github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= From f7326cd3106618547d13b035fde69d7f8753ce6a Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Wed, 31 Jul 2024 11:27:04 +0300 Subject: [PATCH 17/70] PMM-13111 disable new postgresql collectors. --- managed/services/agents/mongodb.go | 4 +- managed/services/agents/postgresql.go | 22 +++++++- managed/services/agents/postgresql_test.go | 13 +++-- managed/utils/collectors/collectors.go | 14 +++++ managed/utils/collectors/collectors_test.go | 62 +++++++++++++++++++++ 5 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 managed/utils/collectors/collectors_test.go diff --git a/managed/services/agents/mongodb.go b/managed/services/agents/mongodb.go index 0e043e3904..d771011652 100644 --- a/managed/services/agents/mongodb.go +++ b/managed/services/agents/mongodb.go @@ -136,7 +136,7 @@ func v226Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress s collstatsLimit = exporter.MongoDBOptions.CollectionsLimit } - collectors := defaultCollectors(collectAll) + collectors := defaultMongoDBCollectors(collectAll) if !pmmAgentVersion.Less(v2_41_1) { // >= 2.41.1 collectors["shards"] = collectorArgs{ @@ -240,7 +240,7 @@ func v225Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress s return args } -func defaultCollectors(collectAll bool) map[string]collectorArgs { +func defaultMongoDBCollectors(collectAll bool) map[string]collectorArgs { return map[string]collectorArgs{ "diagnosticdata": { enabled: true, diff --git a/managed/services/agents/postgresql.go b/managed/services/agents/postgresql.go index 73575eafed..69510b0016 100644 --- a/managed/services/agents/postgresql.go +++ b/managed/services/agents/postgresql.go @@ -34,10 +34,25 @@ import ( var ( postgresExporterAutodiscoveryVersion = version.MustParse("2.15.99") postgresExporterWebConfigVersion = version.MustParse("2.30.99") - postgresSSLSniVersion = version.MustParse("2.40.99") + postgresSSLSniVersion = version.MustParse("2.41.0-0") + postgresExporterCollectorsVersion = version.MustParse("2.41.0-0") postgresMaxExporterConnsVersion = version.MustParse("2.41.2-0") ) +var defaultPostgresExporterCollectors = []string{ + "database", + "database_wraparound", + "extensions", + "locks", + "replication", + "replication_slot", + "stat_bgwriter", + "stat_database", + "stat_user_tables", + "statio_user_tables", + "wal", +} + const defaultAutoDiscoveryDatabaseLimit = 50 func postgresExcludedDatabases() []string { @@ -101,6 +116,11 @@ func postgresExporterConfig(node *models.Node, service *models.Service, exporter args = collectors.FilterOutCollectors("--collect.", args, exporter.DisabledCollectors) + if !pmmAgentVersion.Less(postgresExporterCollectorsVersion) { + disableCollectorArgs := collectors.DisableDefaultEnabledCollectors("--no-collector.", defaultPostgresExporterCollectors, exporter.DisabledCollectors) + args = append(args, disableCollectorArgs...) + } + args = withLogLevel(args, exporter.LogLevel, pmmAgentVersion, false) sort.Strings(args) diff --git a/managed/services/agents/postgresql_test.go b/managed/services/agents/postgresql_test.go index 661d99974b..6c7c28ab46 100644 --- a/managed/services/agents/postgresql_test.go +++ b/managed/services/agents/postgresql_test.go @@ -150,11 +150,11 @@ func (s *PostgresExporterConfigTestSuite) TestSocket() { } func (s *PostgresExporterConfigTestSuite) TestDisabledCollectors() { - s.pmmAgentVersion = &version.Parsed{} + s.pmmAgentVersion = version.MustParse("2.42.0") s.postgresql.Address = nil s.postgresql.Port = nil s.postgresql.Socket = pointer.ToString("/var/run/postgres") - s.exporter.DisabledCollectors = []string{"custom_query.hr", "custom_query.hr.directory"} + s.exporter.DisabledCollectors = []string{"custom_query.hr", "custom_query.hr.directory", "locks"} actual, err := postgresExporterConfig(s.node, s.postgresql, s.exporter, exposeSecrets, s.pmmAgentVersion) s.NoError(err, "Failed to create exporter config") @@ -164,12 +164,15 @@ func (s *PostgresExporterConfigTestSuite) TestDisabledCollectors() { TemplateLeftDelim: "{{", TemplateRightDelim: "}}", Args: []string{ + "--auto-discover-databases", "--collect.custom_query.lr", - "--collect.custom_query.lr.directory=" + pathsBase(s.pmmAgentVersion, "{{", "}}") + "/collectors/custom-queries/postgresql/low-resolution", + "--collect.custom_query.lr.directory={{ .paths_base }}/collectors/custom-queries/postgresql/low-resolution", "--collect.custom_query.mr", - "--collect.custom_query.mr.directory=" + pathsBase(s.pmmAgentVersion, "{{", "}}") + "/collectors/custom-queries/postgresql/medium-resolution", + "--collect.custom_query.mr.directory={{ .paths_base }}/collectors/custom-queries/postgresql/medium-resolution", + "--exclude-databases=template0,template1,postgres,cloudsqladmin,pmm-managed-dev,azure_maintenance,rdsadmin", + "--no-collector.locks", "--web.listen-address=0.0.0.0:{{ .listen_port }}", - }, + "--web.config={{ .TextFiles.webConfigPlaceholder }}"}, } requireNoDuplicateFlags(s.T(), actual.Args) s.Require().Equal(expected.Args, actual.Args) diff --git a/managed/utils/collectors/collectors.go b/managed/utils/collectors/collectors.go index 66e464ff40..e8035d12b7 100644 --- a/managed/utils/collectors/collectors.go +++ b/managed/utils/collectors/collectors.go @@ -42,3 +42,17 @@ func FilterOutCollectors(prefix string, args, disabledCollectors []string) []str } return enabledArgs } + +func DisableDefaultEnabledCollectors(prefix string, defaultCollectors []string, disabledCollectors []string) []string { + defaultCollectorsMap := make(map[string]struct{}) + for _, defaultCollector := range defaultCollectors { + defaultCollectorsMap[defaultCollector] = struct{}{} + } + args := []string{} + for _, collector := range disabledCollectors { + if _, ok := defaultCollectorsMap[collector]; ok { + args = append(args, fmt.Sprintf("%s%s", prefix, collector)) + } + } + return args +} diff --git a/managed/utils/collectors/collectors_test.go b/managed/utils/collectors/collectors_test.go new file mode 100644 index 0000000000..6c2ef12612 --- /dev/null +++ b/managed/utils/collectors/collectors_test.go @@ -0,0 +1,62 @@ +package collectors + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestDisableDefaultEnabledCollectors(t *testing.T) { + type args struct { + prefix string + defaultCollectors []string + disabledCollectors []string + } + tests := []struct { + name string + args args + want []string + }{ + { + name: "Disable single default enabled collectors", + args: args{ + prefix: "--no-collector.", + defaultCollectors: []string{"a", "b", "c", "d", "e"}, + disabledCollectors: []string{"b"}, + }, + want: []string{"--no-collector.b"}, + }, + { + name: "Disable multiple default enabled collectors", + args: args{ + prefix: "--no-collector.", + defaultCollectors: []string{"a", "b", "c", "d", "e", "f"}, + disabledCollectors: []string{"a", "c"}, + }, + want: []string{"--no-collector.a", "--no-collector.c"}, + }, + { + name: "Disable all default enabled collectors", + args: args{ + prefix: "--no-collector.", + defaultCollectors: []string{"a", "b", "c"}, + disabledCollectors: []string{"a", "b", "c"}, + }, + want: []string{"--no-collector.a", "--no-collector.b", "--no-collector.c"}, + }, + { + name: "Disable non-default enabled collectors", + args: args{ + prefix: "--no-collector.", + defaultCollectors: []string{"a", "b", "c"}, + disabledCollectors: []string{"d", "e", "f"}, + }, + want: []string{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + actual := DisableDefaultEnabledCollectors(tt.args.prefix, tt.args.defaultCollectors, tt.args.disabledCollectors) + require.Equal(t, tt.want, actual, "DisableDefaultEnabledCollectors() = %v, want %v", actual, tt.want) + }) + } +} From 78982aab5ec07615aa8f5bc0a481834f798cbe89 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Wed, 31 Jul 2024 11:33:26 +0300 Subject: [PATCH 18/70] Revert "PMM-13111 disable new postgresql collectors." This reverts commit f7326cd3106618547d13b035fde69d7f8753ce6a. --- managed/services/agents/mongodb.go | 4 +- managed/services/agents/postgresql.go | 22 +------- managed/services/agents/postgresql_test.go | 13 ++--- managed/utils/collectors/collectors.go | 14 ----- managed/utils/collectors/collectors_test.go | 62 --------------------- 5 files changed, 8 insertions(+), 107 deletions(-) delete mode 100644 managed/utils/collectors/collectors_test.go diff --git a/managed/services/agents/mongodb.go b/managed/services/agents/mongodb.go index d771011652..0e043e3904 100644 --- a/managed/services/agents/mongodb.go +++ b/managed/services/agents/mongodb.go @@ -136,7 +136,7 @@ func v226Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress s collstatsLimit = exporter.MongoDBOptions.CollectionsLimit } - collectors := defaultMongoDBCollectors(collectAll) + collectors := defaultCollectors(collectAll) if !pmmAgentVersion.Less(v2_41_1) { // >= 2.41.1 collectors["shards"] = collectorArgs{ @@ -240,7 +240,7 @@ func v225Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress s return args } -func defaultMongoDBCollectors(collectAll bool) map[string]collectorArgs { +func defaultCollectors(collectAll bool) map[string]collectorArgs { return map[string]collectorArgs{ "diagnosticdata": { enabled: true, diff --git a/managed/services/agents/postgresql.go b/managed/services/agents/postgresql.go index 69510b0016..73575eafed 100644 --- a/managed/services/agents/postgresql.go +++ b/managed/services/agents/postgresql.go @@ -34,25 +34,10 @@ import ( var ( postgresExporterAutodiscoveryVersion = version.MustParse("2.15.99") postgresExporterWebConfigVersion = version.MustParse("2.30.99") - postgresSSLSniVersion = version.MustParse("2.41.0-0") - postgresExporterCollectorsVersion = version.MustParse("2.41.0-0") + postgresSSLSniVersion = version.MustParse("2.40.99") postgresMaxExporterConnsVersion = version.MustParse("2.41.2-0") ) -var defaultPostgresExporterCollectors = []string{ - "database", - "database_wraparound", - "extensions", - "locks", - "replication", - "replication_slot", - "stat_bgwriter", - "stat_database", - "stat_user_tables", - "statio_user_tables", - "wal", -} - const defaultAutoDiscoveryDatabaseLimit = 50 func postgresExcludedDatabases() []string { @@ -116,11 +101,6 @@ func postgresExporterConfig(node *models.Node, service *models.Service, exporter args = collectors.FilterOutCollectors("--collect.", args, exporter.DisabledCollectors) - if !pmmAgentVersion.Less(postgresExporterCollectorsVersion) { - disableCollectorArgs := collectors.DisableDefaultEnabledCollectors("--no-collector.", defaultPostgresExporterCollectors, exporter.DisabledCollectors) - args = append(args, disableCollectorArgs...) - } - args = withLogLevel(args, exporter.LogLevel, pmmAgentVersion, false) sort.Strings(args) diff --git a/managed/services/agents/postgresql_test.go b/managed/services/agents/postgresql_test.go index 6c7c28ab46..661d99974b 100644 --- a/managed/services/agents/postgresql_test.go +++ b/managed/services/agents/postgresql_test.go @@ -150,11 +150,11 @@ func (s *PostgresExporterConfigTestSuite) TestSocket() { } func (s *PostgresExporterConfigTestSuite) TestDisabledCollectors() { - s.pmmAgentVersion = version.MustParse("2.42.0") + s.pmmAgentVersion = &version.Parsed{} s.postgresql.Address = nil s.postgresql.Port = nil s.postgresql.Socket = pointer.ToString("/var/run/postgres") - s.exporter.DisabledCollectors = []string{"custom_query.hr", "custom_query.hr.directory", "locks"} + s.exporter.DisabledCollectors = []string{"custom_query.hr", "custom_query.hr.directory"} actual, err := postgresExporterConfig(s.node, s.postgresql, s.exporter, exposeSecrets, s.pmmAgentVersion) s.NoError(err, "Failed to create exporter config") @@ -164,15 +164,12 @@ func (s *PostgresExporterConfigTestSuite) TestDisabledCollectors() { TemplateLeftDelim: "{{", TemplateRightDelim: "}}", Args: []string{ - "--auto-discover-databases", "--collect.custom_query.lr", - "--collect.custom_query.lr.directory={{ .paths_base }}/collectors/custom-queries/postgresql/low-resolution", + "--collect.custom_query.lr.directory=" + pathsBase(s.pmmAgentVersion, "{{", "}}") + "/collectors/custom-queries/postgresql/low-resolution", "--collect.custom_query.mr", - "--collect.custom_query.mr.directory={{ .paths_base }}/collectors/custom-queries/postgresql/medium-resolution", - "--exclude-databases=template0,template1,postgres,cloudsqladmin,pmm-managed-dev,azure_maintenance,rdsadmin", - "--no-collector.locks", + "--collect.custom_query.mr.directory=" + pathsBase(s.pmmAgentVersion, "{{", "}}") + "/collectors/custom-queries/postgresql/medium-resolution", "--web.listen-address=0.0.0.0:{{ .listen_port }}", - "--web.config={{ .TextFiles.webConfigPlaceholder }}"}, + }, } requireNoDuplicateFlags(s.T(), actual.Args) s.Require().Equal(expected.Args, actual.Args) diff --git a/managed/utils/collectors/collectors.go b/managed/utils/collectors/collectors.go index e8035d12b7..66e464ff40 100644 --- a/managed/utils/collectors/collectors.go +++ b/managed/utils/collectors/collectors.go @@ -42,17 +42,3 @@ func FilterOutCollectors(prefix string, args, disabledCollectors []string) []str } return enabledArgs } - -func DisableDefaultEnabledCollectors(prefix string, defaultCollectors []string, disabledCollectors []string) []string { - defaultCollectorsMap := make(map[string]struct{}) - for _, defaultCollector := range defaultCollectors { - defaultCollectorsMap[defaultCollector] = struct{}{} - } - args := []string{} - for _, collector := range disabledCollectors { - if _, ok := defaultCollectorsMap[collector]; ok { - args = append(args, fmt.Sprintf("%s%s", prefix, collector)) - } - } - return args -} diff --git a/managed/utils/collectors/collectors_test.go b/managed/utils/collectors/collectors_test.go deleted file mode 100644 index 6c2ef12612..0000000000 --- a/managed/utils/collectors/collectors_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package collectors - -import ( - "github.com/stretchr/testify/require" - "testing" -) - -func TestDisableDefaultEnabledCollectors(t *testing.T) { - type args struct { - prefix string - defaultCollectors []string - disabledCollectors []string - } - tests := []struct { - name string - args args - want []string - }{ - { - name: "Disable single default enabled collectors", - args: args{ - prefix: "--no-collector.", - defaultCollectors: []string{"a", "b", "c", "d", "e"}, - disabledCollectors: []string{"b"}, - }, - want: []string{"--no-collector.b"}, - }, - { - name: "Disable multiple default enabled collectors", - args: args{ - prefix: "--no-collector.", - defaultCollectors: []string{"a", "b", "c", "d", "e", "f"}, - disabledCollectors: []string{"a", "c"}, - }, - want: []string{"--no-collector.a", "--no-collector.c"}, - }, - { - name: "Disable all default enabled collectors", - args: args{ - prefix: "--no-collector.", - defaultCollectors: []string{"a", "b", "c"}, - disabledCollectors: []string{"a", "b", "c"}, - }, - want: []string{"--no-collector.a", "--no-collector.b", "--no-collector.c"}, - }, - { - name: "Disable non-default enabled collectors", - args: args{ - prefix: "--no-collector.", - defaultCollectors: []string{"a", "b", "c"}, - disabledCollectors: []string{"d", "e", "f"}, - }, - want: []string{}, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - actual := DisableDefaultEnabledCollectors(tt.args.prefix, tt.args.defaultCollectors, tt.args.disabledCollectors) - require.Equal(t, tt.want, actual, "DisableDefaultEnabledCollectors() = %v, want %v", actual, tt.want) - }) - } -} From fb8105a8a6b8ec7d752bd7ac6a1fd8d04cc07698 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Wed, 31 Jul 2024 12:36:16 +0300 Subject: [PATCH 19/70] PMM-12857 Fix API tests (part II) (#3106) * PMM-12857 Fix annotation test * PMM-12857 shorten the generated name * PMM-12857 add a test to check for tag length * PMM-12857 remove the hostname from TestString --- api-tests/helpers.go | 4 +-- api-tests/management/annotation_test.go | 37 ++++++++++++++++++++--- api-tests/management/nodes_test.go | 8 ++--- managed/services/management/annotation.go | 11 +++++-- 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/api-tests/helpers.go b/api-tests/helpers.go index 45e8b52c14..8fdf93b077 100644 --- a/api-tests/helpers.go +++ b/api-tests/helpers.go @@ -56,10 +56,10 @@ func TestString(t TestingT, name string) string { t.Helper() // Without proper seed parallel tests can generate same "random" number. - n, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt32)) + rnd, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt32)) require.NoError(t, err) - return strings.ReplaceAll(fmt.Sprintf("pmm-api-tests-%s-%s-%s-%d", Hostname, t.Name(), name, n), "/", "-") + return strings.ReplaceAll(fmt.Sprintf("api-test-%s-%s-%d", t.Name(), name, rnd), "/", "-") } // AssertAPIErrorf check that actual API error equals expected. diff --git a/api-tests/management/annotation_test.go b/api-tests/management/annotation_test.go index 524d187152..8fa0f170ab 100644 --- a/api-tests/management/annotation_test.go +++ b/api-tests/management/annotation_test.go @@ -16,6 +16,8 @@ package management import ( + "fmt" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -55,7 +57,7 @@ func TestAddAnnotation(t *testing.T) { pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument, "invalid AddAnnotationRequest.Text: value length must be at least 1 runes") }) - t.Run("Non-existing service", func(t *testing.T) { + t.Run("Non-existent service", func(t *testing.T) { params := &mservice.AddAnnotationParams{ Body: mservice.AddAnnotationBody{ Text: "Some text", @@ -67,7 +69,7 @@ func TestAddAnnotation(t *testing.T) { pmmapitests.AssertAPIErrorf(t, err, 404, codes.NotFound, `Service with name "no-service" not found.`) }) - t.Run("Non-existing node", func(t *testing.T) { + t.Run("Non-existent node", func(t *testing.T) { params := &mservice.AddAnnotationParams{ Body: mservice.AddAnnotationBody{ Text: "Some text", @@ -79,6 +81,33 @@ func TestAddAnnotation(t *testing.T) { pmmapitests.AssertAPIErrorf(t, err, 404, codes.NotFound, `Node with name "no-node" not found.`) }) + t.Run("Tag length exceeded", func(t *testing.T) { + nodeName := pmmapitests.TestString(t, strings.Repeat("long-annotation-node-name-", 10)) + paramsNode := &nodes.AddNodeParams{ + Body: nodes.AddNodeBody{ + Generic: &nodes.AddNodeParamsBodyGeneric{ + NodeName: nodeName, + Address: "10.0.0.1", + }, + }, + Context: pmmapitests.Context, + } + resNode, err := inventoryClient.Default.NodesService.AddNode(paramsNode) + assert.NoError(t, err) + genericNodeID := resNode.Payload.Generic.NodeID + defer pmmapitests.RemoveNodes(t, genericNodeID) + + params := &mservice.AddAnnotationParams{ + Body: mservice.AddAnnotationBody{ + Text: "Some text", + NodeName: nodeName, + }, + Context: pmmapitests.Context, + } + _, err = client.Default.ManagementService.AddAnnotation(params) + pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument, fmt.Sprintf("tag length cannot exceed 100 characters, tag: %s", nodeName)) + }) + t.Run("Existing service", func(t *testing.T) { nodeName := pmmapitests.TestString(t, "annotation-node") paramsNode := &nodes.AddNodeParams{ @@ -95,7 +124,7 @@ func TestAddAnnotation(t *testing.T) { genericNodeID := resNode.Payload.Generic.NodeID defer pmmapitests.RemoveNodes(t, genericNodeID) - serviceName := pmmapitests.TestString(t, "annotation-service") + serviceName := "annotation-service" paramsService := &services.AddServiceParams{ Body: services.AddServiceBody{ Mysql: &services.AddServiceParamsBodyMysql{ @@ -126,7 +155,7 @@ func TestAddAnnotation(t *testing.T) { }) t.Run("Existing node", func(t *testing.T) { - nodeName := pmmapitests.TestString(t, "annotation-node") + nodeName := "annotation-node" params := &nodes.AddNodeParams{ Body: nodes.AddNodeBody{ Generic: &nodes.AddNodeParamsBodyGeneric{ diff --git a/api-tests/management/nodes_test.go b/api-tests/management/nodes_test.go index 3c1e732e23..19e610afbc 100644 --- a/api-tests/management/nodes_test.go +++ b/api-tests/management/nodes_test.go @@ -59,7 +59,7 @@ func TestNodeRegister(t *testing.T) { }) t.Run("Reregister with same node name (no re-register - should fail)", func(t *testing.T) { - nodeName := pmmapitests.TestString(t, "node-name-for-all-fields") + nodeName := pmmapitests.TestString(t, "node-all") nodeID, pmmAgentID := RegisterGenericNode(t, mservice.RegisterNodeBody{ NodeName: nodeName, NodeType: pointer.ToString(mservice.RegisterNodeBodyNodeTypeNODETYPEGENERICNODE), @@ -85,7 +85,7 @@ func TestNodeRegister(t *testing.T) { }) t.Run("Reregister with same node name (re-register)", func(t *testing.T) { - nodeName := pmmapitests.TestString(t, "node-name-for-all-fields") + nodeName := pmmapitests.TestString(t, "node-all") nodeID, pmmAgentID := RegisterGenericNode(t, mservice.RegisterNodeBody{ NodeName: nodeName, NodeType: pointer.ToString(mservice.RegisterNodeBodyNodeTypeNODETYPEGENERICNODE), @@ -116,7 +116,7 @@ func TestNodeRegister(t *testing.T) { }) t.Run("Reregister with different node name (no re-register - should fail)", func(t *testing.T) { - nodeName := pmmapitests.TestString(t, "node-name-for-all-fields") + nodeName := pmmapitests.TestString(t, "node-all") nodeID, pmmAgentID := RegisterGenericNode(t, mservice.RegisterNodeBody{ NodeName: nodeName, NodeType: pointer.ToString(mservice.RegisterNodeBodyNodeTypeNODETYPEGENERICNODE), @@ -142,7 +142,7 @@ func TestNodeRegister(t *testing.T) { }) t.Run("Reregister with different node name (re-register)", func(t *testing.T) { - nodeName := pmmapitests.TestString(t, "node-name-for-all-fields") + nodeName := pmmapitests.TestString(t, "node-all") nodeID, pmmAgentID := RegisterGenericNode(t, mservice.RegisterNodeBody{ NodeName: nodeName, NodeType: pointer.ToString(mservice.RegisterNodeBodyNodeTypeNODETYPEGENERICNODE), diff --git a/managed/services/management/annotation.go b/managed/services/management/annotation.go index 1535064cbd..e0047a6c73 100644 --- a/managed/services/management/annotation.go +++ b/managed/services/management/annotation.go @@ -29,9 +29,7 @@ import ( "github.com/percona/pmm/managed/models" ) -// AddAnnotation create annotation in grafana. -// -//nolint:unparam +// AddAnnotation creates an annotation in grafana. func (s *ManagementService) AddAnnotation(ctx context.Context, req *managementv1.AddAnnotationRequest) (*managementv1.AddAnnotationResponse, error) { headers, ok := metadata.FromIncomingContext(ctx) if !ok { @@ -70,6 +68,13 @@ func (s *ManagementService) AddAnnotation(ctx context.Context, req *managementv1 postfix = append(postfix, "Node Name: "+req.NodeName) } + for _, tag := range tags { + if len(tag) > 100 { + msg := fmt.Sprintf("tag length cannot exceed 100 characters, tag: %s", tag) + return nil, status.Error(codes.InvalidArgument, msg) + } + } + if len(postfix) != 0 { req.Text += " (" + strings.Join(postfix, ". ") + ")" } From d8c4707adc2287416a44fd0ca49a7f16d5a49f17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 16:36:06 +0300 Subject: [PATCH 20/70] Bump @typescript-eslint/eslint-plugin in /cli-tests (#3103) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.17.0 to 7.18.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/v7.18.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 | 266 +++++++++++++++++++++++++++++++++--- cli-tests/package.json | 2 +- 2 files changed, 248 insertions(+), 20 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index ad8daa5374..b310ba3ac3 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": "^7.17.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.17.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", @@ -249,16 +249,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz", - "integrity": "sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/type-utils": "7.17.0", - "@typescript-eslint/utils": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -281,6 +281,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/parser": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", @@ -327,13 +374,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz", - "integrity": "sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/utils": "7.17.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -353,6 +400,88 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/types": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", @@ -419,15 +548,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.17.0.tgz", - "integrity": "sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -440,6 +569,105 @@ "eslint": "^8.56.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 72cd396dc4..a6f7cc3b74 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": "^7.17.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.17.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", From 697d96c57858667b24ab6743c702a270190954b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:44:37 +0000 Subject: [PATCH 21/70] Bump @typescript-eslint/parser from 7.17.0 to 7.18.0 in /cli-tests (#3104) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.17.0 to 7.18.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/v7.18.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 | 258 +++--------------------------------- cli-tests/package.json | 2 +- 2 files changed, 16 insertions(+), 244 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index b310ba3ac3..4adac998fd 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": "^7.18.0", - "@typescript-eslint/parser": "^7.17.0", + "@typescript-eslint/parser": "^7.18.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", @@ -281,63 +281,16 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/parser": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.17.0", - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/typescript-estree": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -357,13 +310,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz", - "integrity": "sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -400,7 +353,7 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/types": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", @@ -413,7 +366,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", @@ -441,88 +394,6 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.17.0.tgz", - "integrity": "sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz", - "integrity": "sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "@typescript-eslint/visitor-keys": "7.17.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -569,65 +440,7 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", @@ -644,47 +457,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz", - "integrity": "sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.17.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index a6f7cc3b74..9c05c1bb0f 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": "^7.18.0", - "@typescript-eslint/parser": "^7.17.0", + "@typescript-eslint/parser": "^7.18.0", "eslint": "8.56", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", From a598c48e637f9f82deba50dd4267913d743d6def Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Thu, 1 Aug 2024 11:27:01 +0300 Subject: [PATCH 22/70] PMM-7 Update CODEOWNERS (#3115) --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 077b1b6987..60d4920a33 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,6 @@ * @percona/pmm-review-be +/docs/ @percona/pmm-docs +/ui/ @percona/pmm-review-fe /agent/agents/postgres/ @JiriCtvrtka @percona/pmm-review-be /api/ @BupycHuk @percona/pmm-review-be /managed/services/checks/ @idoqo @percona/pmm-review-be From a06f8fdbad79ba8b7363e9d219891d1af9d4d567 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Thu, 1 Aug 2024 22:37:48 +0300 Subject: [PATCH 23/70] PMM-7 fix TestPerDBInstanceLimit. (#3120) --- agent/runner/runner_test.go | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/agent/runner/runner_test.go b/agent/runner/runner_test.go index 76ba0ad887..3459f766f8 100644 --- a/agent/runner/runner_test.go +++ b/agent/runner/runner_test.go @@ -156,36 +156,36 @@ func TestPerDBInstanceLimit(t *testing.T) { db2j2 := testJob{id: "test-5", timeout: time.Second, dsn: "postgresql://db2"} db2j3 := testJob{id: "test-6", timeout: time.Second, dsn: "postgresql://db2"} - require.NoError(t, cr.StartJob(db1j1)) - require.NoError(t, cr.StartJob(db2j1)) + require.NoError(t, cr.StartJob(db1j1), "start job db1j1 failed") + require.NoError(t, cr.StartJob(db2j1), "start job db2j1 failed") // Let jobs to start time.Sleep(200 * time.Millisecond) - require.NoError(t, cr.StartJob(db1j2)) - require.NoError(t, cr.StartJob(db2j2)) - require.NoError(t, cr.StartJob(db1j3)) - require.NoError(t, cr.StartJob(db2j3)) + require.NoError(t, cr.StartJob(db1j2), "start job db1j2 failed") + require.NoError(t, cr.StartJob(db2j2), "start job db2j2 failed") + require.NoError(t, cr.StartJob(db1j3), "start job db1j3 failed") + require.NoError(t, cr.StartJob(db2j3), "start job db2j3 failed") // Let rest jobs to reach semaphores time.Sleep(300 * time.Millisecond) - assert.True(t, cr.IsRunning(db1j1.ID())) - assert.True(t, cr.IsRunning(db2j1.ID())) - assert.False(t, cr.IsRunning(db1j2.ID())) - assert.False(t, cr.IsRunning(db2j2.ID())) - assert.False(t, cr.IsRunning(db1j3.ID())) - assert.False(t, cr.IsRunning(db2j3.ID())) + assert.True(t, cr.IsRunning(db1j1.ID()), "db1j1 is not running") + assert.True(t, cr.IsRunning(db2j1.ID()), "db2j1 is not running") + assert.False(t, cr.IsRunning(db1j2.ID()), "db1j2 is running") + assert.False(t, cr.IsRunning(db2j2.ID()), "db2j2 is running") + assert.False(t, cr.IsRunning(db1j3.ID()), "db1j3 is running") + assert.False(t, cr.IsRunning(db2j3.ID()), "db2j3 is running") // Over time all jobs are terminated - time.Sleep(2 * time.Second) - - assert.False(t, cr.IsRunning(db1j1.ID())) - assert.False(t, cr.IsRunning(db2j1.ID())) - assert.False(t, cr.IsRunning(db1j2.ID())) - assert.False(t, cr.IsRunning(db2j2.ID())) - assert.False(t, cr.IsRunning(db1j3.ID())) - assert.False(t, cr.IsRunning(db2j3.ID())) + time.Sleep(3 * time.Second) + + assert.False(t, cr.IsRunning(db1j1.ID()), "db1j1 is running") + assert.False(t, cr.IsRunning(db2j1.ID()), "db2j1 is running") + assert.False(t, cr.IsRunning(db1j2.ID()), "db1j2 is running") + assert.False(t, cr.IsRunning(db2j2.ID()), "db2j2 is running") + assert.False(t, cr.IsRunning(db1j3.ID()), "db1j3 is running") + assert.False(t, cr.IsRunning(db2j3.ID()), "db2j3 is running") } func TestDefaultPerDBInstanceLimit(t *testing.T) { From 5393895a06c14043b89153eca6b0249bc8c38657 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Fri, 2 Aug 2024 10:56:14 +0300 Subject: [PATCH 24/70] PMM-12985 Create v3 API infra (#3116) --- .github/workflows/doc.yml | 24 +- api/swagger/header.json | 5 +- api/swagger/swagger-dev-only.json | 13341 ---------------- api/swagger/swagger.json | 5 +- .../advisors-and-advisor-checks.md | 2 +- docs/api/advisor-api/failed-checks.md | 2 +- docs/api/advisor-api/overview.md | 8 +- docs/api/backups/list-locations.md | 2 +- docs/api/backups/overview.md | 24 + docs/api/backups/restore-backup.md | 3 +- docs/api/backups/start-backup.md | 3 +- docs/api/inventory/add-node.md | 4 +- 12 files changed, 57 insertions(+), 13366 deletions(-) delete mode 100644 api/swagger/swagger-dev-only.json create mode 100644 docs/api/backups/overview.md diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 95b4c948f8..4aefa14550 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -3,31 +3,41 @@ on: push: branches: - main + - v3 paths: - "api/**" - "docs/api/**" workflow_dispatch: - inputs: - version: - description: "API Version on readme.io" - required: true - default: "v1.0" # v0.0 stands for the dev version jobs: sync: name: Sync runs-on: ubuntu-22.04 + env: + VERSION: v2 + ID: 626badcabbc59c02acc1a53f + steps: - name: Check out code uses: actions/checkout@v4 + - name: Detect PMM version and API ID + run: | + # For reference: + # PMM 2: VERSION=v2, ID=626badcabbc59c02acc1a53f + # PMM 3: VERSION=v3, ID=622892a957a7410330bc6184 + export VERSION=$(cat api/swagger/swagger.json | jq -r '.info.version') + export ID=$(cat api/swagger/swagger.json | jq -r '."x-readme-id"') + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "ID=$ID" >> $GITHUB_ENV + - name: API uses: readmeio/rdme@v8 with: - rdme: openapi ./api/swagger/swagger.json --id=626badcabbc59c02acc1a53f --key=${{ secrets.README_TOKEN }} + rdme: openapi ./api/swagger/swagger.json --id=${{ env.ID }} --key=${{ secrets.README_TOKEN }} - name: Markdown docs uses: readmeio/rdme@v8 with: - rdme: docs docs/api --version=${{ github.event.inputs.version || 'v1.0' }} --key=${{ secrets.README_TOKEN }} + rdme: docs docs/api --version=${{ env.VERSION }} --key=${{ secrets.README_TOKEN }} diff --git a/api/swagger/header.json b/api/swagger/header.json index 881b0fb2bb..90c8445d6f 100644 --- a/api/swagger/header.json +++ b/api/swagger/header.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "title": "PMM API", - "version": "public" + "version": "v2" }, "schemes": [ "https", @@ -25,5 +25,6 @@ "node", "python" ] - } + }, + "x-readme-id": "626badcabbc59c02acc1a53f" } diff --git a/api/swagger/swagger-dev-only.json b/api/swagger/swagger-dev-only.json deleted file mode 100644 index bda80314e4..0000000000 --- a/api/swagger/swagger-dev-only.json +++ /dev/null @@ -1,13341 +0,0 @@ -{ - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "schemes": [ - "https", - "http" - ], - "swagger": "2.0", - "info": { - "description": "This API is for development and testing purposes.", - "title": "PMM API", - "version": "develop" - }, - "paths": { - "/v0/qan/Filters/Get": { - "post": { - "tags": [ - "Filters" - ], - "summary": "Get gets map of metrics names.", - "operationId": "Get", - "parameters": [ - { - "description": "FiltersRequest contains period for which we need filters.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "FiltersRequest contains period for which we need filters.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "main_metric_name": { - "type": "string", - "x-order": 2 - }, - "labels": { - "type": "array", - "items": { - "description": "MapFieldEntry allows to pass labels/dimensions in form like {\"server\": [\"db1\", \"db2\"...]}.", - "type": "object", - "properties": { - "key": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - } - }, - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "FiltersReply is map of labels for given period by key.\nKey is label's name and value is label's value and how many times it occur.", - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "description": "ListLabels is list of label's values: duplicates are impossible.", - "type": "object", - "properties": { - "name": { - "type": "array", - "items": { - "description": "Values is label values and main metric percent and per second.", - "type": "object", - "properties": { - "value": { - "type": "string", - "x-order": 0 - }, - "main_metric_percent": { - "type": "number", - "format": "float", - "x-order": 1 - }, - "main_metric_per_sec": { - "type": "number", - "format": "float", - "x-order": 2 - } - } - }, - "x-order": 0 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/GetMetricsNames": { - "post": { - "tags": [ - "MetricsNames" - ], - "summary": "GetMetricsNames gets map of metrics names.", - "operationId": "GetMetricsNames", - "parameters": [ - { - "description": "MetricsNamesRequest is emty.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "MetricsNamesRequest is emty.", - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "MetricsNamesReply is map of stored metrics:\nkey is root of metric name in db (Ex:. [m_]query_time[_sum]);\nvalue - Human readable name of metrics.", - "type": "object", - "properties": { - "data": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/GetReport": { - "post": { - "tags": [ - "Profile" - ], - "summary": "GetReport returns list of metrics group by queryid or other dimentions.", - "operationId": "GetReport", - "parameters": [ - { - "description": "ReportRequest defines filtering of metrics report for db server or other dimentions.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "ReportRequest defines filtering of metrics report for db server or other dimentions.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "group_by": { - "type": "string", - "x-order": 2 - }, - "labels": { - "type": "array", - "items": { - "description": "ReportMapFieldEntry allows to pass labels/dimentions in form like {\"server\": [\"db1\", \"db2\"...]}.", - "type": "object", - "properties": { - "key": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - } - }, - "x-order": 3 - }, - "columns": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 4 - }, - "order_by": { - "type": "string", - "x-order": 5 - }, - "offset": { - "type": "integer", - "format": "int64", - "x-order": 6 - }, - "limit": { - "type": "integer", - "format": "int64", - "x-order": 7 - }, - "main_metric": { - "type": "string", - "x-order": 8 - }, - "search": { - "type": "string", - "x-order": 9 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "ReportReply is list of reports per quieryids, hosts etc.", - "type": "object", - "properties": { - "total_rows": { - "type": "integer", - "format": "int64", - "x-order": 0 - }, - "offset": { - "type": "integer", - "format": "int64", - "x-order": 1 - }, - "limit": { - "type": "integer", - "format": "int64", - "x-order": 2 - }, - "rows": { - "type": "array", - "items": { - "description": "Row define metrics for selected dimention.", - "type": "object", - "properties": { - "rank": { - "type": "integer", - "format": "int64", - "x-order": 0 - }, - "dimension": { - "type": "string", - "x-order": 1 - }, - "database": { - "type": "string", - "x-order": 2 - }, - "metrics": { - "type": "object", - "additionalProperties": { - "description": "Metric cell.", - "type": "object", - "properties": { - "stats": { - "description": "Stat is statistics of specific metric.", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float", - "x-order": 0 - }, - "cnt": { - "type": "number", - "format": "float", - "x-order": 1 - }, - "sum": { - "type": "number", - "format": "float", - "x-order": 2 - }, - "min": { - "type": "number", - "format": "float", - "x-order": 3 - }, - "max": { - "type": "number", - "format": "float", - "x-order": 4 - }, - "p99": { - "type": "number", - "format": "float", - "x-order": 5 - }, - "avg": { - "type": "number", - "format": "float", - "x-order": 6 - }, - "sum_per_sec": { - "type": "number", - "format": "float", - "x-order": 7 - } - }, - "x-order": 0 - } - } - }, - "x-order": 3 - }, - "sparkline": { - "type": "array", - "items": { - "description": "Point contains values that represents abscissa (time) and ordinate (volume etc.)\nof every point in a coordinate system of Sparklines.", - "type": "object", - "properties": { - "point": { - "description": "The serial number of the chart point from the largest time in the time interval to the lowest time in the time range.", - "type": "integer", - "format": "int64", - "x-order": 0 - }, - "time_frame": { - "description": "Duration beetween two points.", - "type": "integer", - "format": "int64", - "x-order": 1 - }, - "timestamp": { - "description": "Time of point in format RFC3339.", - "type": "string", - "x-order": 2 - }, - "load": { - "description": "load is query_time / time_range.", - "type": "number", - "format": "float", - "x-order": 3 - }, - "num_queries_per_sec": { - "description": "number of queries in bucket.", - "type": "number", - "format": "float", - "x-order": 4 - }, - "num_queries_with_errors_per_sec": { - "description": "number of queries with errors.", - "type": "number", - "format": "float", - "x-order": 5 - }, - "num_queries_with_warnings_per_sec": { - "description": "number of queries with warnings.", - "type": "number", - "format": "float", - "x-order": 6 - }, - "m_query_time_sum_per_sec": { - "description": "The statement execution time in seconds.", - "type": "number", - "format": "float", - "x-order": 7 - }, - "m_lock_time_sum_per_sec": { - "description": "The time to acquire locks in seconds.", - "type": "number", - "format": "float", - "x-order": 8 - }, - "m_rows_sent_sum_per_sec": { - "description": "The number of rows sent to the client.", - "type": "number", - "format": "float", - "x-order": 9 - }, - "m_rows_examined_sum_per_sec": { - "description": "Number of rows scanned - SELECT.", - "type": "number", - "format": "float", - "x-order": 10 - }, - "m_rows_affected_sum_per_sec": { - "description": "Number of rows changed - UPDATE, DELETE, INSERT.", - "type": "number", - "format": "float", - "x-order": 11 - }, - "m_rows_read_sum_per_sec": { - "description": "The number of rows read from tables.", - "type": "number", - "format": "float", - "x-order": 12 - }, - "m_merge_passes_sum_per_sec": { - "description": "The number of merge passes that the sort algorithm has had to do.", - "type": "number", - "format": "float", - "x-order": 13 - }, - "m_innodb_io_r_ops_sum_per_sec": { - "description": "Counts the number of page read operations scheduled.", - "type": "number", - "format": "float", - "x-order": 14 - }, - "m_innodb_io_r_bytes_sum_per_sec": { - "description": "Similar to innodb_IO_r_ops, but the unit is bytes.", - "type": "number", - "format": "float", - "x-order": 15 - }, - "m_innodb_io_r_wait_sum_per_sec": { - "description": "Shows how long (in seconds) it took InnoDB to actually read the data from storage.", - "type": "number", - "format": "float", - "x-order": 16 - }, - "m_innodb_rec_lock_wait_sum_per_sec": { - "description": "Shows how long (in seconds) the query waited for row locks.", - "type": "number", - "format": "float", - "x-order": 17 - }, - "m_innodb_queue_wait_sum_per_sec": { - "description": "Shows how long (in seconds) the query spent either waiting to enter the InnoDB queue or inside that queue waiting for execution.", - "type": "number", - "format": "float", - "x-order": 18 - }, - "m_innodb_pages_distinct_sum_per_sec": { - "description": "Counts approximately the number of unique pages the query accessed.", - "type": "number", - "format": "float", - "x-order": 19 - }, - "m_query_length_sum_per_sec": { - "description": "Shows how long the query is.", - "type": "number", - "format": "float", - "x-order": 20 - }, - "m_bytes_sent_sum_per_sec": { - "description": "The number of bytes sent to all clients.", - "type": "number", - "format": "float", - "x-order": 21 - }, - "m_tmp_tables_sum_per_sec": { - "description": "Number of temporary tables created on memory for the query.", - "type": "number", - "format": "float", - "x-order": 22 - }, - "m_tmp_disk_tables_sum_per_sec": { - "description": "Number of temporary tables created on disk for the query.", - "type": "number", - "format": "float", - "x-order": 23 - }, - "m_tmp_table_sizes_sum_per_sec": { - "description": "Total Size in bytes for all temporary tables used in the query.", - "type": "number", - "format": "float", - "x-order": 24 - }, - "m_qc_hit_sum_per_sec": { - "description": "Boolean metrics:\n- *_sum_per_sec - how many times this matric was true.\n\nQuery Cache hits.", - "type": "number", - "format": "float", - "x-order": 25 - }, - "m_full_scan_sum_per_sec": { - "description": "The query performed a full table scan.", - "type": "number", - "format": "float", - "x-order": 26 - }, - "m_full_join_sum_per_sec": { - "description": "The query performed a full join (a join without indexes).", - "type": "number", - "format": "float", - "x-order": 27 - }, - "m_tmp_table_sum_per_sec": { - "description": "The query created an implicit internal temporary table.", - "type": "number", - "format": "float", - "x-order": 28 - }, - "m_tmp_table_on_disk_sum_per_sec": { - "description": "The querys temporary table was stored on disk.", - "type": "number", - "format": "float", - "x-order": 29 - }, - "m_filesort_sum_per_sec": { - "description": "The query used a filesort.", - "type": "number", - "format": "float", - "x-order": 30 - }, - "m_filesort_on_disk_sum_per_sec": { - "description": "The filesort was performed on disk.", - "type": "number", - "format": "float", - "x-order": 31 - }, - "m_select_full_range_join_sum_per_sec": { - "description": "The number of joins that used a range search on a reference table.", - "type": "number", - "format": "float", - "x-order": 32 - }, - "m_select_range_sum_per_sec": { - "description": "The number of joins that used ranges on the first table.", - "type": "number", - "format": "float", - "x-order": 33 - }, - "m_select_range_check_sum_per_sec": { - "description": "The number of joins without keys that check for key usage after each row.", - "type": "number", - "format": "float", - "x-order": 34 - }, - "m_sort_range_sum_per_sec": { - "description": "The number of sorts that were done using ranges.", - "type": "number", - "format": "float", - "x-order": 35 - }, - "m_sort_rows_sum_per_sec": { - "description": "The number of sorted rows.", - "type": "number", - "format": "float", - "x-order": 36 - }, - "m_sort_scan_sum_per_sec": { - "description": "The number of sorts that were done by scanning the table.", - "type": "number", - "format": "float", - "x-order": 37 - }, - "m_no_index_used_sum_per_sec": { - "description": "The number of queries without index.", - "type": "number", - "format": "float", - "x-order": 38 - }, - "m_no_good_index_used_sum_per_sec": { - "description": "The number of queries without good index.", - "type": "number", - "format": "float", - "x-order": 39 - }, - "m_docs_returned_sum_per_sec": { - "description": "MongoDB metrics.\n\nThe number of returned documents.", - "type": "number", - "format": "float", - "x-order": 40 - }, - "m_response_length_sum_per_sec": { - "description": "The response length of the query result in bytes.", - "type": "number", - "format": "float", - "x-order": 41 - }, - "m_docs_scanned_sum_per_sec": { - "description": "The number of scanned documents.", - "type": "number", - "format": "float", - "x-order": 42 - }, - "m_shared_blks_hit_sum_per_sec": { - "description": "PostgreSQL metrics.\n\nTotal number of shared block cache hits by the statement.", - "type": "number", - "format": "float", - "x-order": 43 - }, - "m_shared_blks_read_sum_per_sec": { - "description": "Total number of shared blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 44 - }, - "m_shared_blks_dirtied_sum_per_sec": { - "description": "Total number of shared blocks dirtied by the statement.", - "type": "number", - "format": "float", - "x-order": 45 - }, - "m_shared_blks_written_sum_per_sec": { - "description": "Total number of shared blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 46 - }, - "m_local_blks_hit_sum_per_sec": { - "description": "Total number of local block cache hits by the statement.", - "type": "number", - "format": "float", - "x-order": 47 - }, - "m_local_blks_read_sum_per_sec": { - "description": "Total number of local blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 48 - }, - "m_local_blks_dirtied_sum_per_sec": { - "description": "Total number of local blocks dirtied by the statement.", - "type": "number", - "format": "float", - "x-order": 49 - }, - "m_local_blks_written_sum_per_sec": { - "description": "Total number of local blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 50 - }, - "m_temp_blks_read_sum_per_sec": { - "description": "Total number of temp blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 51 - }, - "m_temp_blks_written_sum_per_sec": { - "description": "Total number of temp blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 52 - }, - "m_blk_read_time_sum_per_sec": { - "description": "Total time the statement spent reading blocks, in milliseconds (if track_io_timing is enabled, otherwise zero).", - "type": "number", - "format": "float", - "x-order": 53 - }, - "m_blk_write_time_sum_per_sec": { - "description": "Total time the statement spent writing blocks, in milliseconds (if track_io_timing is enabled, otherwise zero).", - "type": "number", - "format": "float", - "x-order": 54 - }, - "m_cpu_user_time_sum_per_sec": { - "description": "Total time user spent in query.", - "type": "number", - "format": "float", - "x-order": 55 - }, - "m_cpu_sys_time_sum_per_sec": { - "description": "Total time system spent in query.", - "type": "number", - "format": "float", - "x-order": 56 - }, - "m_plans_calls_sum_per_sec": { - "description": "Total number of planned calls.", - "type": "number", - "format": "float", - "title": "pg_stat_monitor 0.9 metrics", - "x-order": 57 - }, - "m_wal_records_sum_per_sec": { - "description": "Total number of WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 58 - }, - "m_wal_fpi_sum_per_sec": { - "description": "Total number of FPI (full page images) in WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 59 - }, - "m_wal_bytes_sum_per_sec": { - "description": "Total bytes of WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 60 - }, - "m_plan_time_sum_per_sec": { - "description": "Plan time in per seconds.", - "type": "number", - "format": "float", - "x-order": 61 - } - } - }, - "x-order": 4 - }, - "fingerprint": { - "type": "string", - "x-order": 5 - }, - "num_queries": { - "type": "integer", - "format": "int64", - "x-order": 6 - }, - "qps": { - "type": "number", - "format": "float", - "x-order": 7 - }, - "load": { - "type": "number", - "format": "float", - "x-order": 8 - } - } - }, - "x-order": 3 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/ExplainFingerprintByQueryID": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "ExplainFingerprintByQueryID get explain fingerprint for given query ID.", - "operationId": "ExplainFingerprintByQueryID", - "parameters": [ - { - "description": "ExplainFingerprintByQueryIDRequest get explain fingerprint for given query ID.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "ExplainFingerprintByQueryIDRequest get explain fingerprint for given query ID.", - "type": "object", - "properties": { - "serviceid": { - "type": "string", - "x-order": 0 - }, - "query_id": { - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "ExplainFingerprintByQueryIDReply is explain fingerprint and placeholders count for given query ID.", - "type": "object", - "properties": { - "explain_fingerprint": { - "type": "string", - "x-order": 0 - }, - "placeholders_count": { - "type": "integer", - "format": "int64", - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/GetHistogram": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "GetHistogram gets histogram items for specific filtering.", - "operationId": "GetHistogram", - "parameters": [ - { - "description": "HistogramRequest defines filtering by time range, labels and queryid.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "HistogramRequest defines filtering by time range, labels and queryid.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "labels": { - "type": "array", - "items": { - "description": "MapFieldEntry allows to pass labels/dimensions in form like {\"server\": [\"db1\", \"db2\"...]}.", - "type": "object", - "properties": { - "key": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - } - }, - "x-order": 2 - }, - "queryid": { - "type": "string", - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "HistogramReply is histogram items as a list.", - "type": "object", - "properties": { - "histogram_items": { - "type": "array", - "items": { - "description": "HistogramItem represents one item in histogram.", - "type": "object", - "properties": { - "range": { - "type": "string", - "x-order": 0 - }, - "frequency": { - "type": "integer", - "format": "int64", - "x-order": 1 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/GetLabels": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "GetLabels gets list of labels for object details.", - "operationId": "GetLabels", - "parameters": [ - { - "description": "ObjectDetailsLabelsRequest defines filtering of object detail's labels for specific value of\ndimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "ObjectDetailsLabelsRequest defines filtering of object detail's labels for specific value of\ndimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "filter_by": { - "description": "dimension value: ex: queryid - 1D410B4BE5060972.", - "type": "string", - "x-order": 2 - }, - "group_by": { - "description": "one of dimension: queryid | host ...", - "type": "string", - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "ObjectDetailsLabelsReply is a map of labels names as keys and labels values as a list.", - "type": "object", - "properties": { - "labels": { - "type": "object", - "additionalProperties": { - "description": "ListLabelValues is list of label's values.", - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/GetMetrics": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "GetMetrics gets map of metrics for specific filtering.", - "operationId": "GetMetrics", - "parameters": [ - { - "description": "MetricsRequest defines filtering of metrics for specific value of dimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "MetricsRequest defines filtering of metrics for specific value of dimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "filter_by": { - "description": "dimension value: ex: queryid - 1D410B4BE5060972.", - "type": "string", - "x-order": 2 - }, - "group_by": { - "description": "one of dimension: queryid | host ...", - "type": "string", - "x-order": 3 - }, - "labels": { - "type": "array", - "items": { - "description": "MapFieldEntry allows to pass labels/dimensions in form like {\"server\": [\"db1\", \"db2\"...]}.", - "type": "object", - "properties": { - "key": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - } - }, - "x-order": 4 - }, - "include_only_fields": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - }, - "totals": { - "type": "boolean", - "title": "retrieve only values for totals, excluding N/A values", - "x-order": 6 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "MetricsReply defines metrics for specific value of dimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "type": "object", - "properties": { - "metrics": { - "type": "object", - "additionalProperties": { - "description": "MetricValues is statistics of specific metric.", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float", - "x-order": 0 - }, - "cnt": { - "type": "number", - "format": "float", - "x-order": 1 - }, - "sum": { - "type": "number", - "format": "float", - "x-order": 2 - }, - "min": { - "type": "number", - "format": "float", - "x-order": 3 - }, - "max": { - "type": "number", - "format": "float", - "x-order": 4 - }, - "avg": { - "type": "number", - "format": "float", - "x-order": 5 - }, - "p99": { - "type": "number", - "format": "float", - "x-order": 6 - }, - "percent_of_total": { - "type": "number", - "format": "float", - "x-order": 7 - } - } - }, - "x-order": 0 - }, - "text_metrics": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 1 - }, - "sparkline": { - "type": "array", - "items": { - "description": "Point contains values that represents abscissa (time) and ordinate (volume etc.)\nof every point in a coordinate system of Sparklines.", - "type": "object", - "properties": { - "point": { - "description": "The serial number of the chart point from the largest time in the time interval to the lowest time in the time range.", - "type": "integer", - "format": "int64", - "x-order": 0 - }, - "time_frame": { - "description": "Duration beetween two points.", - "type": "integer", - "format": "int64", - "x-order": 1 - }, - "timestamp": { - "description": "Time of point in format RFC3339.", - "type": "string", - "x-order": 2 - }, - "load": { - "description": "load is query_time / time_range.", - "type": "number", - "format": "float", - "x-order": 3 - }, - "num_queries_per_sec": { - "description": "number of queries in bucket.", - "type": "number", - "format": "float", - "x-order": 4 - }, - "num_queries_with_errors_per_sec": { - "description": "number of queries with errors.", - "type": "number", - "format": "float", - "x-order": 5 - }, - "num_queries_with_warnings_per_sec": { - "description": "number of queries with warnings.", - "type": "number", - "format": "float", - "x-order": 6 - }, - "m_query_time_sum_per_sec": { - "description": "The statement execution time in seconds.", - "type": "number", - "format": "float", - "x-order": 7 - }, - "m_lock_time_sum_per_sec": { - "description": "The time to acquire locks in seconds.", - "type": "number", - "format": "float", - "x-order": 8 - }, - "m_rows_sent_sum_per_sec": { - "description": "The number of rows sent to the client.", - "type": "number", - "format": "float", - "x-order": 9 - }, - "m_rows_examined_sum_per_sec": { - "description": "Number of rows scanned - SELECT.", - "type": "number", - "format": "float", - "x-order": 10 - }, - "m_rows_affected_sum_per_sec": { - "description": "Number of rows changed - UPDATE, DELETE, INSERT.", - "type": "number", - "format": "float", - "x-order": 11 - }, - "m_rows_read_sum_per_sec": { - "description": "The number of rows read from tables.", - "type": "number", - "format": "float", - "x-order": 12 - }, - "m_merge_passes_sum_per_sec": { - "description": "The number of merge passes that the sort algorithm has had to do.", - "type": "number", - "format": "float", - "x-order": 13 - }, - "m_innodb_io_r_ops_sum_per_sec": { - "description": "Counts the number of page read operations scheduled.", - "type": "number", - "format": "float", - "x-order": 14 - }, - "m_innodb_io_r_bytes_sum_per_sec": { - "description": "Similar to innodb_IO_r_ops, but the unit is bytes.", - "type": "number", - "format": "float", - "x-order": 15 - }, - "m_innodb_io_r_wait_sum_per_sec": { - "description": "Shows how long (in seconds) it took InnoDB to actually read the data from storage.", - "type": "number", - "format": "float", - "x-order": 16 - }, - "m_innodb_rec_lock_wait_sum_per_sec": { - "description": "Shows how long (in seconds) the query waited for row locks.", - "type": "number", - "format": "float", - "x-order": 17 - }, - "m_innodb_queue_wait_sum_per_sec": { - "description": "Shows how long (in seconds) the query spent either waiting to enter the InnoDB queue or inside that queue waiting for execution.", - "type": "number", - "format": "float", - "x-order": 18 - }, - "m_innodb_pages_distinct_sum_per_sec": { - "description": "Counts approximately the number of unique pages the query accessed.", - "type": "number", - "format": "float", - "x-order": 19 - }, - "m_query_length_sum_per_sec": { - "description": "Shows how long the query is.", - "type": "number", - "format": "float", - "x-order": 20 - }, - "m_bytes_sent_sum_per_sec": { - "description": "The number of bytes sent to all clients.", - "type": "number", - "format": "float", - "x-order": 21 - }, - "m_tmp_tables_sum_per_sec": { - "description": "Number of temporary tables created on memory for the query.", - "type": "number", - "format": "float", - "x-order": 22 - }, - "m_tmp_disk_tables_sum_per_sec": { - "description": "Number of temporary tables created on disk for the query.", - "type": "number", - "format": "float", - "x-order": 23 - }, - "m_tmp_table_sizes_sum_per_sec": { - "description": "Total Size in bytes for all temporary tables used in the query.", - "type": "number", - "format": "float", - "x-order": 24 - }, - "m_qc_hit_sum_per_sec": { - "description": "Boolean metrics:\n- *_sum_per_sec - how many times this matric was true.\n\nQuery Cache hits.", - "type": "number", - "format": "float", - "x-order": 25 - }, - "m_full_scan_sum_per_sec": { - "description": "The query performed a full table scan.", - "type": "number", - "format": "float", - "x-order": 26 - }, - "m_full_join_sum_per_sec": { - "description": "The query performed a full join (a join without indexes).", - "type": "number", - "format": "float", - "x-order": 27 - }, - "m_tmp_table_sum_per_sec": { - "description": "The query created an implicit internal temporary table.", - "type": "number", - "format": "float", - "x-order": 28 - }, - "m_tmp_table_on_disk_sum_per_sec": { - "description": "The querys temporary table was stored on disk.", - "type": "number", - "format": "float", - "x-order": 29 - }, - "m_filesort_sum_per_sec": { - "description": "The query used a filesort.", - "type": "number", - "format": "float", - "x-order": 30 - }, - "m_filesort_on_disk_sum_per_sec": { - "description": "The filesort was performed on disk.", - "type": "number", - "format": "float", - "x-order": 31 - }, - "m_select_full_range_join_sum_per_sec": { - "description": "The number of joins that used a range search on a reference table.", - "type": "number", - "format": "float", - "x-order": 32 - }, - "m_select_range_sum_per_sec": { - "description": "The number of joins that used ranges on the first table.", - "type": "number", - "format": "float", - "x-order": 33 - }, - "m_select_range_check_sum_per_sec": { - "description": "The number of joins without keys that check for key usage after each row.", - "type": "number", - "format": "float", - "x-order": 34 - }, - "m_sort_range_sum_per_sec": { - "description": "The number of sorts that were done using ranges.", - "type": "number", - "format": "float", - "x-order": 35 - }, - "m_sort_rows_sum_per_sec": { - "description": "The number of sorted rows.", - "type": "number", - "format": "float", - "x-order": 36 - }, - "m_sort_scan_sum_per_sec": { - "description": "The number of sorts that were done by scanning the table.", - "type": "number", - "format": "float", - "x-order": 37 - }, - "m_no_index_used_sum_per_sec": { - "description": "The number of queries without index.", - "type": "number", - "format": "float", - "x-order": 38 - }, - "m_no_good_index_used_sum_per_sec": { - "description": "The number of queries without good index.", - "type": "number", - "format": "float", - "x-order": 39 - }, - "m_docs_returned_sum_per_sec": { - "description": "MongoDB metrics.\n\nThe number of returned documents.", - "type": "number", - "format": "float", - "x-order": 40 - }, - "m_response_length_sum_per_sec": { - "description": "The response length of the query result in bytes.", - "type": "number", - "format": "float", - "x-order": 41 - }, - "m_docs_scanned_sum_per_sec": { - "description": "The number of scanned documents.", - "type": "number", - "format": "float", - "x-order": 42 - }, - "m_shared_blks_hit_sum_per_sec": { - "description": "PostgreSQL metrics.\n\nTotal number of shared block cache hits by the statement.", - "type": "number", - "format": "float", - "x-order": 43 - }, - "m_shared_blks_read_sum_per_sec": { - "description": "Total number of shared blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 44 - }, - "m_shared_blks_dirtied_sum_per_sec": { - "description": "Total number of shared blocks dirtied by the statement.", - "type": "number", - "format": "float", - "x-order": 45 - }, - "m_shared_blks_written_sum_per_sec": { - "description": "Total number of shared blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 46 - }, - "m_local_blks_hit_sum_per_sec": { - "description": "Total number of local block cache hits by the statement.", - "type": "number", - "format": "float", - "x-order": 47 - }, - "m_local_blks_read_sum_per_sec": { - "description": "Total number of local blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 48 - }, - "m_local_blks_dirtied_sum_per_sec": { - "description": "Total number of local blocks dirtied by the statement.", - "type": "number", - "format": "float", - "x-order": 49 - }, - "m_local_blks_written_sum_per_sec": { - "description": "Total number of local blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 50 - }, - "m_temp_blks_read_sum_per_sec": { - "description": "Total number of temp blocks read by the statement.", - "type": "number", - "format": "float", - "x-order": 51 - }, - "m_temp_blks_written_sum_per_sec": { - "description": "Total number of temp blocks written by the statement.", - "type": "number", - "format": "float", - "x-order": 52 - }, - "m_blk_read_time_sum_per_sec": { - "description": "Total time the statement spent reading blocks, in milliseconds (if track_io_timing is enabled, otherwise zero).", - "type": "number", - "format": "float", - "x-order": 53 - }, - "m_blk_write_time_sum_per_sec": { - "description": "Total time the statement spent writing blocks, in milliseconds (if track_io_timing is enabled, otherwise zero).", - "type": "number", - "format": "float", - "x-order": 54 - }, - "m_cpu_user_time_sum_per_sec": { - "description": "Total time user spent in query.", - "type": "number", - "format": "float", - "x-order": 55 - }, - "m_cpu_sys_time_sum_per_sec": { - "description": "Total time system spent in query.", - "type": "number", - "format": "float", - "x-order": 56 - }, - "m_plans_calls_sum_per_sec": { - "description": "Total number of planned calls.", - "type": "number", - "format": "float", - "title": "pg_stat_monitor 0.9 metrics", - "x-order": 57 - }, - "m_wal_records_sum_per_sec": { - "description": "Total number of WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 58 - }, - "m_wal_fpi_sum_per_sec": { - "description": "Total number of FPI (full page images) in WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 59 - }, - "m_wal_bytes_sum_per_sec": { - "description": "Total bytes of WAL (Write-ahead logging) records.", - "type": "number", - "format": "float", - "x-order": 60 - }, - "m_plan_time_sum_per_sec": { - "description": "Plan time in per seconds.", - "type": "number", - "format": "float", - "x-order": 61 - } - } - }, - "x-order": 2 - }, - "totals": { - "type": "object", - "additionalProperties": { - "description": "MetricValues is statistics of specific metric.", - "type": "object", - "properties": { - "rate": { - "type": "number", - "format": "float", - "x-order": 0 - }, - "cnt": { - "type": "number", - "format": "float", - "x-order": 1 - }, - "sum": { - "type": "number", - "format": "float", - "x-order": 2 - }, - "min": { - "type": "number", - "format": "float", - "x-order": 3 - }, - "max": { - "type": "number", - "format": "float", - "x-order": 4 - }, - "avg": { - "type": "number", - "format": "float", - "x-order": 5 - }, - "p99": { - "type": "number", - "format": "float", - "x-order": 6 - }, - "percent_of_total": { - "type": "number", - "format": "float", - "x-order": 7 - } - } - }, - "x-order": 3 - }, - "fingerprint": { - "type": "string", - "x-order": 4 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/GetQueryExample": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "GetQueryExample gets list of query examples.", - "operationId": "GetQueryExample", - "parameters": [ - { - "description": "QueryExampleRequest defines filtering of query examples for specific value of\ndimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "QueryExampleRequest defines filtering of query examples for specific value of\ndimension (ex.: host=hostname1 or queryid=1D410B4BE5060972.", - "type": "object", - "properties": { - "period_start_from": { - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "period_start_to": { - "type": "string", - "format": "date-time", - "x-order": 1 - }, - "filter_by": { - "description": "dimension value: ex: queryid - 1D410B4BE5060972.", - "type": "string", - "x-order": 2 - }, - "group_by": { - "description": "one of dimension: queryid | host ...", - "type": "string", - "x-order": 3 - }, - "labels": { - "type": "array", - "items": { - "description": "MapFieldEntry allows to pass labels/dimensions in form like {\"server\": [\"db1\", \"db2\"...]}.", - "type": "object", - "properties": { - "key": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - } - }, - "x-order": 4 - }, - "limit": { - "type": "integer", - "format": "int64", - "x-order": 5 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "QueryExampleReply list of query examples.", - "type": "object", - "properties": { - "query_examples": { - "type": "array", - "items": { - "description": "QueryExample shows query examples and their metrics.", - "type": "object", - "properties": { - "example": { - "type": "string", - "x-order": 0 - }, - "example_format": { - "description": "ExampleFormat is format of query example: real or query without values.\n\nDeprecated: is not used, should not be used, should be removed.", - "type": "string", - "default": "EXAMPLE_FORMAT_INVALID", - "enum": [ - "EXAMPLE_FORMAT_INVALID", - "EXAMPLE", - "FINGERPRINT" - ], - "x-order": 1 - }, - "example_type": { - "description": "ExampleType is a type of query example selected for this query class in given period of time.", - "type": "string", - "default": "EXAMPLE_TYPE_INVALID", - "enum": [ - "EXAMPLE_TYPE_INVALID", - "RANDOM", - "SLOWEST", - "FASTEST", - "WITH_ERROR" - ], - "x-order": 2 - }, - "is_truncated": { - "type": "integer", - "format": "int64", - "x-order": 3 - }, - "placeholders_count": { - "type": "integer", - "format": "int64", - "x-order": 4 - }, - "explain_fingerprint": { - "type": "string", - "x-order": 5 - }, - "query_id": { - "type": "string", - "x-order": 6 - }, - "example_metrics": { - "type": "string", - "x-order": 7 - }, - "service_id": { - "type": "string", - "x-order": 8 - }, - "service_type": { - "type": "string", - "x-order": 9 - }, - "schema": { - "type": "string", - "x-order": 10 - }, - "tables": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 11 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/GetQueryPlan": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "GetQueryPlan gets query plan and plan id for specific filtering.", - "operationId": "GetQueryPlan", - "parameters": [ - { - "description": "QueryPlanRequest defines filtering by queryid.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "QueryPlanRequest defines filtering by queryid.", - "type": "object", - "properties": { - "queryid": { - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "QueryPlanReply contains planid and query_plan.", - "type": "object", - "properties": { - "planid": { - "type": "string", - "x-order": 0 - }, - "query_plan": { - "type": "string", - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v0/qan/ObjectDetails/QueryExists": { - "post": { - "tags": [ - "ObjectDetails" - ], - "summary": "QueryExists check if query exists in clickhouse.", - "operationId": "QueryExists", - "parameters": [ - { - "description": "QueryExistsRequest check if provided query exists or not.", - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "QueryExistsRequest check if provided query exists or not.", - "type": "object", - "properties": { - "serviceid": { - "type": "string", - "x-order": 0 - }, - "query": { - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "boolean" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/Connect": { - "post": { - "description": "Connect a PMM server to the organization created on Percona Portal. That allows the user to sign in to the PMM server with their Percona Account.", - "tags": [ - "Platform" - ], - "summary": "Connect", - "operationId": "Connect", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "server_name": { - "description": "User defined human readable PMM Server Name.", - "type": "string", - "x-order": 0 - }, - "email": { - "description": "Existing Percona Platform user's email.", - "type": "string", - "x-order": 1 - }, - "password": { - "description": "Existing Percona Platform user's password.", - "type": "string", - "x-order": 2 - }, - "personal_access_token": { - "description": "Personal Access Token that the user obtains from Percona Portal.", - "type": "string", - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/Disconnect": { - "post": { - "description": "Disconnect a PMM server from the organization created on Percona Portal.", - "tags": [ - "Platform" - ], - "summary": "Disconnect", - "operationId": "Disconnect", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "force": { - "type": "boolean", - "title": "Forces the cleanup process for connected PMM instances regardless of the Portal API response", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/GetContactInformation": { - "post": { - "description": "GetContactInformation fetches the contact details of the customer success employee handling the Percona customer account from Percona Platform.", - "tags": [ - "Platform" - ], - "summary": "GetContactInformation", - "operationId": "GetContactInformation", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "customer_success": { - "description": "CustomerSuccess contains the contanct details of the customer success employee assigned to a customer's account.", - "type": "object", - "properties": { - "name": { - "type": "string", - "x-order": 0 - }, - "email": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 0 - }, - "new_ticket_url": { - "description": "URL to open a new support ticket.", - "type": "string", - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/SearchOrganizationEntitlements": { - "post": { - "description": "SearchOrganizationEntitlements fetches details of the entitlement's available to the Portal organization that the PMM server is connected to.", - "tags": [ - "Platform" - ], - "summary": "SearchOrganizationEntitlements", - "operationId": "SearchOrganizationEntitlements", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "entitlements": { - "type": "array", - "items": { - "description": "OrganizationEntitlement contains information about Organization entitlement.", - "type": "object", - "properties": { - "number": { - "description": "Entitlement number.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "Entitlement name.", - "type": "string", - "x-order": 1 - }, - "summary": { - "description": "Entitlement short summary.", - "type": "string", - "x-order": 2 - }, - "tier": { - "description": "Entitlement tier.", - "type": "string", - "x-order": 3 - }, - "total_units": { - "description": "Total units covered by this entitlement.", - "type": "string", - "x-order": 4 - }, - "unlimited_units": { - "description": "Flag indicates that unlimited units are covered.", - "type": "boolean", - "x-order": 5 - }, - "support_level": { - "description": "Support level covered by this entitlement.", - "type": "string", - "x-order": 6 - }, - "software_families": { - "description": "Percona product families covered by this entitlement.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 7 - }, - "start_date": { - "description": "Entitlement start data.\nNote: only date is used here but not time.", - "type": "string", - "format": "date-time", - "x-order": 8 - }, - "end_date": { - "description": "Entitlement end date.\nNote: only date is used here but not time.", - "type": "string", - "format": "date-time", - "x-order": 9 - }, - "platform": { - "description": "Platform indicates platform specific entitlements.", - "type": "object", - "properties": { - "security_advisor": { - "description": "Flag indicates that security advisors are covered by this entitlement.", - "type": "string", - "x-order": 0 - }, - "config_advisor": { - "description": "Flag indicates that config advisors are covered by this entitlement.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 10 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/SearchOrganizationTickets": { - "post": { - "description": "SearchOrganizationTickets searches support tickets belonging to the Percona Portal Organization that the PMM server is connected to.", - "tags": [ - "Platform" - ], - "summary": "SearchOrganizationTickets", - "operationId": "SearchOrganizationTickets", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "tickets": { - "description": "Support tickets belonging to the Percona Portal Organization.", - "type": "array", - "items": { - "description": "OrganizationTicket contains information about the support ticket.", - "type": "object", - "properties": { - "number": { - "description": "Ticket number.", - "type": "string", - "x-order": 0 - }, - "short_description": { - "description": "Ticket short description.", - "type": "string", - "x-order": 1 - }, - "priority": { - "description": "Ticket priority.", - "type": "string", - "x-order": 2 - }, - "state": { - "description": "Ticket state.", - "type": "string", - "x-order": 3 - }, - "create_time": { - "description": "Ticket creation time.", - "type": "string", - "format": "date-time", - "x-order": 4 - }, - "department": { - "description": "Department.", - "type": "string", - "x-order": 5 - }, - "requester": { - "description": "Ticket requester.", - "type": "string", - "x-order": 6 - }, - "task_type": { - "description": "Task type.", - "type": "string", - "x-order": 7 - }, - "url": { - "description": "Ticket url.", - "type": "string", - "x-order": 8 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/ServerInfo": { - "post": { - "description": "ServerInfo returns PMM server ID and name.", - "tags": [ - "Platform" - ], - "summary": "ServerInfo", - "operationId": "ServerInfo", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "pmm_server_name": { - "type": "string", - "x-order": 0 - }, - "pmm_server_id": { - "type": "string", - "x-order": 1 - }, - "pmm_server_telemetry_id": { - "type": "string", - "x-order": 2 - }, - "connected_to_portal": { - "type": "boolean", - "x-order": 3 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/Platform/UserStatus": { - "post": { - "description": "UserStatus returns a boolean indicating whether the current user is logged in with their Percona Account or not.", - "tags": [ - "Platform" - ], - "summary": "UserStatus", - "operationId": "UserStatus", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "is_platform_user": { - "type": "boolean", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/ChangePSMDB": { - "post": { - "tags": [ - "Components" - ], - "summary": "ChangePSMDBComponents manages PSMDB related components.", - "operationId": "ChangePSMDBComponents", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "mongod": { - "description": "ChangeComponent contains fields to manage components.", - "type": "object", - "properties": { - "default_version": { - "type": "string", - "x-order": 0 - }, - "versions": { - "type": "array", - "items": { - "description": "ComponentVersion contains operations which should be done with component version.", - "type": "object", - "properties": { - "version": { - "type": "string", - "x-order": 0 - }, - "disable": { - "type": "boolean", - "x-order": 1 - }, - "enable": { - "type": "boolean", - "x-order": 2 - } - } - }, - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/ChangePXC": { - "post": { - "tags": [ - "Components" - ], - "summary": "ChangePXCComponents manages PXC related components.", - "operationId": "ChangePXCComponents", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "pxc": { - "description": "ChangeComponent contains fields to manage components.", - "type": "object", - "properties": { - "default_version": { - "type": "string", - "x-order": 0 - }, - "versions": { - "type": "array", - "items": { - "description": "ComponentVersion contains operations which should be done with component version.", - "type": "object", - "properties": { - "version": { - "type": "string", - "x-order": 0 - }, - "disable": { - "type": "boolean", - "x-order": 1 - }, - "enable": { - "type": "boolean", - "x-order": 2 - } - } - }, - "x-order": 1 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ChangeComponent contains fields to manage components.", - "type": "object", - "properties": { - "default_version": { - "type": "string", - "x-order": 0 - }, - "versions": { - "type": "array", - "items": { - "description": "ComponentVersion contains operations which should be done with component version.", - "type": "object", - "properties": { - "version": { - "type": "string", - "x-order": 0 - }, - "disable": { - "type": "boolean", - "x-order": 1 - }, - "enable": { - "type": "boolean", - "x-order": 2 - } - } - }, - "x-order": 1 - } - }, - "x-order": 2 - }, - "haproxy": { - "description": "ChangeComponent contains fields to manage components.", - "type": "object", - "properties": { - "default_version": { - "type": "string", - "x-order": 0 - }, - "versions": { - "type": "array", - "items": { - "description": "ComponentVersion contains operations which should be done with component version.", - "type": "object", - "properties": { - "version": { - "type": "string", - "x-order": 0 - }, - "disable": { - "type": "boolean", - "x-order": 1 - }, - "enable": { - "type": "boolean", - "x-order": 2 - } - } - }, - "x-order": 1 - } - }, - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/CheckForOperatorUpdate": { - "post": { - "tags": [ - "Components" - ], - "summary": "CheckForOperatorUpdate checks if a new version of an operator is available.", - "operationId": "CheckForOperatorUpdate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "cluster_to_components": { - "description": "The cluster name is used as a key for this map, value contains components and their inforamtion about update.", - "type": "object", - "additionalProperties": { - "description": "ComponentsUpdateInformation contains info about components and their available latest versions.", - "type": "object", - "properties": { - "component_to_update_information": { - "description": "component_to_update_information stores, under the name of the component, information about the update.\n\"pxc-operator\", \"psmdb-operator\" are names used by backend for our operators.", - "type": "object", - "additionalProperties": { - "description": "ComponentUpdateInformation contains version we can update to for certain component.", - "type": "object", - "properties": { - "available_version": { - "type": "string", - "x-order": 0 - } - } - }, - "x-order": 0 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/GetPSMDB": { - "post": { - "tags": [ - "Components" - ], - "summary": "GetPSMDBComponents returns list of available components for PSMDB Clusters.", - "operationId": "GetPSMDBComponents", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "db_version": { - "description": "Version of DB.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "versions": { - "type": "array", - "items": { - "description": "OperatorVersion contains information about operator and components matrix.", - "type": "object", - "properties": { - "product": { - "type": "string", - "x-order": 0 - }, - "operator": { - "type": "string", - "x-order": 1 - }, - "matrix": { - "description": "Matrix contains all available components.", - "type": "object", - "properties": { - "mongod": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 0 - }, - "pxc": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 1 - }, - "pmm": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 2 - }, - "proxysql": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 3 - }, - "haproxy": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 4 - }, - "backup": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 5 - }, - "operator": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 6 - }, - "log_collector": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 7 - } - }, - "x-order": 2 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/GetPXC": { - "post": { - "tags": [ - "Components" - ], - "summary": "GetPXCComponents returns list of available components for PXC Clusters.", - "operationId": "GetPXCComponents", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "db_version": { - "description": "Version of DB.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "versions": { - "type": "array", - "items": { - "description": "OperatorVersion contains information about operator and components matrix.", - "type": "object", - "properties": { - "product": { - "type": "string", - "x-order": 0 - }, - "operator": { - "type": "string", - "x-order": 1 - }, - "matrix": { - "description": "Matrix contains all available components.", - "type": "object", - "properties": { - "mongod": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 0 - }, - "pxc": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 1 - }, - "pmm": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 2 - }, - "proxysql": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 3 - }, - "haproxy": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 4 - }, - "backup": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 5 - }, - "operator": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 6 - }, - "log_collector": { - "type": "object", - "additionalProperties": { - "description": "Component contains information about component.", - "type": "object", - "properties": { - "image_path": { - "type": "string", - "x-order": 0 - }, - "image_hash": { - "type": "string", - "x-order": 1 - }, - "status": { - "type": "string", - "x-order": 2 - }, - "critical": { - "type": "boolean", - "x-order": 3 - }, - "default": { - "type": "boolean", - "x-order": 4 - }, - "disabled": { - "type": "boolean", - "x-order": 5 - } - } - }, - "x-order": 7 - } - }, - "x-order": 2 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Components/InstallOperator": { - "post": { - "tags": [ - "Components" - ], - "summary": "InstallOperator installs given operator in given version.", - "operationId": "InstallOperator", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "operator_type": { - "description": "operator_type tells what operator we are interested in updating.", - "type": "string", - "x-order": 1 - }, - "version": { - "description": "version tells what version of the operator we should update to.", - "type": "string", - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "status": { - "description": "OperatorsStatus defines status of operators installed in Kubernetes cluster.\n\n - OPERATORS_STATUS_INVALID: OPERATORS_STATUS_INVALID represents unknown state.\n - OPERATORS_STATUS_OK: OPERATORS_STATUS_OK represents that operators are installed and have supported API version.\n - OPERATORS_STATUS_UNSUPPORTED: OPERATORS_STATUS_UNSUPPORTED represents that operators are installed, but doesn't have supported API version.\n - OPERATORS_STATUS_NOT_INSTALLED: OPERATORS_STATUS_NOT_INSTALLED represents that operators are not installed.", - "type": "string", - "default": "OPERATORS_STATUS_INVALID", - "enum": [ - "OPERATORS_STATUS_INVALID", - "OPERATORS_STATUS_OK", - "OPERATORS_STATUS_UNSUPPORTED", - "OPERATORS_STATUS_NOT_INSTALLED" - ], - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/DBClusters/Delete": { - "post": { - "tags": [ - "DBClusters" - ], - "summary": "DeleteDBCluster deletes DB cluster.", - "operationId": "DeleteDBCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "DB cluster name.", - "type": "string", - "x-order": 1 - }, - "cluster_type": { - "description": "DBClusterType represents database cluster type.\n\n - DB_CLUSTER_TYPE_INVALID: DB_CLUSTER_TYPE_INVALID represents unknown cluster type.\n - DB_CLUSTER_TYPE_PXC: DB_CLUSTER_TYPE_PXC represents pxc cluster type.\n - DB_CLUSTER_TYPE_PSMDB: DB_CLUSTER_TYPE_PSMDB represents psmdb cluster type.", - "type": "string", - "default": "DB_CLUSTER_TYPE_INVALID", - "enum": [ - "DB_CLUSTER_TYPE_INVALID", - "DB_CLUSTER_TYPE_PXC", - "DB_CLUSTER_TYPE_PSMDB" - ], - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/DBClusters/Get": { - "post": { - "tags": [ - "DBClusters" - ], - "summary": "GetDBCluster returns parameters used to create a database cluster", - "operationId": "GetDBCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "DB cluster name.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "pxc_cluster": { - "description": "PXCCluster represents PXC cluster information.", - "type": "object", - "properties": { - "name": { - "description": "Cluster name.", - "type": "string", - "x-order": 0 - }, - "state": { - "description": "DBClusterState represents DB cluster CR state.\n\n - DB_CLUSTER_STATE_INVALID: DB_CLUSTER_STATE_INVALID represents unknown state.\n - DB_CLUSTER_STATE_CHANGING: DB_CLUSTER_STATE_CHANGING represents a cluster being changed.\n - DB_CLUSTER_STATE_READY: DB_CLUSTER_STATE_READY represents a cluster without pending changes.\n - DB_CLUSTER_STATE_FAILED: DB_CLUSTER_STATE_FAILED represents a failed cluster.\n - DB_CLUSTER_STATE_DELETING: DB_CLUSTER_STATE_DELETING represents a cluster being deleting.\n - DB_CLUSTER_STATE_PAUSED: DB_CLUSTER_STATE_PAUSED represents a cluster is paused.\n - DB_CLUSTER_STATE_UPGRADING: DB_CLUSTER_STATE_UPGRADING is a special case of DB_CLUSTER_STATE_CHANGING.\nIt indicates database cluster upgrade is ongoing.", - "type": "string", - "default": "DB_CLUSTER_STATE_INVALID", - "enum": [ - "DB_CLUSTER_STATE_INVALID", - "DB_CLUSTER_STATE_CHANGING", - "DB_CLUSTER_STATE_READY", - "DB_CLUSTER_STATE_FAILED", - "DB_CLUSTER_STATE_DELETING", - "DB_CLUSTER_STATE_PAUSED", - "DB_CLUSTER_STATE_UPGRADING" - ], - "x-order": 1 - }, - "operation": { - "description": "RunningOperation respresents a long-running operation.", - "type": "object", - "properties": { - "finished_steps": { - "description": "Finished steps of the operaion; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "description": "Text describing the current operation progress step.", - "type": "string", - "x-order": 1 - }, - "total_steps": { - "description": "Total steps needed to finish the operation; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 2 - } - }, - "x-order": 2 - }, - "params": { - "description": "PXCClusterParams represents PXC cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "pxc": { - "description": "PXC container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for PXC.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - }, - "configuration": { - "type": "string", - "title": "Configuration for PXC cluster", - "x-order": 3 - }, - "storage_class": { - "description": "Storage Class for PXC cluster.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ProxySQL container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for ProxySQL.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - } - }, - "x-order": 2 - }, - "haproxy": { - "description": "HAProxy container parameters.\nNOTE: HAProxy does not need disk size as ProxySQL does because the container does not require it.", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for HAProxy.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - } - }, - "x-order": 3 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 4 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 5 - } - }, - "x-order": 3 - }, - "exposed": { - "description": "DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 4 - }, - "installed_image": { - "description": "Installed XtraDB image.", - "type": "string", - "x-order": 5 - }, - "available_image": { - "description": "Available database version user can upgrade cluster to, returned as an image. Image tag contains the version.\nIf it's empty, no upgrade is available.", - "type": "string", - "x-order": 6 - }, - "internet_facing": { - "description": "Is DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 7 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 8 - } - }, - "x-order": 0 - }, - "psmdb_cluster": { - "description": "PSMDBCluster represents PSMDB cluster information.", - "type": "object", - "properties": { - "name": { - "description": "Cluster name.", - "type": "string", - "x-order": 0 - }, - "state": { - "description": "DBClusterState represents DB cluster CR state.\n\n - DB_CLUSTER_STATE_INVALID: DB_CLUSTER_STATE_INVALID represents unknown state.\n - DB_CLUSTER_STATE_CHANGING: DB_CLUSTER_STATE_CHANGING represents a cluster being changed.\n - DB_CLUSTER_STATE_READY: DB_CLUSTER_STATE_READY represents a cluster without pending changes.\n - DB_CLUSTER_STATE_FAILED: DB_CLUSTER_STATE_FAILED represents a failed cluster.\n - DB_CLUSTER_STATE_DELETING: DB_CLUSTER_STATE_DELETING represents a cluster being deleting.\n - DB_CLUSTER_STATE_PAUSED: DB_CLUSTER_STATE_PAUSED represents a cluster is paused.\n - DB_CLUSTER_STATE_UPGRADING: DB_CLUSTER_STATE_UPGRADING is a special case of DB_CLUSTER_STATE_CHANGING.\nIt indicates database cluster upgrade is ongoing.", - "type": "string", - "default": "DB_CLUSTER_STATE_INVALID", - "enum": [ - "DB_CLUSTER_STATE_INVALID", - "DB_CLUSTER_STATE_CHANGING", - "DB_CLUSTER_STATE_READY", - "DB_CLUSTER_STATE_FAILED", - "DB_CLUSTER_STATE_DELETING", - "DB_CLUSTER_STATE_PAUSED", - "DB_CLUSTER_STATE_UPGRADING" - ], - "x-order": 1 - }, - "operation": { - "description": "RunningOperation respresents a long-running operation.", - "type": "object", - "properties": { - "finished_steps": { - "description": "Finished steps of the operaion; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "description": "Text describing the current operation progress step.", - "type": "string", - "x-order": 1 - }, - "total_steps": { - "description": "Total steps needed to finish the operation; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 2 - } - }, - "x-order": 2 - }, - "params": { - "description": "PSMDBClusterParams represents PSMDB cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "replicaset": { - "description": "ReplicaSet container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - }, - "configuration": { - "type": "string", - "title": "Configuration for PSMDB cluster", - "x-order": 2 - }, - "storage_class": { - "description": "Storage Class for PSMDB cluster.", - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - }, - "image": { - "description": "Docker image used for PSMDB.", - "type": "string", - "x-order": 2 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 3 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 4 - } - }, - "x-order": 3 - }, - "exposed": { - "description": "DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 4 - }, - "installed_image": { - "description": "Installed PSMDB image.", - "type": "string", - "x-order": 5 - }, - "available_image": { - "description": "Available database version user can upgrade cluster to, returned as an image. Image tag contains the version.\nIf it's empty, no upgrade is available.", - "type": "string", - "x-order": 6 - }, - "internet_facing": { - "description": "Is DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 7 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 8 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/DBClusters/List": { - "post": { - "tags": [ - "DBClusters" - ], - "summary": "ListDBClusters returns a list of DB clusters.", - "operationId": "ListDBClusters", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "pxc_clusters": { - "description": "PXC clusters information.", - "type": "array", - "items": { - "description": "PXCCluster represents PXC cluster information.", - "type": "object", - "properties": { - "name": { - "description": "Cluster name.", - "type": "string", - "x-order": 0 - }, - "state": { - "description": "DBClusterState represents DB cluster CR state.\n\n - DB_CLUSTER_STATE_INVALID: DB_CLUSTER_STATE_INVALID represents unknown state.\n - DB_CLUSTER_STATE_CHANGING: DB_CLUSTER_STATE_CHANGING represents a cluster being changed.\n - DB_CLUSTER_STATE_READY: DB_CLUSTER_STATE_READY represents a cluster without pending changes.\n - DB_CLUSTER_STATE_FAILED: DB_CLUSTER_STATE_FAILED represents a failed cluster.\n - DB_CLUSTER_STATE_DELETING: DB_CLUSTER_STATE_DELETING represents a cluster being deleting.\n - DB_CLUSTER_STATE_PAUSED: DB_CLUSTER_STATE_PAUSED represents a cluster is paused.\n - DB_CLUSTER_STATE_UPGRADING: DB_CLUSTER_STATE_UPGRADING is a special case of DB_CLUSTER_STATE_CHANGING.\nIt indicates database cluster upgrade is ongoing.", - "type": "string", - "default": "DB_CLUSTER_STATE_INVALID", - "enum": [ - "DB_CLUSTER_STATE_INVALID", - "DB_CLUSTER_STATE_CHANGING", - "DB_CLUSTER_STATE_READY", - "DB_CLUSTER_STATE_FAILED", - "DB_CLUSTER_STATE_DELETING", - "DB_CLUSTER_STATE_PAUSED", - "DB_CLUSTER_STATE_UPGRADING" - ], - "x-order": 1 - }, - "operation": { - "description": "RunningOperation respresents a long-running operation.", - "type": "object", - "properties": { - "finished_steps": { - "description": "Finished steps of the operaion; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "description": "Text describing the current operation progress step.", - "type": "string", - "x-order": 1 - }, - "total_steps": { - "description": "Total steps needed to finish the operation; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 2 - } - }, - "x-order": 2 - }, - "params": { - "description": "PXCClusterParams represents PXC cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "pxc": { - "description": "PXC container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for PXC.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - }, - "configuration": { - "type": "string", - "title": "Configuration for PXC cluster", - "x-order": 3 - }, - "storage_class": { - "description": "Storage Class for PXC cluster.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ProxySQL container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for ProxySQL.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - } - }, - "x-order": 2 - }, - "haproxy": { - "description": "HAProxy container parameters.\nNOTE: HAProxy does not need disk size as ProxySQL does because the container does not require it.", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for HAProxy.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - } - }, - "x-order": 3 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 4 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 5 - } - }, - "x-order": 3 - }, - "exposed": { - "description": "DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 4 - }, - "installed_image": { - "description": "Installed XtraDB image.", - "type": "string", - "x-order": 5 - }, - "available_image": { - "description": "Available database version user can upgrade cluster to, returned as an image. Image tag contains the version.\nIf it's empty, no upgrade is available.", - "type": "string", - "x-order": 6 - }, - "internet_facing": { - "description": "Is DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 7 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 8 - } - } - }, - "x-order": 0 - }, - "psmdb_clusters": { - "description": "PSMDB clusters information.", - "type": "array", - "items": { - "description": "PSMDBCluster represents PSMDB cluster information.", - "type": "object", - "properties": { - "name": { - "description": "Cluster name.", - "type": "string", - "x-order": 0 - }, - "state": { - "description": "DBClusterState represents DB cluster CR state.\n\n - DB_CLUSTER_STATE_INVALID: DB_CLUSTER_STATE_INVALID represents unknown state.\n - DB_CLUSTER_STATE_CHANGING: DB_CLUSTER_STATE_CHANGING represents a cluster being changed.\n - DB_CLUSTER_STATE_READY: DB_CLUSTER_STATE_READY represents a cluster without pending changes.\n - DB_CLUSTER_STATE_FAILED: DB_CLUSTER_STATE_FAILED represents a failed cluster.\n - DB_CLUSTER_STATE_DELETING: DB_CLUSTER_STATE_DELETING represents a cluster being deleting.\n - DB_CLUSTER_STATE_PAUSED: DB_CLUSTER_STATE_PAUSED represents a cluster is paused.\n - DB_CLUSTER_STATE_UPGRADING: DB_CLUSTER_STATE_UPGRADING is a special case of DB_CLUSTER_STATE_CHANGING.\nIt indicates database cluster upgrade is ongoing.", - "type": "string", - "default": "DB_CLUSTER_STATE_INVALID", - "enum": [ - "DB_CLUSTER_STATE_INVALID", - "DB_CLUSTER_STATE_CHANGING", - "DB_CLUSTER_STATE_READY", - "DB_CLUSTER_STATE_FAILED", - "DB_CLUSTER_STATE_DELETING", - "DB_CLUSTER_STATE_PAUSED", - "DB_CLUSTER_STATE_UPGRADING" - ], - "x-order": 1 - }, - "operation": { - "description": "RunningOperation respresents a long-running operation.", - "type": "object", - "properties": { - "finished_steps": { - "description": "Finished steps of the operaion; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "description": "Text describing the current operation progress step.", - "type": "string", - "x-order": 1 - }, - "total_steps": { - "description": "Total steps needed to finish the operation; can decrease or increase compared to the previous value.", - "type": "integer", - "format": "int32", - "x-order": 2 - } - }, - "x-order": 2 - }, - "params": { - "description": "PSMDBClusterParams represents PSMDB cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "replicaset": { - "description": "ReplicaSet container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - }, - "configuration": { - "type": "string", - "title": "Configuration for PSMDB cluster", - "x-order": 2 - }, - "storage_class": { - "description": "Storage Class for PSMDB cluster.", - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - }, - "image": { - "description": "Docker image used for PSMDB.", - "type": "string", - "x-order": 2 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 3 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 4 - } - }, - "x-order": 3 - }, - "exposed": { - "description": "DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 4 - }, - "installed_image": { - "description": "Installed PSMDB image.", - "type": "string", - "x-order": 5 - }, - "available_image": { - "description": "Available database version user can upgrade cluster to, returned as an image. Image tag contains the version.\nIf it's empty, no upgrade is available.", - "type": "string", - "x-order": 6 - }, - "internet_facing": { - "description": "Is DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 7 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 8 - } - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/DBClusters/Restart": { - "post": { - "tags": [ - "DBClusters" - ], - "summary": "RestartDBCluster restarts DB cluster.", - "operationId": "RestartDBCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "PXC cluster name.", - "type": "string", - "x-order": 1 - }, - "cluster_type": { - "description": "DBClusterType represents database cluster type.\n\n - DB_CLUSTER_TYPE_INVALID: DB_CLUSTER_TYPE_INVALID represents unknown cluster type.\n - DB_CLUSTER_TYPE_PXC: DB_CLUSTER_TYPE_PXC represents pxc cluster type.\n - DB_CLUSTER_TYPE_PSMDB: DB_CLUSTER_TYPE_PSMDB represents psmdb cluster type.", - "type": "string", - "default": "DB_CLUSTER_TYPE_INVALID", - "enum": [ - "DB_CLUSTER_TYPE_INVALID", - "DB_CLUSTER_TYPE_PXC", - "DB_CLUSTER_TYPE_PSMDB" - ], - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/GetLogs": { - "post": { - "tags": [ - "LogsAPI" - ], - "summary": "GetLogs gets all logs from db cluster.", - "operationId": "GetLogs", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "cluster_name": { - "description": "DB cluster name.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "logs": { - "description": "Log represents list of logs. Each entry contains either container's logs or,\nwhen container field is empty, pod's events.", - "type": "array", - "items": { - "description": "Logs contain logs for certain pod's container. If container is an empty\nstring, logs contain pod's events.", - "type": "object", - "properties": { - "pod": { - "description": "Pod name.", - "type": "string", - "x-order": 0 - }, - "container": { - "description": "Container name.", - "type": "string", - "x-order": 1 - }, - "logs": { - "description": "Content of container's log or pod's events.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 2 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/Get": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "GetKubernetesCluster return KubeAuth with Kubernetes config.", - "operationId": "GetKubernetesCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "kube_auth": { - "description": "KubeAuth represents Kubernetes / kubectl authentication and authorization information.", - "type": "object", - "properties": { - "kubeconfig": { - "description": "Kubeconfig file content.", - "type": "string", - "x-order": 0 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/List": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "ListKubernetesClusters returns a list of all registered Kubernetes clusters.", - "operationId": "ListKubernetesClusters", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "kubernetes_clusters": { - "description": "Kubernetes clusters.", - "type": "array", - "items": { - "description": "Cluster contains public info about Kubernetes cluster.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "operators": { - "description": "Operators contains list of operators installed in Kubernetes cluster.", - "type": "object", - "properties": { - "pxc": { - "description": "Operator contains all information about operator installed in Kubernetes cluster.", - "type": "object", - "properties": { - "status": { - "description": "OperatorsStatus defines status of operators installed in Kubernetes cluster.\n\n - OPERATORS_STATUS_INVALID: OPERATORS_STATUS_INVALID represents unknown state.\n - OPERATORS_STATUS_OK: OPERATORS_STATUS_OK represents that operators are installed and have supported API version.\n - OPERATORS_STATUS_UNSUPPORTED: OPERATORS_STATUS_UNSUPPORTED represents that operators are installed, but doesn't have supported API version.\n - OPERATORS_STATUS_NOT_INSTALLED: OPERATORS_STATUS_NOT_INSTALLED represents that operators are not installed.", - "type": "string", - "default": "OPERATORS_STATUS_INVALID", - "enum": [ - "OPERATORS_STATUS_INVALID", - "OPERATORS_STATUS_OK", - "OPERATORS_STATUS_UNSUPPORTED", - "OPERATORS_STATUS_NOT_INSTALLED" - ], - "x-order": 0 - }, - "version": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 0 - }, - "psmdb": { - "description": "Operator contains all information about operator installed in Kubernetes cluster.", - "type": "object", - "properties": { - "status": { - "description": "OperatorsStatus defines status of operators installed in Kubernetes cluster.\n\n - OPERATORS_STATUS_INVALID: OPERATORS_STATUS_INVALID represents unknown state.\n - OPERATORS_STATUS_OK: OPERATORS_STATUS_OK represents that operators are installed and have supported API version.\n - OPERATORS_STATUS_UNSUPPORTED: OPERATORS_STATUS_UNSUPPORTED represents that operators are installed, but doesn't have supported API version.\n - OPERATORS_STATUS_NOT_INSTALLED: OPERATORS_STATUS_NOT_INSTALLED represents that operators are not installed.", - "type": "string", - "default": "OPERATORS_STATUS_INVALID", - "enum": [ - "OPERATORS_STATUS_INVALID", - "OPERATORS_STATUS_OK", - "OPERATORS_STATUS_UNSUPPORTED", - "OPERATORS_STATUS_NOT_INSTALLED" - ], - "x-order": 0 - }, - "version": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 1 - }, - "dbaas": { - "description": "Operator contains all information about operator installed in Kubernetes cluster.", - "type": "object", - "properties": { - "status": { - "description": "OperatorsStatus defines status of operators installed in Kubernetes cluster.\n\n - OPERATORS_STATUS_INVALID: OPERATORS_STATUS_INVALID represents unknown state.\n - OPERATORS_STATUS_OK: OPERATORS_STATUS_OK represents that operators are installed and have supported API version.\n - OPERATORS_STATUS_UNSUPPORTED: OPERATORS_STATUS_UNSUPPORTED represents that operators are installed, but doesn't have supported API version.\n - OPERATORS_STATUS_NOT_INSTALLED: OPERATORS_STATUS_NOT_INSTALLED represents that operators are not installed.", - "type": "string", - "default": "OPERATORS_STATUS_INVALID", - "enum": [ - "OPERATORS_STATUS_INVALID", - "OPERATORS_STATUS_OK", - "OPERATORS_STATUS_UNSUPPORTED", - "OPERATORS_STATUS_NOT_INSTALLED" - ], - "x-order": 0 - }, - "version": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 2 - } - }, - "x-order": 1 - }, - "status": { - "description": "KubernetesClusterStatus defines status of Kubernetes cluster.\n\n - KUBERNETES_CLUSTER_STATUS_INVALID: KUBERNETES_CLUSTER_STATUS_INVALID represents unknown state.\n - KUBERNETES_CLUSTER_STATUS_OK: KUBERNETES_CLUSTER_STATUS_OK represents that Kubernetes cluster is accessible.\n - KUBERNETES_CLUSTER_STATUS_UNAVAILABLE: KUBERNETES_CLUSTER_STATUS_UNAVAILABLE represents that Kubernetes cluster is not accessible.\n - KUBERNETES_CLUSTER_STATUS_PROVISIONING: KUBERNETES_CLUSTER_STATUS_PROVISIONING represents that Kubernetes cluster is privisioning.", - "type": "string", - "default": "KUBERNETES_CLUSTER_STATUS_INVALID", - "enum": [ - "KUBERNETES_CLUSTER_STATUS_INVALID", - "KUBERNETES_CLUSTER_STATUS_OK", - "KUBERNETES_CLUSTER_STATUS_UNAVAILABLE", - "KUBERNETES_CLUSTER_STATUS_PROVISIONING" - ], - "x-order": 2 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/Register": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "RegisterKubernetesCluster registers an existing Kubernetes cluster in PMM.", - "operationId": "RegisterKubernetesCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "kube_auth": { - "description": "KubeAuth represents Kubernetes / kubectl authentication and authorization information.", - "type": "object", - "properties": { - "kubeconfig": { - "description": "Kubeconfig file content.", - "type": "string", - "x-order": 0 - } - }, - "x-order": 1 - }, - "aws_access_key_id": { - "description": "AWS access key id, only needed when registering EKS cluster and kubeconfig does not contain it.", - "type": "string", - "x-order": 2 - }, - "aws_secret_access_key": { - "description": "AWS secret access key, only needed when registering EKS cluster and kubeconfig does not contain it.", - "type": "string", - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/Resources/Get": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "GetResources returns all and available resources of a Kubernetes cluster.\nNOTE: The user defined in kubeconfig for the cluster has to have rights to\n list and get Pods from all Namespaces. Also getting and listing Nodes\n has to be allowed.", - "operationId": "GetResources", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "all": { - "description": "Resources contains Kubernetes cluster resources.", - "type": "object", - "properties": { - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "uint64", - "x-order": 0 - }, - "cpu_m": { - "description": "CPU in millicpus. For example 0.1 of CPU is equivalent to 100 millicpus.\nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu.", - "type": "string", - "format": "uint64", - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "uint64", - "x-order": 2 - } - }, - "x-order": 0 - }, - "available": { - "description": "Resources contains Kubernetes cluster resources.", - "type": "object", - "properties": { - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "uint64", - "x-order": 0 - }, - "cpu_m": { - "description": "CPU in millicpus. For example 0.1 of CPU is equivalent to 100 millicpus.\nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu.", - "type": "string", - "format": "uint64", - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "uint64", - "x-order": 2 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/StorageClasses/List": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "ListStorageClasses returns the names of all storage classes available in a Kubernetes cluster.", - "operationId": "ListStorageClasses", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "storage_classes": { - "description": "Kubernetes storage classes names.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/Kubernetes/Unregister": { - "post": { - "tags": [ - "Kubernetes" - ], - "summary": "UnregisterKubernetesCluster removes a registered Kubernetes cluster from PMM.", - "operationId": "UnregisterKubernetesCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "force": { - "description": "If true then Kubernetes cluster will be deleted\neven if it contains database clusters.", - "type": "boolean", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PSMDBCluster/Create": { - "post": { - "tags": [ - "PSMDBClusters" - ], - "summary": "CreatePSMDBCluster creates a new PSMDB cluster.", - "operationId": "CreatePSMDBCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "type": "string", - "title": "PSMDB cluster name.\na DNS-1035 label must consist of lower case alphanumeric characters or '-',\nstart with an alphabetic character, and end with an alphanumeric character\n(e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')", - "x-order": 1 - }, - "params": { - "description": "PSMDBClusterParams represents PSMDB cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "replicaset": { - "description": "ReplicaSet container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - }, - "configuration": { - "type": "string", - "title": "Configuration for PSMDB cluster", - "x-order": 2 - }, - "storage_class": { - "description": "Storage Class for PSMDB cluster.", - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - }, - "image": { - "description": "Docker image used for PSMDB.", - "type": "string", - "x-order": 2 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 3 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 4 - } - }, - "x-order": 2 - }, - "expose": { - "description": "Make DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 3 - }, - "internet_facing": { - "description": "Make DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 4 - }, - "source_ranges": { - "description": "Apply IP source ranges against the cluster.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PSMDBCluster/Resources/Get": { - "post": { - "tags": [ - "PSMDBClusters" - ], - "summary": "GetPSMDBClusterResources returns expected resources to be consumed by the cluster.", - "operationId": "GetPSMDBClusterResources", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "params": { - "description": "PSMDBClusterParams represents PSMDB cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "replicaset": { - "description": "ReplicaSet container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - }, - "configuration": { - "type": "string", - "title": "Configuration for PSMDB cluster", - "x-order": 2 - }, - "storage_class": { - "description": "Storage Class for PSMDB cluster.", - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - }, - "image": { - "description": "Docker image used for PSMDB.", - "type": "string", - "x-order": 2 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 3 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 4 - } - }, - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "expected": { - "description": "Resources contains Kubernetes cluster resources.", - "type": "object", - "properties": { - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "uint64", - "x-order": 0 - }, - "cpu_m": { - "description": "CPU in millicpus. For example 0.1 of CPU is equivalent to 100 millicpus.\nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu.", - "type": "string", - "format": "uint64", - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "uint64", - "x-order": 2 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PSMDBCluster/Update": { - "post": { - "tags": [ - "PSMDBClusters" - ], - "summary": "UpdatePSMDBCluster updates existing PSMDB cluster.", - "operationId": "UpdatePSMDBCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "PSMDB cluster name.", - "type": "string", - "x-order": 1 - }, - "params": { - "description": "UpdatePSMDBClusterParams represents PSMDB cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "replicaset": { - "description": "ReplicaSet container parameters.", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "configuration": { - "type": "string", - "title": "Configuration for PSMDB cluster", - "x-order": 1 - }, - "storage_class": { - "description": "Storage Class for PSMDB cluster.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 1 - }, - "suspend": { - "description": "Suspend cluster `pause: true`.", - "type": "boolean", - "x-order": 2 - }, - "resume": { - "description": "Resume cluster `pause: false`.", - "type": "boolean", - "x-order": 3 - }, - "image": { - "description": "PSMDB image to use. If it's the same image but with different version tag, upgrade of database cluster to version\nin given tag is triggered. If entirely different image is given, error is returned.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PSMDBClusters/GetCredentials": { - "post": { - "tags": [ - "PSMDBClusters" - ], - "summary": "GetPSMDBClusterCredentials returns a PSMDB cluster credentials by cluster name.", - "operationId": "GetPSMDBClusterCredentials", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "PSMDB cluster name.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "connection_credentials": { - "description": "PSMDBCredentials is a credentials to connect to PSMDB.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "username": { - "description": "MongoDB username.", - "type": "string", - "x-order": 0 - }, - "password": { - "description": "MongoDB password.", - "type": "string", - "x-order": 1 - }, - "host": { - "description": "MongoDB host.", - "type": "string", - "x-order": 2 - }, - "port": { - "description": "MongoDB port.", - "type": "integer", - "format": "int32", - "x-order": 3 - }, - "replicaset": { - "description": "Replicaset name.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PXCCluster/Create": { - "post": { - "tags": [ - "PXCClusters" - ], - "summary": "CreatePXCCluster creates a new PXC cluster.", - "operationId": "CreatePXCCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "type": "string", - "title": "PXC cluster name.\na DNS-1035 label must consist of lower case alphanumeric characters or '-',\nstart with an alphabetic character, and end with an alphanumeric character\n(e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')", - "x-order": 1 - }, - "params": { - "description": "PXCClusterParams represents PXC cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "pxc": { - "description": "PXC container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for PXC.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - }, - "configuration": { - "type": "string", - "title": "Configuration for PXC cluster", - "x-order": 3 - }, - "storage_class": { - "description": "Storage Class for PXC cluster.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ProxySQL container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for ProxySQL.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - } - }, - "x-order": 2 - }, - "haproxy": { - "description": "HAProxy container parameters.\nNOTE: HAProxy does not need disk size as ProxySQL does because the container does not require it.", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for HAProxy.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - } - }, - "x-order": 3 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 4 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 5 - } - }, - "x-order": 2 - }, - "expose": { - "description": "Make DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 3 - }, - "internet_facing": { - "description": "Make DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 4 - }, - "source_ranges": { - "description": "Apply IP source ranges against the cluster.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PXCCluster/Resources/Get": { - "post": { - "tags": [ - "PXCClusters" - ], - "summary": "GetPXCClusterResources returns expected resources to be consumed by the cluster.", - "operationId": "GetPXCClusterResources", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "params": { - "description": "PXCClusterParams represents PXC cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "pxc": { - "description": "PXC container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for PXC.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - }, - "configuration": { - "type": "string", - "title": "Configuration for PXC cluster", - "x-order": 3 - }, - "storage_class": { - "description": "Storage Class for PXC cluster.", - "type": "string", - "x-order": 4 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ProxySQL container parameters.\nTODO Do not use inner messages in all public APIs (for consistency).", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for ProxySQL.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "int64", - "x-order": 2 - } - }, - "x-order": 2 - }, - "haproxy": { - "description": "HAProxy container parameters.\nNOTE: HAProxy does not need disk size as ProxySQL does because the container does not require it.", - "type": "object", - "properties": { - "image": { - "description": "Docker image used for HAProxy.", - "type": "string", - "x-order": 0 - }, - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 1 - } - }, - "x-order": 3 - }, - "backup": { - "type": "object", - "title": "Backup configuration for a database cluster", - "properties": { - "location_id": { - "description": "Backup Location id of stored backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "keep_copies": { - "description": "Keep copies represents how many copyies should retain.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "schedule": { - "description": "Schedule represents schedule configration.", - "type": "object", - "properties": { - "week": { - "description": "Weekly runs.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "weekday": { - "description": "Weekday configuration.", - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "hour": { - "description": "Hour configuration.", - "type": "integer", - "format": "int32", - "x-order": 2 - }, - "minute": { - "description": "Minutes configuration.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 2 - } - }, - "x-order": 4 - }, - "restore": { - "type": "object", - "title": "Restore represents restoration payload to restore a database cluster from backup", - "properties": { - "location_id": { - "description": "Backup location in PMM.", - "type": "string", - "format": "int64", - "x-order": 0 - }, - "destination": { - "type": "string", - "title": "Destination filename", - "x-order": 1 - } - }, - "x-order": 5 - } - }, - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "expected": { - "description": "Resources contains Kubernetes cluster resources.", - "type": "object", - "properties": { - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "uint64", - "x-order": 0 - }, - "cpu_m": { - "description": "CPU in millicpus. For example 0.1 of CPU is equivalent to 100 millicpus.\nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu.", - "type": "string", - "format": "uint64", - "x-order": 1 - }, - "disk_size": { - "description": "Disk size in bytes.", - "type": "string", - "format": "uint64", - "x-order": 2 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PXCCluster/Update": { - "post": { - "tags": [ - "PXCClusters" - ], - "summary": "UpdatePXCCluster updates existing PXC cluster.", - "operationId": "UpdatePXCCluster", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "PXC cluster name.", - "type": "string", - "x-order": 1 - }, - "params": { - "description": "UpdatePXCClusterParams represents PXC cluster parameters that can be updated.", - "type": "object", - "properties": { - "cluster_size": { - "description": "Cluster size.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "pxc": { - "description": "PXC container parameters.", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - }, - "image": { - "description": "Image to use. If it's the same image but with different version tag, upgrade of database cluster to version\nin given tag is triggered. If entirely different image is given, error is returned.", - "type": "string", - "x-order": 1 - }, - "configuration": { - "type": "string", - "title": "Configuration for PXC cluster", - "x-order": 2 - }, - "storage_class": { - "description": "Storage Class for PXC cluster.", - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - }, - "proxysql": { - "description": "ProxySQL container parameters.", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - } - }, - "x-order": 2 - }, - "suspend": { - "description": "Suspend cluster `pause: true`.", - "type": "boolean", - "x-order": 3 - }, - "resume": { - "description": "Resume cluster `pause: false`.", - "type": "boolean", - "x-order": 4 - }, - "haproxy": { - "description": "HAProxy container parameters.", - "type": "object", - "properties": { - "compute_resources": { - "description": "ComputeResources represents container computer resources requests or limits.", - "type": "object", - "properties": { - "cpu_m": { - "description": "CPUs in milliCPUs; 1000m = 1 vCPU.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "memory_bytes": { - "description": "Memory in bytes.", - "type": "string", - "format": "int64", - "x-order": 1 - } - }, - "x-order": 0 - } - }, - "x-order": 5 - } - }, - "x-order": 2 - }, - "expose": { - "description": "Make DB cluster accessible outside of K8s cluster.", - "type": "boolean", - "x-order": 3 - }, - "internet_facing": { - "description": "Make DB cluster accessible via public internet.", - "type": "boolean", - "x-order": 4 - }, - "source_ranges": { - "description": "Apply IP source ranges against the cluster.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/DBaaS/PXCClusters/GetCredentials": { - "post": { - "tags": [ - "PXCClusters" - ], - "summary": "GetPXCClusterCredentials returns a PXC cluster credentials by cluster name.", - "operationId": "GetPXCClusterCredentials", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "kubernetes_cluster_name": { - "description": "Kubernetes cluster name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "PXC cluster name.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "connection_credentials": { - "description": "PXCClusterConnectionCredentials is cluster connection credentials.", - "type": "object", - "properties": { - "username": { - "description": "PXC username.", - "type": "string", - "x-order": 0 - }, - "password": { - "description": "PXC password.", - "type": "string", - "x-order": 1 - }, - "host": { - "description": "PXC host.", - "type": "string", - "x-order": 2 - }, - "port": { - "description": "PXC port.", - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/alerting/Rules/Create": { - "post": { - "tags": [ - "Alerting" - ], - "summary": "CreateRule creates alerting rule from the given template.", - "operationId": "CreateRule", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "template_name": { - "description": "Template name.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "Rule name.", - "type": "string", - "x-order": 1 - }, - "group": { - "description": "Rule group name.", - "type": "string", - "x-order": 2 - }, - "folder_uid": { - "description": "Folder UID.", - "type": "string", - "x-order": 3 - }, - "params": { - "description": "Rule parameters. All template parameters should be set.", - "type": "array", - "items": { - "description": "ParamValue represents a single rule parameter value.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 1 - }, - "bool": { - "description": "Bool value.", - "type": "boolean", - "x-order": 2 - }, - "float": { - "description": "Float value.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "string": { - "description": "String value.", - "type": "string", - "x-order": 4 - } - } - }, - "x-order": 4 - }, - "for": { - "description": "Rule duration. Should be set.", - "type": "string", - "x-order": 5 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 6 - }, - "custom_labels": { - "description": "All custom labels to add or remove (with empty values) to default labels from template.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 7 - }, - "filters": { - "description": "Filters.", - "type": "array", - "items": { - "description": "Filter represents a single filter condition.", - "type": "object", - "properties": { - "type": { - "description": "FilterType represents filter matching type.", - "type": "string", - "default": "FILTER_TYPE_INVALID", - "enum": [ - "FILTER_TYPE_INVALID", - "MATCH", - "MISMATCH" - ], - "x-order": 0 - }, - "label": { - "type": "string", - "x-order": 1 - }, - "regexp": { - "type": "string", - "x-order": 2 - } - } - }, - "x-order": 8 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/alerting/Templates/Create": { - "post": { - "tags": [ - "Alerting" - ], - "summary": "CreateTemplate creates a new template.", - "operationId": "CreateTemplate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "yaml": { - "description": "YAML (or JSON) template file content.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/alerting/Templates/Delete": { - "post": { - "tags": [ - "Alerting" - ], - "summary": "DeleteTemplate deletes existing, previously created via API.", - "operationId": "DeleteTemplate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/alerting/Templates/List": { - "post": { - "tags": [ - "Alerting" - ], - "summary": "ListTemplates returns a list of all collected alert rule templates.", - "operationId": "ListTemplates", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "reload": { - "description": "If true, template files will be re-read from disk.", - "type": "boolean", - "x-order": 0 - }, - "page_params": { - "description": "PageParams represents page request parameters for pagination.", - "type": "object", - "properties": { - "page_size": { - "description": "Maximum number of results per page.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "index": { - "description": "Index of the requested page, starts from 0.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "templates": { - "type": "array", - "items": { - "description": "Template represents Alert Template that is used to create Alert Rule.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID).", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable summary.", - "type": "string", - "x-order": 1 - }, - "expr": { - "description": "PromQL query expression with templating parameters.", - "type": "string", - "x-order": 2 - }, - "params": { - "description": "Query parameters definitions.", - "type": "array", - "items": { - "description": "ParamDefinition represents a single query parameter.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable parameter summary.", - "type": "string", - "x-order": 1 - }, - "unit": { - "description": "ParamUnit represents template parameter unit.\n\n - PARAM_UNIT_INVALID: Invalid, unknown or absent.\n - PERCENTAGE: %\n - SECONDS: s", - "type": "string", - "default": "PARAM_UNIT_INVALID", - "enum": [ - "PARAM_UNIT_INVALID", - "PERCENTAGE", - "SECONDS" - ], - "x-order": 2 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 3 - }, - "bool": { - "description": "BoolParamDefinition represents boolean parameter's default value.", - "type": "object", - "properties": { - "default": { - "description": "BooleanFlag represent a command to set some boolean property to true,\nto false, or avoid changing that property.\n\n - DO_NOT_CHANGE: Do not change boolean property. Default value.\n - TRUE: True.\n - FALSE: False.", - "type": "string", - "default": "DO_NOT_CHANGE", - "enum": [ - "DO_NOT_CHANGE", - "TRUE", - "FALSE" - ], - "x-order": 0 - } - }, - "x-order": 4 - }, - "float": { - "description": "FloatParamDefinition represents float parameter's default value and valid range.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "number", - "format": "double", - "x-order": 1 - }, - "has_min": { - "description": "True if minimal valid value is set.", - "type": "boolean", - "x-order": 2 - }, - "min": { - "description": "Minimal valid value (inclusive) if has_min is true.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "has_max": { - "description": "True if maximal valid value is set.", - "type": "boolean", - "x-order": 4 - }, - "max": { - "description": "Maximal valid value (inclusive) if has_max is true.", - "type": "number", - "format": "double", - "x-order": 5 - } - }, - "x-order": 5 - }, - "string": { - "description": "StringParamDefinition represents string parameter's default value.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 6 - } - } - }, - "x-order": 3 - }, - "for": { - "description": "Default duration value.", - "type": "string", - "x-order": 4 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 5 - }, - "labels": { - "description": "Labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 6 - }, - "annotations": { - "description": "Annotations.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 7 - }, - "source": { - "description": "TemplateSource defines template source.\n\n - BUILT_IN: Template that is shipped with PMM Server releases.\n - SAAS: Template that is downloaded from check.percona.com.\n - USER_FILE: Templated loaded from user-suplied file.\n - USER_API: Templated created via API.", - "type": "string", - "default": "TEMPLATE_SOURCE_INVALID", - "enum": [ - "TEMPLATE_SOURCE_INVALID", - "BUILT_IN", - "SAAS", - "USER_FILE", - "USER_API" - ], - "x-order": 8 - }, - "created_at": { - "description": "Template creation time. Empty for built-in and SaaS templates.", - "type": "string", - "format": "date-time", - "x-order": 9 - }, - "yaml": { - "description": "YAML (or JSON) template file content. Empty for built-in and SaaS templates.", - "type": "string", - "x-order": 10 - } - } - }, - "x-order": 0 - }, - "totals": { - "description": "PageTotals represents total values for pagination.", - "type": "object", - "properties": { - "total_items": { - "description": "Total number of results.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "total_pages": { - "description": "Total number of pages.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/alerting/Templates/Update": { - "post": { - "tags": [ - "Alerting" - ], - "summary": "UpdateTemplate updates existing template, previously created via API.", - "operationId": "UpdateTemplate", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID).", - "type": "string", - "x-order": 0 - }, - "yaml": { - "description": "YAML (or JSON) template file content.", - "type": "string", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/azure/AzureDatabase/Add": { - "post": { - "tags": [ - "AzureDatabase" - ], - "summary": "AddAzureDatabase adds Azure Database instance.", - "operationId": "AddAzureDatabase", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "region": { - "description": "Azure database location.", - "type": "string", - "x-order": 0 - }, - "az": { - "description": "Azure database availability zone.", - "type": "string", - "x-order": 1 - }, - "instance_id": { - "description": "Azure database instance ID.", - "type": "string", - "x-order": 2 - }, - "node_model": { - "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", - "type": "string", - "x-order": 3 - }, - "address": { - "description": "Address used to connect to it.", - "type": "string", - "x-order": 4 - }, - "port": { - "description": "Access port.", - "type": "integer", - "format": "int64", - "x-order": 5 - }, - "node_name": { - "description": "Unique across all Nodes user-defined name. Defaults to Azure Database instance ID.", - "type": "string", - "x-order": 6 - }, - "service_name": { - "description": "Unique across all Services user-defined name. Defaults to Azure Database instance ID.", - "type": "string", - "x-order": 7 - }, - "environment": { - "description": "Environment name.", - "type": "string", - "x-order": 8 - }, - "username": { - "description": "Username for scraping metrics.", - "type": "string", - "x-order": 9 - }, - "password": { - "description": "Password for scraping metrics.", - "type": "string", - "x-order": 10 - }, - "azure_client_id": { - "description": "Azure client ID.", - "type": "string", - "x-order": 11 - }, - "azure_client_secret": { - "description": "Azure client secret.", - "type": "string", - "x-order": 12 - }, - "azure_tenant_id": { - "description": "Azure tanant ID.", - "type": "string", - "x-order": 13 - }, - "azure_subscription_id": { - "description": "Azure subscription ID.", - "type": "string", - "x-order": 14 - }, - "azure_resource_group": { - "description": "Azure resource group.", - "type": "string", - "x-order": 15 - }, - "azure_database_exporter": { - "description": "If true, adds azure_database_exporter.", - "type": "boolean", - "x-order": 16 - }, - "qan": { - "description": "If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent.", - "type": "boolean", - "x-order": 17 - }, - "custom_labels": { - "description": "Custom user-assigned labels for Node and Service.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 18 - }, - "skip_connection_check": { - "description": "Skip connection check.", - "type": "boolean", - "x-order": 19 - }, - "tls": { - "description": "Use TLS for database connections.", - "type": "boolean", - "x-order": 20 - }, - "tls_skip_verify": { - "description": "Skip TLS certificate and hostname validation.", - "type": "boolean", - "x-order": 21 - }, - "disable_query_examples": { - "description": "Disable query examples.", - "type": "boolean", - "x-order": 22 - }, - "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": 23 - }, - "type": { - "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", - "type": "string", - "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", - "enum": [ - "DISCOVER_AZURE_DATABASE_TYPE_INVALID", - "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", - "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" - ], - "x-order": 24 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string", - "x-order": 0 - }, - "code": { - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "message": { - "type": "string", - "x-order": 2 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type_url": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "string", - "format": "byte", - "x-order": 1 - } - } - }, - "x-order": 3 - } - } - } - } - } - } - }, - "/v1/management/azure/AzureDatabase/Discover": { - "post": { - "tags": [ - "AzureDatabase" - ], - "summary": "DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances.", - "operationId": "DiscoverAzureDatabase", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "description": "DiscoverAzureDatabaseRequest discover azure databases request.", - "type": "object", - "properties": { - "azure_client_id": { - "description": "Azure client ID.", - "type": "string", - "x-order": 0 - }, - "azure_client_secret": { - "description": "Azure client secret.", - "type": "string", - "x-order": 1 - }, - "azure_tenant_id": { - "description": "Azure tanant ID.", - "type": "string", - "x-order": 2 - }, - "azure_subscription_id": { - "description": "Azure subscription ID.", - "type": "string", - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "description": "DiscoverAzureDatabaseResponse discover azure databases response.", - "type": "object", - "properties": { - "azure_database_instance": { - "type": "array", - "items": { - "description": "DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery.", - "type": "object", - "properties": { - "instance_id": { - "description": "Azure database instance ID.", - "type": "string", - "x-order": 0 - }, - "region": { - "description": "Azure database location.", - "type": "string", - "x-order": 1 - }, - "service_name": { - "description": "Azure database server name.", - "type": "string", - "x-order": 2 - }, - "username": { - "description": "Database username.", - "type": "string", - "x-order": 3 - }, - "address": { - "description": "Address used to connect to it.", - "type": "string", - "x-order": 4 - }, - "azure_resource_group": { - "description": "Azure Resource group.", - "type": "string", - "x-order": 5 - }, - "environment": { - "description": "Environment tag.", - "type": "string", - "x-order": 6 - }, - "type": { - "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", - "type": "string", - "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", - "enum": [ - "DISCOVER_AZURE_DATABASE_TYPE_INVALID", - "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", - "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" - ], - "x-order": 7 - }, - "az": { - "description": "Azure database availability zone.", - "type": "string", - "x-order": 8 - }, - "node_model": { - "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", - "type": "string", - "x-order": 9 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string", - "x-order": 0 - }, - "code": { - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "message": { - "type": "string", - "x-order": 2 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type_url": { - "type": "string", - "x-order": 0 - }, - "value": { - "type": "string", - "format": "byte", - "x-order": 1 - } - } - }, - "x-order": 3 - } - } - } - } - } - } - }, - "/v1/management/backup/Artifacts/Delete": { - "post": { - "tags": [ - "Artifacts" - ], - "summary": "DeleteArtifact deletes specified artifact.", - "operationId": "DeleteArtifact", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "artifact_id": { - "description": "Machine-readable artifact ID.", - "type": "string", - "x-order": 0 - }, - "remove_files": { - "description": "Removes all the backup files associated with artifact if flag is set.", - "type": "boolean", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Artifacts/List": { - "post": { - "tags": [ - "Artifacts" - ], - "summary": "ListArtifacts returns a list of all backup artifacts.", - "operationId": "ListArtifacts", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "artifacts": { - "type": "array", - "items": { - "description": "Artifact represents single backup artifact.", - "type": "object", - "properties": { - "artifact_id": { - "description": "Machine-readable artifact ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "type": "string", - "title": "Artifact name", - "x-order": 1 - }, - "vendor": { - "description": "Database vendor e.g. PostgreSQL, MongoDB, MySQL.", - "type": "string", - "x-order": 2 - }, - "location_id": { - "description": "Machine-readable location ID.", - "type": "string", - "x-order": 3 - }, - "location_name": { - "description": "Location name.", - "type": "string", - "x-order": 4 - }, - "service_id": { - "description": "Machine-readable service ID.", - "type": "string", - "x-order": 5 - }, - "service_name": { - "description": "Service name.", - "type": "string", - "x-order": 6 - }, - "data_model": { - "description": "DataModel is a model used for performing a backup.", - "type": "string", - "default": "DATA_MODEL_INVALID", - "enum": [ - "DATA_MODEL_INVALID", - "PHYSICAL", - "LOGICAL" - ], - "x-order": 7 - }, - "status": { - "description": "BackupStatus shows the current status of execution of backup.", - "type": "string", - "default": "BACKUP_STATUS_INVALID", - "enum": [ - "BACKUP_STATUS_INVALID", - "BACKUP_STATUS_PENDING", - "BACKUP_STATUS_IN_PROGRESS", - "BACKUP_STATUS_PAUSED", - "BACKUP_STATUS_SUCCESS", - "BACKUP_STATUS_ERROR", - "BACKUP_STATUS_DELETING", - "BACKUP_STATUS_FAILED_TO_DELETE" - ], - "x-order": 8 - }, - "created_at": { - "description": "Artifact creation time.", - "type": "string", - "format": "date-time", - "x-order": 9 - }, - "mode": { - "description": "BackupMode specifies backup mode.", - "type": "string", - "default": "BACKUP_MODE_INVALID", - "enum": [ - "BACKUP_MODE_INVALID", - "SNAPSHOT", - "INCREMENTAL", - "PITR" - ], - "x-order": 10 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Artifacts/ListPITRTimeranges": { - "post": { - "tags": [ - "Artifacts" - ], - "summary": "ListPitrTimeranges list the available MongoDB PITR timeranges in a given backup location", - "operationId": "ListPitrTimeranges", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "artifact_id": { - "description": "Artifact ID represents artifact whose location has PITR timeranges to be retrieved.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "timeranges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "start_timestamp": { - "description": "start_timestamp is the time of the first event in the PITR chunk.", - "type": "string", - "format": "date-time", - "x-order": 0 - }, - "end_timestamp": { - "description": "end_timestamp is the time of the last event in the PITR chunk.", - "type": "string", - "format": "date-time", - "x-order": 1 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/ChangeScheduled": { - "post": { - "tags": [ - "Backups" - ], - "summary": "ChangeScheduledBackup changes existing scheduled backup.", - "operationId": "ChangeScheduledBackup", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "scheduled_backup_id": { - "type": "string", - "x-order": 0 - }, - "enabled": { - "type": "boolean", - "x-order": 1 - }, - "cron_expression": { - "description": "How often backup should be run in cron format.", - "type": "string", - "x-order": 2 - }, - "start_time": { - "description": "First backup wouldn't happen before this time.", - "type": "string", - "format": "date-time", - "x-order": 3 - }, - "name": { - "description": "Name of backup.", - "type": "string", - "x-order": 4 - }, - "description": { - "description": "Human-readable description.", - "type": "string", - "x-order": 5 - }, - "retry_interval": { - "description": "Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 6 - }, - "retries": { - "description": "How many times to retry a failed backup before giving up.", - "type": "integer", - "format": "int64", - "x-order": 7 - }, - "retention": { - "description": "How many artifacts keep. 0 - unlimited.", - "type": "integer", - "format": "int64", - "x-order": 8 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/GetLogs": { - "post": { - "tags": [ - "Backups" - ], - "summary": "GetLogs returns logs for provided artifact.", - "operationId": "GetLogsMixin3", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "artifact_id": { - "type": "string", - "x-order": 0 - }, - "offset": { - "type": "integer", - "format": "int64", - "x-order": 1 - }, - "limit": { - "type": "integer", - "format": "int64", - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "logs": { - "type": "array", - "items": { - "description": "LogChunk represent one chunk of logs.", - "type": "object", - "properties": { - "chunk_id": { - "type": "integer", - "format": "int64", - "x-order": 0 - }, - "data": { - "type": "string", - "x-order": 1 - } - } - }, - "x-order": 0 - }, - "end": { - "type": "boolean", - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/ListArtifactCompatibleServices": { - "post": { - "tags": [ - "Backups" - ], - "summary": "ListArtifactCompatibleServices lists compatible services for restoring a backup.", - "operationId": "ListArtifactCompatibleServices", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "artifact_id": { - "description": "Artifact id used to determine restore compatibility.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "mysql": { - "type": "array", - "items": { - "description": "MySQLService represents a generic MySQL instance.", - "type": "object", - "properties": { - "service_id": { - "description": "Unique randomly generated instance identifier.", - "type": "string", - "x-order": 0 - }, - "service_name": { - "description": "Unique across all Services user-defined name.", - "type": "string", - "x-order": 1 - }, - "node_id": { - "description": "Node identifier where this instance runs.", - "type": "string", - "x-order": 2 - }, - "address": { - "description": "Access address (DNS name or IP).\nAddress (and port) or socket is required.", - "type": "string", - "x-order": 3 - }, - "port": { - "description": "Access port.\nPort is required when the address present.", - "type": "integer", - "format": "int64", - "x-order": 4 - }, - "socket": { - "description": "Access unix socket.\nAddress (and port) or socket is required.", - "type": "string", - "x-order": 5 - }, - "environment": { - "description": "Environment name.", - "type": "string", - "x-order": 6 - }, - "cluster": { - "description": "Cluster name.", - "type": "string", - "x-order": 7 - }, - "replication_set": { - "description": "Replication set name.", - "type": "string", - "x-order": 8 - }, - "custom_labels": { - "description": "Custom user-assigned labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 9 - } - } - }, - "x-order": 0 - }, - "mongodb": { - "type": "array", - "items": { - "description": "MongoDBService represents a generic MongoDB instance.", - "type": "object", - "properties": { - "service_id": { - "description": "Unique randomly generated instance identifier.", - "type": "string", - "x-order": 0 - }, - "service_name": { - "description": "Unique across all Services user-defined name.", - "type": "string", - "x-order": 1 - }, - "node_id": { - "description": "Node identifier where this instance runs.", - "type": "string", - "x-order": 2 - }, - "address": { - "description": "Access address (DNS name or IP).\nAddress (and port) or socket is required.", - "type": "string", - "x-order": 3 - }, - "port": { - "description": "Access port.\nPort is required when the address present.", - "type": "integer", - "format": "int64", - "x-order": 4 - }, - "socket": { - "description": "Access unix socket.\nAddress (and port) or socket is required.", - "type": "string", - "x-order": 5 - }, - "environment": { - "description": "Environment name.", - "type": "string", - "x-order": 6 - }, - "cluster": { - "description": "Cluster name.", - "type": "string", - "x-order": 7 - }, - "replication_set": { - "description": "Replication set name.", - "type": "string", - "x-order": 8 - }, - "custom_labels": { - "description": "Custom user-assigned labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 9 - } - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/ListScheduled": { - "post": { - "tags": [ - "Backups" - ], - "summary": "ListScheduledBackups returns all scheduled backups.", - "operationId": "ListScheduledBackups", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "scheduled_backups": { - "type": "array", - "items": { - "description": "ScheduledBackup represents scheduled task for backup.", - "type": "object", - "properties": { - "scheduled_backup_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "service_id": { - "description": "Machine-readable service ID.", - "type": "string", - "x-order": 1 - }, - "service_name": { - "description": "Service name.", - "type": "string", - "x-order": 2 - }, - "location_id": { - "description": "Machine-readable location ID.", - "type": "string", - "x-order": 3 - }, - "location_name": { - "description": "Location name.", - "type": "string", - "x-order": 4 - }, - "cron_expression": { - "description": "How often backup will be run in cron format.", - "type": "string", - "x-order": 5 - }, - "start_time": { - "description": "First backup wouldn't happen before this time.", - "type": "string", - "format": "date-time", - "x-order": 6 - }, - "name": { - "description": "Artifact name.", - "type": "string", - "x-order": 7 - }, - "description": { - "description": "Description.", - "type": "string", - "x-order": 8 - }, - "retry_interval": { - "description": "Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 9 - }, - "retries": { - "description": "How many times to retry a failed backup before giving up.", - "type": "integer", - "format": "int64", - "x-order": 10 - }, - "enabled": { - "description": "If scheduling is enabled.", - "type": "boolean", - "x-order": 11 - }, - "data_model": { - "description": "DataModel is a model used for performing a backup.", - "type": "string", - "default": "DATA_MODEL_INVALID", - "enum": [ - "DATA_MODEL_INVALID", - "PHYSICAL", - "LOGICAL" - ], - "x-order": 12 - }, - "vendor": { - "description": "Database vendor e.g. PostgreSQL, MongoDB, MySQL.", - "type": "string", - "x-order": 13 - }, - "last_run": { - "description": "Last run.", - "type": "string", - "format": "date-time", - "x-order": 14 - }, - "next_run": { - "description": "Next run.", - "type": "string", - "format": "date-time", - "x-order": 15 - }, - "retention": { - "description": "How many artifacts keep. 0 - unlimited.", - "type": "integer", - "format": "int64", - "x-order": 16 - }, - "mode": { - "description": "BackupMode specifies backup mode.", - "type": "string", - "default": "BACKUP_MODE_INVALID", - "enum": [ - "BACKUP_MODE_INVALID", - "SNAPSHOT", - "INCREMENTAL", - "PITR" - ], - "x-order": 17 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/RemoveScheduled": { - "post": { - "tags": [ - "Backups" - ], - "summary": "RemoveScheduledBackup removes existing scheduled backup.", - "operationId": "RemoveScheduledBackup", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "scheduled_backup_id": { - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/Restore": { - "post": { - "description": "Could return the Error message in the details containing specific ErrorCode indicating failure reason:\nERROR_CODE_XTRABACKUP_NOT_INSTALLED - xtrabackup is not installed on the service\nERROR_CODE_INVALID_XTRABACKUP - different versions of xtrabackup and xbcloud\nERROR_CODE_INCOMPATIBLE_XTRABACKUP - xtrabackup is not compatible with MySQL for taking a backup\nERROR_CODE_INCOMPATIBLE_TARGET_MYSQL - target MySQL version is not compatible with the artifact for performing a restore of the backup", - "tags": [ - "Backups" - ], - "summary": "RestoreBackup requests the backup restore.", - "operationId": "RestoreBackup", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "service_id": { - "description": "Service identifier where backup should be restored.", - "type": "string", - "x-order": 0 - }, - "artifact_id": { - "description": "Artifact id to restore.", - "type": "string", - "x-order": 1 - }, - "pitr_timestamp": { - "type": "string", - "format": "date-time", - "title": "Timestamp of PITR to restore to", - "x-order": 2 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "restore_id": { - "description": "Unique restore identifier.", - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/Schedule": { - "post": { - "tags": [ - "Backups" - ], - "summary": "ScheduleBackup schedules repeated backup.", - "operationId": "ScheduleBackup", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "service_id": { - "description": "Service identifier where backup should be performed.", - "type": "string", - "x-order": 0 - }, - "location_id": { - "description": "Machine-readable location ID.", - "type": "string", - "x-order": 1 - }, - "cron_expression": { - "description": "How often backup should be run in cron format.", - "type": "string", - "x-order": 2 - }, - "start_time": { - "description": "First backup wouldn't happen before this time.", - "type": "string", - "format": "date-time", - "x-order": 3 - }, - "name": { - "description": "Name of backup.", - "type": "string", - "x-order": 4 - }, - "description": { - "description": "Human-readable description.", - "type": "string", - "x-order": 5 - }, - "retry_interval": { - "description": "Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 6 - }, - "retries": { - "description": "How many times to retry a failed backup before giving up.", - "type": "integer", - "format": "int64", - "x-order": 7 - }, - "enabled": { - "description": "If scheduling is enabled.", - "type": "boolean", - "x-order": 8 - }, - "retention": { - "description": "How many artifacts keep. 0 - unlimited.", - "type": "integer", - "format": "int64", - "x-order": 9 - }, - "mode": { - "description": "BackupMode specifies backup mode.", - "type": "string", - "default": "BACKUP_MODE_INVALID", - "enum": [ - "BACKUP_MODE_INVALID", - "SNAPSHOT", - "INCREMENTAL", - "PITR" - ], - "x-order": 10 - }, - "data_model": { - "description": "DataModel is a model used for performing a backup.", - "type": "string", - "default": "DATA_MODEL_INVALID", - "enum": [ - "DATA_MODEL_INVALID", - "PHYSICAL", - "LOGICAL" - ], - "x-order": 11 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "scheduled_backup_id": { - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Backups/Start": { - "post": { - "description": "Could return the Error message in the details containing specific ErrorCode indicating failure reason:\nERROR_CODE_XTRABACKUP_NOT_INSTALLED - xtrabackup is not installed on the service\nERROR_CODE_INVALID_XTRABACKUP - different versions of xtrabackup and xbcloud\nERROR_CODE_INCOMPATIBLE_XTRABACKUP - xtrabackup is not compatible with MySQL for taking a backup", - "tags": [ - "Backups" - ], - "summary": "StartBackup request backup specified service to location.", - "operationId": "StartBackup", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "service_id": { - "description": "Service identifier.", - "type": "string", - "x-order": 0 - }, - "location_id": { - "description": "Machine-readable location ID.", - "type": "string", - "x-order": 1 - }, - "name": { - "description": "If empty then name is auto-generated.", - "type": "string", - "x-order": 2 - }, - "description": { - "description": "Human-readable description.", - "type": "string", - "x-order": 3 - }, - "retry_interval": { - "description": "Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 4 - }, - "retries": { - "description": "How many times to retry a failed backup before giving up.", - "type": "integer", - "format": "int64", - "x-order": 5 - }, - "data_model": { - "description": "DataModel is a model used for performing a backup.", - "type": "string", - "default": "DATA_MODEL_INVALID", - "enum": [ - "DATA_MODEL_INVALID", - "PHYSICAL", - "LOGICAL" - ], - "x-order": 6 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "artifact_id": { - "description": "Unique identifier.", - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Locations/Add": { - "post": { - "tags": [ - "Locations" - ], - "summary": "AddLocation adds backup location.", - "operationId": "AddLocation", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Location name", - "x-order": 0 - }, - "description": { - "type": "string", - "x-order": 1 - }, - "filesystem_config": { - "description": "FilesystemLocationConfig represents file system location config.", - "type": "object", - "properties": { - "path": { - "type": "string", - "x-order": 0 - } - }, - "x-order": 2 - }, - "s3_config": { - "description": "S3LocationConfig represents S3 bucket configuration.", - "type": "object", - "properties": { - "endpoint": { - "type": "string", - "x-order": 0 - }, - "access_key": { - "type": "string", - "x-order": 1 - }, - "secret_key": { - "type": "string", - "x-order": 2 - }, - "bucket_name": { - "type": "string", - "x-order": 3 - } - }, - "x-order": 3 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "location_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Locations/Change": { - "post": { - "tags": [ - "Locations" - ], - "summary": "ChangeLocation changes backup location.", - "operationId": "ChangeLocation", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "location_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "type": "string", - "title": "Location name", - "x-order": 1 - }, - "description": { - "type": "string", - "x-order": 2 - }, - "filesystem_config": { - "description": "FilesystemLocationConfig represents file system location config.", - "type": "object", - "properties": { - "path": { - "type": "string", - "x-order": 0 - } - }, - "x-order": 3 - }, - "s3_config": { - "description": "S3LocationConfig represents S3 bucket configuration.", - "type": "object", - "properties": { - "endpoint": { - "type": "string", - "x-order": 0 - }, - "access_key": { - "type": "string", - "x-order": 1 - }, - "secret_key": { - "type": "string", - "x-order": 2 - }, - "bucket_name": { - "type": "string", - "x-order": 3 - } - }, - "x-order": 4 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Locations/List": { - "post": { - "tags": [ - "Locations" - ], - "summary": "ListLocations returns a list of all backup locations.", - "operationId": "ListLocations", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "locations": { - "type": "array", - "items": { - "description": "Location represents single Backup Location.", - "type": "object", - "properties": { - "location_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "type": "string", - "title": "Location name", - "x-order": 1 - }, - "description": { - "type": "string", - "title": "Short description", - "x-order": 2 - }, - "filesystem_config": { - "description": "FilesystemLocationConfig represents file system location config.", - "type": "object", - "properties": { - "path": { - "type": "string", - "x-order": 0 - } - }, - "x-order": 3 - }, - "s3_config": { - "description": "S3LocationConfig represents S3 bucket configuration.", - "type": "object", - "properties": { - "endpoint": { - "type": "string", - "x-order": 0 - }, - "access_key": { - "type": "string", - "x-order": 1 - }, - "secret_key": { - "type": "string", - "x-order": 2 - }, - "bucket_name": { - "type": "string", - "x-order": 3 - } - }, - "x-order": 4 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Locations/Remove": { - "post": { - "tags": [ - "Locations" - ], - "summary": "RemoveLocation removes existing backup location.", - "operationId": "RemoveLocation", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "location_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "force": { - "type": "boolean", - "title": "Force mode", - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/Locations/TestConfig": { - "post": { - "tags": [ - "Locations" - ], - "summary": "TestLocationConfig tests backup location and credentials.", - "operationId": "TestLocationConfig", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "filesystem_config": { - "description": "FilesystemLocationConfig represents file system location config.", - "type": "object", - "properties": { - "path": { - "type": "string", - "x-order": 0 - } - }, - "x-order": 0 - }, - "s3_config": { - "description": "S3LocationConfig represents S3 bucket configuration.", - "type": "object", - "properties": { - "endpoint": { - "type": "string", - "x-order": 0 - }, - "access_key": { - "type": "string", - "x-order": 1 - }, - "secret_key": { - "type": "string", - "x-order": 2 - }, - "bucket_name": { - "type": "string", - "x-order": 3 - } - }, - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/backup/RestoreHistory/List": { - "post": { - "tags": [ - "RestoreHistory" - ], - "summary": "ListRestoreHistory returns a list of all backup restore history items.", - "operationId": "ListRestoreHistory", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object" - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "description": "RestoreHistoryItem represents single backup restore item.", - "type": "object", - "properties": { - "restore_id": { - "description": "Machine-readable restore id.", - "type": "string", - "x-order": 0 - }, - "artifact_id": { - "description": "ID of the artifact used for restore.", - "type": "string", - "x-order": 1 - }, - "name": { - "description": "Artifact name used for restore.", - "type": "string", - "x-order": 2 - }, - "vendor": { - "description": "Database vendor e.g. PostgreSQL, MongoDB, MySQL.", - "type": "string", - "x-order": 3 - }, - "location_id": { - "description": "Machine-readable location ID.", - "type": "string", - "x-order": 4 - }, - "location_name": { - "description": "Location name.", - "type": "string", - "x-order": 5 - }, - "service_id": { - "description": "Machine-readable service ID.", - "type": "string", - "x-order": 6 - }, - "service_name": { - "description": "Service name.", - "type": "string", - "x-order": 7 - }, - "data_model": { - "description": "DataModel is a model used for performing a backup.", - "type": "string", - "default": "DATA_MODEL_INVALID", - "enum": [ - "DATA_MODEL_INVALID", - "PHYSICAL", - "LOGICAL" - ], - "x-order": 8 - }, - "status": { - "description": "RestoreStatus shows the current status of execution of restore.", - "type": "string", - "default": "RESTORE_STATUS_INVALID", - "enum": [ - "RESTORE_STATUS_INVALID", - "RESTORE_STATUS_IN_PROGRESS", - "RESTORE_STATUS_SUCCESS", - "RESTORE_STATUS_ERROR" - ], - "x-order": 9 - }, - "started_at": { - "description": "Restore start time.", - "type": "string", - "format": "date-time", - "x-order": 10 - }, - "finished_at": { - "description": "Restore finish time.", - "type": "string", - "format": "date-time", - "x-order": 11 - }, - "pitr_timestamp": { - "description": "PITR timestamp is filled for PITR restores, empty otherwise.", - "type": "string", - "format": "date-time", - "x-order": 12 - } - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Alerts/List": { - "post": { - "tags": [ - "Alerts" - ], - "summary": "ListAlerts returns a list of all Alerts.", - "operationId": "ListAlerts", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "page_params": { - "description": "PageParams represents page request parameters for pagination.", - "type": "object", - "properties": { - "page_size": { - "description": "Maximum number of results per page.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "index": { - "description": "Index of the requested page, starts from 0.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "alerts": { - "type": "array", - "items": { - "description": "Alert represents Alert.", - "type": "object", - "properties": { - "alert_id": { - "description": "ID.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Human-readable summary.", - "type": "string", - "x-order": 1 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 2 - }, - "status": { - "description": "Status represents Alert Rule's and Alert's combined status.\n\n - CLEAR: No alert.\n - PENDING: Pending, but not triggering alert.\n - TRIGGERING: Triggering (firing) alert.\n - SILENCED: Silenced alert.", - "type": "string", - "default": "STATUS_INVALID", - "enum": [ - "STATUS_INVALID", - "CLEAR", - "PENDING", - "TRIGGERING", - "SILENCED" - ], - "x-order": 3 - }, - "labels": { - "description": "Combined labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 4 - }, - "rule": { - "description": "Rule represents Alert Rule.", - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "Rule name.", - "type": "string", - "x-order": 1 - }, - "summary": { - "description": "Rule human-readable summary.", - "type": "string", - "x-order": 2 - }, - "template_name": { - "description": "Template used for this rule.", - "type": "string", - "x-order": 3 - }, - "disabled": { - "description": "True if that rule is disabled.", - "type": "boolean", - "x-order": 4 - }, - "expr_template": { - "description": "Expression template.", - "type": "string", - "x-order": 5 - }, - "expr": { - "description": "Expression filled with parameters.", - "type": "string", - "x-order": 6 - }, - "params_definitions": { - "description": "Expression parameters definitions.", - "type": "array", - "items": { - "description": "ParamDefinition represents a single query parameter.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable parameter summary.", - "type": "string", - "x-order": 1 - }, - "unit": { - "description": "ParamUnit represents template parameter unit.\n\n - PARAM_UNIT_INVALID: Invalid, unknown or absent.\n - PERCENTAGE: %\n - SECONDS: s", - "type": "string", - "default": "PARAM_UNIT_INVALID", - "enum": [ - "PARAM_UNIT_INVALID", - "PERCENTAGE", - "SECONDS" - ], - "x-order": 2 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 3 - }, - "bool": { - "description": "BoolParamDefinition represents boolean parameter's default value.", - "type": "object", - "properties": { - "default": { - "description": "BooleanFlag represent a command to set some boolean property to true,\nto false, or avoid changing that property.\n\n - DO_NOT_CHANGE: Do not change boolean property. Default value.\n - TRUE: True.\n - FALSE: False.", - "type": "string", - "default": "DO_NOT_CHANGE", - "enum": [ - "DO_NOT_CHANGE", - "TRUE", - "FALSE" - ], - "x-order": 0 - } - }, - "x-order": 4 - }, - "float": { - "description": "FloatParamDefinition represents float parameter's default value and valid range.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "number", - "format": "double", - "x-order": 1 - }, - "has_min": { - "description": "True if minimal valid value is set.", - "type": "boolean", - "x-order": 2 - }, - "min": { - "description": "Minimal valid value (inclusive) if has_min is true.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "has_max": { - "description": "True if maximal valid value is set.", - "type": "boolean", - "x-order": 4 - }, - "max": { - "description": "Maximal valid value (inclusive) if has_max is true.", - "type": "number", - "format": "double", - "x-order": 5 - } - }, - "x-order": 5 - }, - "string": { - "description": "StringParamDefinition represents string parameter's default value.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 6 - } - } - }, - "x-order": 7 - }, - "params_values": { - "description": "Expression parameters values.", - "type": "array", - "items": { - "description": "ParamValue represents a single rule parameter value for List, Change and Update APIs.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 1 - }, - "bool": { - "description": "Bool value.", - "type": "boolean", - "x-order": 2 - }, - "float": { - "description": "Float value.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "string": { - "description": "String value.", - "type": "string", - "x-order": 4 - } - } - }, - "x-order": 8 - }, - "default_for": { - "description": "Default for duration.", - "type": "string", - "x-order": 9 - }, - "for": { - "description": "For duration.", - "type": "string", - "x-order": 10 - }, - "default_severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 11 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 12 - }, - "custom_labels": { - "description": "Custom labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 13 - }, - "labels": { - "description": "Labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 14 - }, - "annotations": { - "description": "Annotations.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 15 - }, - "filters": { - "description": "Filters.", - "type": "array", - "items": { - "description": "Filter repsents a single filter condition.", - "type": "object", - "properties": { - "type": { - "description": "FilterType represents filter matching type.\n\n - EQUAL: =\n\n!=\n NOT_EQUAL = 2;\n - REGEX: =~\n\n!~\n NOT_REGEX = 4;", - "type": "string", - "default": "FILTER_TYPE_INVALID", - "enum": [ - "FILTER_TYPE_INVALID", - "EQUAL", - "REGEX" - ], - "x-order": 0 - }, - "key": { - "type": "string", - "x-order": 1 - }, - "value": { - "type": "string", - "x-order": 2 - } - } - }, - "x-order": 16 - }, - "channels": { - "description": "Channels.", - "type": "array", - "items": { - "description": "Channel represents a single Notification Channel.\n\nreserved channels\n pushover_config = 5;\n opsgenie_config = 7;\n victorops_config = 9;\n wechat_config = 10;", - "type": "object", - "properties": { - "channel_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable summary.", - "type": "string", - "x-order": 1 - }, - "email_config": { - "description": "EmailConfig represents email configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - }, - "x-order": 2 - }, - "pagerduty_config": { - "description": "PagerDutyConfig represents PagerDuty configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "routing_key": { - "description": "The PagerDuty key for \"Events API v2\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 1 - }, - "service_key": { - "description": "The PagerDuty key for \"Prometheus\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 3 - }, - "slack_config": { - "description": "SlackConfig represents Slack configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "channel": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 4 - }, - "webhook_config": { - "description": "WebhookConfig represents webhook configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "url": { - "type": "string", - "x-order": 1 - }, - "http_config": { - "description": "HTTPConfig represents HTTP client configuration.", - "type": "object", - "properties": { - "basic_auth": { - "description": "BasicAuth represents basic HTTP auth configuration.", - "type": "object", - "properties": { - "username": { - "type": "string", - "x-order": 0 - }, - "password": { - "type": "string", - "x-order": 1 - }, - "password_file": { - "type": "string", - "x-order": 2 - } - }, - "x-order": 0 - }, - "bearer_token": { - "type": "string", - "x-order": 1 - }, - "bearer_token_file": { - "type": "string", - "x-order": 2 - }, - "tls_config": { - "type": "object", - "title": "TLSConfig represents TLS configuration for alertmanager\nhttps://prometheus.io/docs/alerting/latest/configuration/#tls_config", - "properties": { - "ca_file": { - "description": "A path to the CA certificate file to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 0 - }, - "cert_file": { - "description": "A path to the certificate file for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 1 - }, - "key_file": { - "description": "A path to the key file for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 2 - }, - "server_name": { - "description": "Name of the server.", - "type": "string", - "x-order": 3 - }, - "insecure_skip_verify": { - "description": "Disable validation of the server certificate.", - "type": "boolean", - "x-order": 4 - }, - "ca_file_content": { - "description": "CA certificate to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 5 - }, - "cert_file_content": { - "description": "A certificate for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 6 - }, - "key_file_content": { - "description": "A key for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 7 - } - }, - "x-order": 3 - }, - "proxy_url": { - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - }, - "max_alerts": { - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 5 - }, - "disabled": { - "description": "True if that channel is disabled.", - "type": "boolean", - "x-order": 6 - } - } - }, - "x-order": 17 - }, - "created_at": { - "description": "Rule creation time.", - "type": "string", - "format": "date-time", - "x-order": 18 - } - }, - "x-order": 5 - }, - "created_at": { - "description": "Alert creation time.", - "type": "string", - "format": "date-time", - "x-order": 6 - }, - "updated_at": { - "description": "Alert last update time.", - "type": "string", - "format": "date-time", - "x-order": 7 - } - } - }, - "x-order": 0 - }, - "totals": { - "description": "PageTotals represents total values for pagination.", - "type": "object", - "properties": { - "total_items": { - "description": "Total number of results.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "total_pages": { - "description": "Total number of pages.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Alerts/Toggle": { - "post": { - "description": "Pass empty list to apply toggle action to all existing alerts", - "tags": [ - "Alerts" - ], - "summary": "ToggleAlerts allows to switch alerts state between silenced and unsilenced.", - "operationId": "ToggleAlerts", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "alert_ids": { - "description": "List of alerts that silence state should be switched. If provided array is empty than all\nexisting alerts are switched.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - }, - "silenced": { - "description": "BooleanFlag represent a command to set some boolean property to true,\nto false, or avoid changing that property.\n\n - DO_NOT_CHANGE: Do not change boolean property. Default value.\n - TRUE: True.\n - FALSE: False.", - "type": "string", - "default": "DO_NOT_CHANGE", - "enum": [ - "DO_NOT_CHANGE", - "TRUE", - "FALSE" - ], - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Channels/Add": { - "post": { - "tags": [ - "Channels" - ], - "summary": "AddChannel adds notification channel.", - "operationId": "AddChannel", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "summary": { - "description": "Short human-readable summary.", - "type": "string", - "x-order": 0 - }, - "email_config": { - "description": "EmailConfig represents email configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - }, - "x-order": 1 - }, - "pagerduty_config": { - "description": "PagerDutyConfig represents PagerDuty configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "routing_key": { - "description": "The PagerDuty key for \"Events API v2\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 1 - }, - "service_key": { - "description": "The PagerDuty key for \"Prometheus\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 2 - }, - "slack_config": { - "description": "SlackConfig represents Slack configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "channel": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 3 - }, - "webhook_config": { - "description": "WebhookConfig represents webhook configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "url": { - "type": "string", - "x-order": 1 - }, - "http_config": { - "description": "HTTPConfig represents HTTP client configuration.", - "type": "object", - "properties": { - "basic_auth": { - "description": "BasicAuth represents basic HTTP auth configuration.", - "type": "object", - "properties": { - "username": { - "type": "string", - "x-order": 0 - }, - "password": { - "type": "string", - "x-order": 1 - }, - "password_file": { - "type": "string", - "x-order": 2 - } - }, - "x-order": 0 - }, - "bearer_token": { - "type": "string", - "x-order": 1 - }, - "bearer_token_file": { - "type": "string", - "x-order": 2 - }, - "tls_config": { - "type": "object", - "title": "TLSConfig represents TLS configuration for alertmanager\nhttps://prometheus.io/docs/alerting/latest/configuration/#tls_config", - "properties": { - "ca_file": { - "description": "A path to the CA certificate file to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 0 - }, - "cert_file": { - "description": "A path to the certificate file for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 1 - }, - "key_file": { - "description": "A path to the key file for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 2 - }, - "server_name": { - "description": "Name of the server.", - "type": "string", - "x-order": 3 - }, - "insecure_skip_verify": { - "description": "Disable validation of the server certificate.", - "type": "boolean", - "x-order": 4 - }, - "ca_file_content": { - "description": "CA certificate to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 5 - }, - "cert_file_content": { - "description": "A certificate for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 6 - }, - "key_file_content": { - "description": "A key for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 7 - } - }, - "x-order": 3 - }, - "proxy_url": { - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - }, - "max_alerts": { - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 4 - }, - "disabled": { - "description": "New channel status.", - "type": "boolean", - "x-order": 5 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "channel_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Channels/Change": { - "post": { - "tags": [ - "Channels" - ], - "summary": "ChangeChannel changes notification channel.", - "operationId": "ChangeChannel", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "channel_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable summary. Empty value will not change it.", - "type": "string", - "x-order": 1 - }, - "email_config": { - "description": "EmailConfig represents email configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - }, - "x-order": 2 - }, - "pagerduty_config": { - "description": "PagerDutyConfig represents PagerDuty configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "routing_key": { - "description": "The PagerDuty key for \"Events API v2\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 1 - }, - "service_key": { - "description": "The PagerDuty key for \"Prometheus\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 3 - }, - "slack_config": { - "description": "SlackConfig represents Slack configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "channel": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 4 - }, - "webhook_config": { - "description": "WebhookConfig represents webhook configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "url": { - "type": "string", - "x-order": 1 - }, - "http_config": { - "description": "HTTPConfig represents HTTP client configuration.", - "type": "object", - "properties": { - "basic_auth": { - "description": "BasicAuth represents basic HTTP auth configuration.", - "type": "object", - "properties": { - "username": { - "type": "string", - "x-order": 0 - }, - "password": { - "type": "string", - "x-order": 1 - }, - "password_file": { - "type": "string", - "x-order": 2 - } - }, - "x-order": 0 - }, - "bearer_token": { - "type": "string", - "x-order": 1 - }, - "bearer_token_file": { - "type": "string", - "x-order": 2 - }, - "tls_config": { - "type": "object", - "title": "TLSConfig represents TLS configuration for alertmanager\nhttps://prometheus.io/docs/alerting/latest/configuration/#tls_config", - "properties": { - "ca_file": { - "description": "A path to the CA certificate file to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 0 - }, - "cert_file": { - "description": "A path to the certificate file for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 1 - }, - "key_file": { - "description": "A path to the key file for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 2 - }, - "server_name": { - "description": "Name of the server.", - "type": "string", - "x-order": 3 - }, - "insecure_skip_verify": { - "description": "Disable validation of the server certificate.", - "type": "boolean", - "x-order": 4 - }, - "ca_file_content": { - "description": "CA certificate to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 5 - }, - "cert_file_content": { - "description": "A certificate for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 6 - }, - "key_file_content": { - "description": "A key for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 7 - } - }, - "x-order": 3 - }, - "proxy_url": { - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - }, - "max_alerts": { - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 5 - }, - "disabled": { - "description": "Enables or disables that channel. Should be set.", - "type": "boolean", - "x-order": 6 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Channels/List": { - "post": { - "tags": [ - "Channels" - ], - "summary": "ListChannels returns a list of all notifation channels.", - "operationId": "ListChannels", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "page_params": { - "description": "PageParams represents page request parameters for pagination.", - "type": "object", - "properties": { - "page_size": { - "description": "Maximum number of results per page.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "index": { - "description": "Index of the requested page, starts from 0.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "channels": { - "type": "array", - "items": { - "description": "Channel represents a single Notification Channel.\n\nreserved channels\n pushover_config = 5;\n opsgenie_config = 7;\n victorops_config = 9;\n wechat_config = 10;", - "type": "object", - "properties": { - "channel_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable summary.", - "type": "string", - "x-order": 1 - }, - "email_config": { - "description": "EmailConfig represents email configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - }, - "x-order": 2 - }, - "pagerduty_config": { - "description": "PagerDutyConfig represents PagerDuty configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "routing_key": { - "description": "The PagerDuty key for \"Events API v2\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 1 - }, - "service_key": { - "description": "The PagerDuty key for \"Prometheus\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 3 - }, - "slack_config": { - "description": "SlackConfig represents Slack configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "channel": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 4 - }, - "webhook_config": { - "description": "WebhookConfig represents webhook configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "url": { - "type": "string", - "x-order": 1 - }, - "http_config": { - "description": "HTTPConfig represents HTTP client configuration.", - "type": "object", - "properties": { - "basic_auth": { - "description": "BasicAuth represents basic HTTP auth configuration.", - "type": "object", - "properties": { - "username": { - "type": "string", - "x-order": 0 - }, - "password": { - "type": "string", - "x-order": 1 - }, - "password_file": { - "type": "string", - "x-order": 2 - } - }, - "x-order": 0 - }, - "bearer_token": { - "type": "string", - "x-order": 1 - }, - "bearer_token_file": { - "type": "string", - "x-order": 2 - }, - "tls_config": { - "type": "object", - "title": "TLSConfig represents TLS configuration for alertmanager\nhttps://prometheus.io/docs/alerting/latest/configuration/#tls_config", - "properties": { - "ca_file": { - "description": "A path to the CA certificate file to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 0 - }, - "cert_file": { - "description": "A path to the certificate file for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 1 - }, - "key_file": { - "description": "A path to the key file for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 2 - }, - "server_name": { - "description": "Name of the server.", - "type": "string", - "x-order": 3 - }, - "insecure_skip_verify": { - "description": "Disable validation of the server certificate.", - "type": "boolean", - "x-order": 4 - }, - "ca_file_content": { - "description": "CA certificate to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 5 - }, - "cert_file_content": { - "description": "A certificate for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 6 - }, - "key_file_content": { - "description": "A key for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 7 - } - }, - "x-order": 3 - }, - "proxy_url": { - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - }, - "max_alerts": { - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 5 - }, - "disabled": { - "description": "True if that channel is disabled.", - "type": "boolean", - "x-order": 6 - } - } - }, - "x-order": 0 - }, - "totals": { - "description": "PageTotals represents total values for pagination.", - "type": "object", - "properties": { - "total_items": { - "description": "Total number of results.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "total_pages": { - "description": "Total number of pages.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Channels/Remove": { - "post": { - "tags": [ - "Channels" - ], - "summary": "RemoveChannel removes notification channel.", - "operationId": "RemoveChannel", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "channel_id": { - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Rules/Create": { - "post": { - "tags": [ - "Rules" - ], - "summary": "CreateAlertRule creates Alerting rule.", - "operationId": "CreateAlertRule", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "template_name": { - "description": "Template name. Can't be specified simultaneously with source_rule_id.", - "type": "string", - "x-order": 0 - }, - "source_rule_id": { - "description": "ID of the rule that will be used as source. Can't be specified simultaneously with template_name.", - "type": "string", - "x-order": 1 - }, - "name": { - "description": "Rule name.", - "type": "string", - "x-order": 2 - }, - "disabled": { - "description": "New rule status.", - "type": "boolean", - "x-order": 3 - }, - "params": { - "description": "Rule parameters. All template parameters should be set.", - "type": "array", - "items": { - "description": "ParamValue represents a single rule parameter value for List, Change and Update APIs.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 1 - }, - "bool": { - "description": "Bool value.", - "type": "boolean", - "x-order": 2 - }, - "float": { - "description": "Float value.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "string": { - "description": "String value.", - "type": "string", - "x-order": 4 - } - } - }, - "x-order": 4 - }, - "for": { - "description": "Rule duration. Should be set.", - "type": "string", - "x-order": 5 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 6 - }, - "custom_labels": { - "description": "All custom labels to add or remove (with empty values) to default labels from template.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 7 - }, - "filters": { - "description": "Filters. Should be set.", - "type": "array", - "items": { - "description": "Filter repsents a single filter condition.", - "type": "object", - "properties": { - "type": { - "description": "FilterType represents filter matching type.\n\n - EQUAL: =\n\n!=\n NOT_EQUAL = 2;\n - REGEX: =~\n\n!~\n NOT_REGEX = 4;", - "type": "string", - "default": "FILTER_TYPE_INVALID", - "enum": [ - "FILTER_TYPE_INVALID", - "EQUAL", - "REGEX" - ], - "x-order": 0 - }, - "key": { - "type": "string", - "x-order": 1 - }, - "value": { - "type": "string", - "x-order": 2 - } - } - }, - "x-order": 8 - }, - "channel_ids": { - "description": "Channels. Should be set.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 9 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Rules/Delete": { - "post": { - "tags": [ - "Rules" - ], - "summary": "DeleteAlertRule deletes Alerting rule.", - "operationId": "DeleteAlertRule", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Rules/List": { - "post": { - "tags": [ - "Rules" - ], - "summary": "ListAlertRules returns a list of all Alerting rules.", - "operationId": "ListAlertRules", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "page_params": { - "description": "PageParams represents page request parameters for pagination.", - "type": "object", - "properties": { - "page_size": { - "description": "Maximum number of results per page.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "index": { - "description": "Index of the requested page, starts from 0.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 0 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "rules": { - "type": "array", - "items": { - "description": "Rule represents Alert Rule.", - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "Rule name.", - "type": "string", - "x-order": 1 - }, - "summary": { - "description": "Rule human-readable summary.", - "type": "string", - "x-order": 2 - }, - "template_name": { - "description": "Template used for this rule.", - "type": "string", - "x-order": 3 - }, - "disabled": { - "description": "True if that rule is disabled.", - "type": "boolean", - "x-order": 4 - }, - "expr_template": { - "description": "Expression template.", - "type": "string", - "x-order": 5 - }, - "expr": { - "description": "Expression filled with parameters.", - "type": "string", - "x-order": 6 - }, - "params_definitions": { - "description": "Expression parameters definitions.", - "type": "array", - "items": { - "description": "ParamDefinition represents a single query parameter.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable parameter summary.", - "type": "string", - "x-order": 1 - }, - "unit": { - "description": "ParamUnit represents template parameter unit.\n\n - PARAM_UNIT_INVALID: Invalid, unknown or absent.\n - PERCENTAGE: %\n - SECONDS: s", - "type": "string", - "default": "PARAM_UNIT_INVALID", - "enum": [ - "PARAM_UNIT_INVALID", - "PERCENTAGE", - "SECONDS" - ], - "x-order": 2 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 3 - }, - "bool": { - "description": "BoolParamDefinition represents boolean parameter's default value.", - "type": "object", - "properties": { - "default": { - "description": "BooleanFlag represent a command to set some boolean property to true,\nto false, or avoid changing that property.\n\n - DO_NOT_CHANGE: Do not change boolean property. Default value.\n - TRUE: True.\n - FALSE: False.", - "type": "string", - "default": "DO_NOT_CHANGE", - "enum": [ - "DO_NOT_CHANGE", - "TRUE", - "FALSE" - ], - "x-order": 0 - } - }, - "x-order": 4 - }, - "float": { - "description": "FloatParamDefinition represents float parameter's default value and valid range.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "number", - "format": "double", - "x-order": 1 - }, - "has_min": { - "description": "True if minimal valid value is set.", - "type": "boolean", - "x-order": 2 - }, - "min": { - "description": "Minimal valid value (inclusive) if has_min is true.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "has_max": { - "description": "True if maximal valid value is set.", - "type": "boolean", - "x-order": 4 - }, - "max": { - "description": "Maximal valid value (inclusive) if has_max is true.", - "type": "number", - "format": "double", - "x-order": 5 - } - }, - "x-order": 5 - }, - "string": { - "description": "StringParamDefinition represents string parameter's default value.", - "type": "object", - "properties": { - "has_default": { - "description": "True if default value is set.", - "type": "boolean", - "x-order": 0 - }, - "default": { - "description": "Default value if has_default is true.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 6 - } - } - }, - "x-order": 7 - }, - "params_values": { - "description": "Expression parameters values.", - "type": "array", - "items": { - "description": "ParamValue represents a single rule parameter value for List, Change and Update APIs.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 1 - }, - "bool": { - "description": "Bool value.", - "type": "boolean", - "x-order": 2 - }, - "float": { - "description": "Float value.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "string": { - "description": "String value.", - "type": "string", - "x-order": 4 - } - } - }, - "x-order": 8 - }, - "default_for": { - "description": "Default for duration.", - "type": "string", - "x-order": 9 - }, - "for": { - "description": "For duration.", - "type": "string", - "x-order": 10 - }, - "default_severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 11 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 12 - }, - "custom_labels": { - "description": "Custom labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 13 - }, - "labels": { - "description": "Labels.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 14 - }, - "annotations": { - "description": "Annotations.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 15 - }, - "filters": { - "description": "Filters.", - "type": "array", - "items": { - "description": "Filter repsents a single filter condition.", - "type": "object", - "properties": { - "type": { - "description": "FilterType represents filter matching type.\n\n - EQUAL: =\n\n!=\n NOT_EQUAL = 2;\n - REGEX: =~\n\n!~\n NOT_REGEX = 4;", - "type": "string", - "default": "FILTER_TYPE_INVALID", - "enum": [ - "FILTER_TYPE_INVALID", - "EQUAL", - "REGEX" - ], - "x-order": 0 - }, - "key": { - "type": "string", - "x-order": 1 - }, - "value": { - "type": "string", - "x-order": 2 - } - } - }, - "x-order": 16 - }, - "channels": { - "description": "Channels.", - "type": "array", - "items": { - "description": "Channel represents a single Notification Channel.\n\nreserved channels\n pushover_config = 5;\n opsgenie_config = 7;\n victorops_config = 9;\n wechat_config = 10;", - "type": "object", - "properties": { - "channel_id": { - "description": "Machine-readable ID.", - "type": "string", - "x-order": 0 - }, - "summary": { - "description": "Short human-readable summary.", - "type": "string", - "x-order": 1 - }, - "email_config": { - "description": "EmailConfig represents email configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 1 - } - }, - "x-order": 2 - }, - "pagerduty_config": { - "description": "PagerDutyConfig represents PagerDuty configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "routing_key": { - "description": "The PagerDuty key for \"Events API v2\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 1 - }, - "service_key": { - "description": "The PagerDuty key for \"Prometheus\" integration type. Exactly one key should be set.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 3 - }, - "slack_config": { - "description": "SlackConfig represents Slack configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "channel": { - "type": "string", - "x-order": 1 - } - }, - "x-order": 4 - }, - "webhook_config": { - "description": "WebhookConfig represents webhook configuration.", - "type": "object", - "properties": { - "send_resolved": { - "type": "boolean", - "x-order": 0 - }, - "url": { - "type": "string", - "x-order": 1 - }, - "http_config": { - "description": "HTTPConfig represents HTTP client configuration.", - "type": "object", - "properties": { - "basic_auth": { - "description": "BasicAuth represents basic HTTP auth configuration.", - "type": "object", - "properties": { - "username": { - "type": "string", - "x-order": 0 - }, - "password": { - "type": "string", - "x-order": 1 - }, - "password_file": { - "type": "string", - "x-order": 2 - } - }, - "x-order": 0 - }, - "bearer_token": { - "type": "string", - "x-order": 1 - }, - "bearer_token_file": { - "type": "string", - "x-order": 2 - }, - "tls_config": { - "type": "object", - "title": "TLSConfig represents TLS configuration for alertmanager\nhttps://prometheus.io/docs/alerting/latest/configuration/#tls_config", - "properties": { - "ca_file": { - "description": "A path to the CA certificate file to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 0 - }, - "cert_file": { - "description": "A path to the certificate file for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 1 - }, - "key_file": { - "description": "A path to the key file for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 2 - }, - "server_name": { - "description": "Name of the server.", - "type": "string", - "x-order": 3 - }, - "insecure_skip_verify": { - "description": "Disable validation of the server certificate.", - "type": "boolean", - "x-order": 4 - }, - "ca_file_content": { - "description": "CA certificate to validate the server certificate with.\nca_file and ca_file_content should not be set at the same time.", - "type": "string", - "x-order": 5 - }, - "cert_file_content": { - "description": "A certificate for client cert authentication to the server.\ncert_file and cert_file_content should not be set at the same time.", - "type": "string", - "x-order": 6 - }, - "key_file_content": { - "description": "A key for client cert authentication to the server.\nkey_file and key_file_content should not be set at the same time.", - "type": "string", - "x-order": 7 - } - }, - "x-order": 3 - }, - "proxy_url": { - "type": "string", - "x-order": 4 - } - }, - "x-order": 2 - }, - "max_alerts": { - "type": "integer", - "format": "int32", - "x-order": 3 - } - }, - "x-order": 5 - }, - "disabled": { - "description": "True if that channel is disabled.", - "type": "boolean", - "x-order": 6 - } - } - }, - "x-order": 17 - }, - "created_at": { - "description": "Rule creation time.", - "type": "string", - "format": "date-time", - "x-order": 18 - } - } - }, - "x-order": 0 - }, - "totals": { - "description": "PageTotals represents total values for pagination.", - "type": "object", - "properties": { - "total_items": { - "description": "Total number of results.", - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "total_pages": { - "description": "Total number of pages.", - "type": "integer", - "format": "int32", - "x-order": 1 - } - }, - "x-order": 1 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Rules/Toggle": { - "post": { - "tags": [ - "Rules" - ], - "summary": "ToggleAlertRule allows to switch between disabled and enabled states of an Alert Rule.", - "operationId": "ToggleAlertRule", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - }, - "disabled": { - "description": "BooleanFlag represent a command to set some boolean property to true,\nto false, or avoid changing that property.\n\n - DO_NOT_CHANGE: Do not change boolean property. Default value.\n - TRUE: True.\n - FALSE: False.", - "type": "string", - "default": "DO_NOT_CHANGE", - "enum": [ - "DO_NOT_CHANGE", - "TRUE", - "FALSE" - ], - "x-order": 1 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, - "/v1/management/ia/Rules/Update": { - "post": { - "tags": [ - "Rules" - ], - "summary": "UpdateAlertRule updates Alerting rule.", - "operationId": "UpdateAlertRule", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "rule_id": { - "description": "Rule ID.", - "type": "string", - "x-order": 0 - }, - "name": { - "description": "Rule name. Should be set.", - "type": "string", - "x-order": 1 - }, - "disabled": { - "description": "New rule status. Should be set.", - "type": "boolean", - "x-order": 2 - }, - "params": { - "description": "Rule parameters. All template parameters should be set.", - "type": "array", - "items": { - "description": "ParamValue represents a single rule parameter value for List, Change and Update APIs.", - "type": "object", - "properties": { - "name": { - "description": "Machine-readable name (ID) that is used in expression.", - "type": "string", - "x-order": 0 - }, - "type": { - "description": "ParamType represents template parameter type.", - "type": "string", - "default": "PARAM_TYPE_INVALID", - "enum": [ - "PARAM_TYPE_INVALID", - "BOOL", - "FLOAT", - "STRING" - ], - "x-order": 1 - }, - "bool": { - "description": "Bool value.", - "type": "boolean", - "x-order": 2 - }, - "float": { - "description": "Float value.", - "type": "number", - "format": "double", - "x-order": 3 - }, - "string": { - "description": "String value.", - "type": "string", - "x-order": 4 - } - } - }, - "x-order": 3 - }, - "for": { - "description": "Rule duration. Should be set.", - "type": "string", - "x-order": 4 - }, - "severity": { - "description": "Severity represents severity level of the check result or alert.", - "type": "string", - "default": "SEVERITY_INVALID", - "enum": [ - "SEVERITY_INVALID", - "SEVERITY_EMERGENCY", - "SEVERITY_ALERT", - "SEVERITY_CRITICAL", - "SEVERITY_ERROR", - "SEVERITY_WARNING", - "SEVERITY_NOTICE", - "SEVERITY_INFO", - "SEVERITY_DEBUG" - ], - "x-order": 5 - }, - "custom_labels": { - "description": "All custom labels to add or remove (with empty values) to default labels from template.", - "type": "object", - "additionalProperties": { - "type": "string" - }, - "x-order": 6 - }, - "filters": { - "description": "Filters. Should be set.", - "type": "array", - "items": { - "description": "Filter repsents a single filter condition.", - "type": "object", - "properties": { - "type": { - "description": "FilterType represents filter matching type.\n\n - EQUAL: =\n\n!=\n NOT_EQUAL = 2;\n - REGEX: =~\n\n!~\n NOT_REGEX = 4;", - "type": "string", - "default": "FILTER_TYPE_INVALID", - "enum": [ - "FILTER_TYPE_INVALID", - "EQUAL", - "REGEX" - ], - "x-order": 0 - }, - "key": { - "type": "string", - "x-order": 1 - }, - "value": { - "type": "string", - "x-order": 2 - } - } - }, - "x-order": 7 - }, - "channel_ids": { - "description": "Channels. Should be set.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 8 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@type": { - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - } - }, - "securityDefinitions": { - "basicAuth": { - "type": "basic" - } - }, - "security": [ - { - "basicAuth": [] - } - ], - "tags": [ - { - "name": "Components" - }, - { - "name": "DBClusters" - }, - { - "name": "Kubernetes" - }, - { - "name": "LogsAPI" - }, - { - "name": "PSMDBClusters" - }, - { - "name": "PXCClusters" - }, - { - "name": "Alerts" - }, - { - "name": "Channels" - }, - { - "name": "Rules" - }, - { - "name": "Alerting" - }, - { - "name": "Artifacts" - }, - { - "name": "Backups" - }, - { - "name": "Locations" - }, - { - "name": "RestoreHistory" - }, - { - "name": "Collector" - }, - { - "name": "Filters" - }, - { - "name": "MetricsNames" - }, - { - "name": "ObjectDetails" - }, - { - "name": "Profile" - }, - { - "name": "Platform" - } - ], - "x-readme": { - "samples-languages": [ - "curl", - "go", - "node", - "python" - ] - } -} \ No newline at end of file diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 3ce02bed10..afb58c022a 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -12,7 +12,7 @@ "swagger": "2.0", "info": { "title": "PMM API", - "version": "public" + "version": "v2" }, "paths": { "/logs.zip": { @@ -26562,5 +26562,6 @@ "node", "python" ] - } + }, + "x-readme-id": "626badcabbc59c02acc1a53f" } \ No newline at end of file diff --git a/docs/api/advisor-api/advisors-and-advisor-checks.md b/docs/api/advisor-api/advisors-and-advisor-checks.md index 7a50116fde..ae9d17337c 100644 --- a/docs/api/advisor-api/advisors-and-advisor-checks.md +++ b/docs/api/advisor-api/advisors-and-advisor-checks.md @@ -2,6 +2,6 @@ title: Percona Advisors and Advisors checks slug: advisors-and-advisor-checks category: 6291050b9400a1001ae1877d -order: 2 +order: 1 hidden: 0 --- diff --git a/docs/api/advisor-api/failed-checks.md b/docs/api/advisor-api/failed-checks.md index b240596293..a112246bd2 100644 --- a/docs/api/advisor-api/failed-checks.md +++ b/docs/api/advisor-api/failed-checks.md @@ -2,6 +2,6 @@ title: List of problems detected by Advisors slug: failed-checks category: 6291050b9400a1001ae1877d -order: 1 +order: 2 hidden: 0 --- diff --git a/docs/api/advisor-api/overview.md b/docs/api/advisor-api/overview.md index f791f36668..ae9fa13284 100644 --- a/docs/api/advisor-api/overview.md +++ b/docs/api/advisor-api/overview.md @@ -1,6 +1,6 @@ --- title: Overview -slug: percona-advisors +slug: pmm-advisors category: 6291050b9400a1001ae1877d order: 0 --- @@ -10,6 +10,6 @@ This section is about API for managing Percona [Advisors](https://docs.percona.c This section has three main subsections. -- In [List of problems detected by Advisors](reference/failed-checks) you can find API to get information about potential problems with your Infrastructure detected by Advisors. -- [Percona Advisors and Advisors checks](reference/advisors-and-advisor-checks) lists all Advisors and Advisor Checks available in your PMM. -- [Changing Advisors and Advisor checks](reference/changing-advisor-checks) will help you automate Advisor checks modification if needed. +- In [List of problems detected by Advisors](failed-checks) you can find API to get information about potential problems with your Infrastructure detected by Advisors. +- [Percona Advisors and Advisors checks](advisors-and-advisor-checks) lists all Advisors and Advisor Checks available in your PMM. +- [Changing Advisors and Advisor checks](changing-advisor-checks) will help you automate Advisor checks modification if needed. diff --git a/docs/api/backups/list-locations.md b/docs/api/backups/list-locations.md index bb64df8151..97723f3152 100644 --- a/docs/api/backups/list-locations.md +++ b/docs/api/backups/list-locations.md @@ -2,7 +2,7 @@ title: List Locations slug: listlocations excerpt: ListLocations returns a list of all backup locations. -category: 626badcabbc59c02acc1a540 +category: 66aa56507e69ed004a736efe --- The following API call will list all the available backup locations: diff --git a/docs/api/backups/overview.md b/docs/api/backups/overview.md new file mode 100644 index 0000000000..c4f8b2915e --- /dev/null +++ b/docs/api/backups/overview.md @@ -0,0 +1,24 @@ +--- +title: Overview +slug: database-backups +category: 66aa56507e69ed004a736efe +order: 0 +--- + + +This section provides a set of API endpoints that allow to backup databases. Currently, PMM Backup Management works with the following database families: + +- MongoDB (Generally Available) +- MySQL (in Technical Preview) + + +To be able to make a backup, you should start by [preparing a backup location](https://docs.percona.com/percona-monitoring-and-management/get-started/backup/prepare_storage_location.html#prepare-a-location-for-local-backups), which is where the backup artifacts will be physically stored. Although the backup location can be re-used to store multiple backups, we generally recommend to create a backup location per database service, which will help organize your storage. + +Here a few other references to : + +- [Make a backup](startbackup) +- [Restore the database from a backup](restorebackup) +- [List restore history items](listrestorehistory) +- [List available backup locations](listlocations) + +Read [more](https://docs.percona.com/percona-monitoring-and-management/get-started/backup/index.html). diff --git a/docs/api/backups/restore-backup.md b/docs/api/backups/restore-backup.md index 50f212d5e4..52e9ec9dbc 100644 --- a/docs/api/backups/restore-backup.md +++ b/docs/api/backups/restore-backup.md @@ -2,8 +2,7 @@ title: Restore from a backup slug: restorebackup excerpt: This endpoint allows to restore a database from a previously made backup. -category: 626badcabbc59c02acc1a540 -order: 1 +category: 66aa56507e69ed004a736efe --- PMM can backup the monitored services. diff --git a/docs/api/backups/start-backup.md b/docs/api/backups/start-backup.md index 918508c0c4..49939ca46a 100644 --- a/docs/api/backups/start-backup.md +++ b/docs/api/backups/start-backup.md @@ -2,8 +2,7 @@ title: Make a backup slug: startbackup excerpt: This endpoint allows to make an unscheduled, or ad-hoc, backup of a given service. -category: 626badcabbc59c02acc1a540 -order: 0 +category: 66aa56507e69ed004a736efe --- PMM can backup the monitored services. diff --git a/docs/api/inventory/add-node.md b/docs/api/inventory/add-node.md index 79b725c3ac..67adcbbe54 100644 --- a/docs/api/inventory/add-node.md +++ b/docs/api/inventory/add-node.md @@ -14,8 +14,6 @@ Let's see how to add a Node of type `GENERIC_NODE` using the old and new API cal Old API call: -````shell: - ```shell curl --insecure -X POST \ -H 'Authorization: Basic YWRtaW46YWRtaW4=' \ @@ -34,7 +32,7 @@ curl --insecure -X POST \ } } ' -```` +``` New API call: From 678bcedf8cd83eb8fa2c94d385a62afac2c5fa9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Aug 2024 08:29:12 +0000 Subject: [PATCH 25/70] Bump github.com/hashicorp/raft from 1.6.0 to 1.7.0 (#3109) Bumps [github.com/hashicorp/raft](https://github.com/hashicorp/raft) from 1.6.0 to 1.7.0. - [Release notes](https://github.com/hashicorp/raft/releases) - [Changelog](https://github.com/hashicorp/raft/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/raft/compare/v1.6.0...v1.7.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/raft 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 b370d38e17..6f9e404d34 100644 --- a/go.mod +++ b/go.mod @@ -49,7 +49,7 @@ require ( github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 github.com/hashicorp/go-version v1.6.0 - github.com/hashicorp/raft v1.6.0 + github.com/hashicorp/raft v1.7.0 github.com/jmoiron/sqlx v1.3.5 github.com/jotaen/kong-completion v0.0.5 github.com/lib/pq v1.10.9 @@ -124,7 +124,7 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.2 // indirect github.com/hashicorp/go-msgpack/v2 v2.1.1 // indirect github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect diff --git a/go.sum b/go.sum index 60bb0df7d7..52d32a358b 100644 --- a/go.sum +++ b/go.sum @@ -416,8 +416,8 @@ github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= +github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -446,8 +446,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/raft v1.6.0 h1:tkIAORZy2GbJ2Trp5eUSggLXDPOJLXC+JJLNMMqtgtM= -github.com/hashicorp/raft v1.6.0/go.mod h1:Xil5pDgeGwRWuX4uPUmwa+7Vagg4N804dz6mhNi6S7o= +github.com/hashicorp/raft v1.7.0 h1:4u24Qn6lQ6uwziM++UgsyiT64Q8GyRn43CV41qPiz1o= +github.com/hashicorp/raft v1.7.0/go.mod h1:N1sKh6Vn47mrWvEArQgILTyng8GoDRNYlgKyK7PMjs0= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= From da25a0cd6ad24faa0d6d9d09e113223897bb1216 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Fri, 2 Aug 2024 11:16:31 +0300 Subject: [PATCH 26/70] PMM-12985 Create v3 API infra --- .github/workflows/doc.yml | 18 +++++++----------- admin/commands/management/management.go | 4 +--- api/swagger/header.json | 4 ++-- api/swagger/swagger.json | 4 ++-- docs/api/access-control/access-control.md | 2 +- .../advisor-api/advisors-and-advisor-checks.md | 2 +- .../api/advisor-api/changing-advisor-checks.md | 2 +- docs/api/advisor-api/failed-checks.md | 2 +- docs/api/advisor-api/overview.md | 2 +- docs/api/backups/list-locations.md | 2 +- docs/api/backups/overview.md | 2 +- docs/api/backups/restore-backup.md | 2 +- docs/api/backups/start-backup.md | 2 +- docs/api/inventory/add-agent.md | 2 +- docs/api/inventory/add-node.md | 2 +- docs/api/inventory/add-service.md | 2 +- docs/api/inventory/change-agent.md | 2 +- docs/api/inventory/list-nodes.md | 2 +- docs/api/inventory/list-services.md | 2 +- .../account-management/bulk-add-users.md | 4 ++-- .../change-admin-password.md | 4 ++-- docs/api/pmm-server-config/overview.md | 2 +- .../pmm-server-config/pmm-server-settings.md | 2 +- .../pmm-server-troubleshooting.md | 2 +- .../pmm-server-config/pmm-server-upgrade.md | 2 +- .../pmm-server-config/troubleshooting/logs.md | 2 +- .../user-account-management.md | 2 +- docs/api/welcome/authentication.md | 2 +- docs/api/welcome/introduction.md | 2 +- docs/api/welcome/monitoring.md | 2 +- managed/cmd/pmm-managed/main.go | 3 +-- qan-api2/main.go | 3 +-- 32 files changed, 42 insertions(+), 50 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 4aefa14550..6174390dc0 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -14,9 +14,6 @@ jobs: sync: name: Sync runs-on: ubuntu-22.04 - env: - VERSION: v2 - ID: 626badcabbc59c02acc1a53f steps: - name: Check out code @@ -32,12 +29,11 @@ jobs: echo "VERSION=$VERSION" >> $GITHUB_ENV echo "ID=$ID" >> $GITHUB_ENV - - name: API - uses: readmeio/rdme@v8 - with: - rdme: openapi ./api/swagger/swagger.json --id=${{ env.ID }} --key=${{ secrets.README_TOKEN }} + - name: Provision rdme + run: npm install -g rdme - - name: Markdown docs - uses: readmeio/rdme@v8 - with: - rdme: docs docs/api --version=${{ env.VERSION }} --key=${{ secrets.README_TOKEN }} + - name: Sync API spec + run: rdme openapi ./api/swagger/swagger.json --id=${{ env.ID }} --key=${{ secrets.README_TOKEN }} + + - name: Sync Markdown docs + run: rdme docs docs/api --version=${{ env.VERSION }} --key=${{ secrets.README_TOKEN }} diff --git a/admin/commands/management/management.go b/admin/commands/management/management.go index 6d3921e9f5..e8e88e2f63 100644 --- a/admin/commands/management/management.go +++ b/admin/commands/management/management.go @@ -15,9 +15,7 @@ // Package management provides management commands. package management -import ( - "github.com/percona/pmm/api/inventory/v1/types" -) +import "github.com/percona/pmm/api/inventory/v1/types" var ( allNodeTypes = map[string]string{ diff --git a/api/swagger/header.json b/api/swagger/header.json index 90c8445d6f..15009b0031 100644 --- a/api/swagger/header.json +++ b/api/swagger/header.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "title": "PMM API", - "version": "v2" + "version": "v3" }, "schemes": [ "https", @@ -26,5 +26,5 @@ "python" ] }, - "x-readme-id": "626badcabbc59c02acc1a53f" + "x-readme-id": "622892a957a7410330bc6184" } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index a69241f74f..765fbdcdd3 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -12,7 +12,7 @@ "swagger": "2.0", "info": { "title": "PMM API", - "version": "v2" + "version": "v3" }, "paths": { "/v1/actions/{action_id}": { @@ -27172,5 +27172,5 @@ "python" ] }, - "x-readme-id": "626badcabbc59c02acc1a53f" + "x-readme-id": "622892a957a7410330bc6184" } \ No newline at end of file diff --git a/docs/api/access-control/access-control.md b/docs/api/access-control/access-control.md index d1cf0d6a87..17aeba9c43 100644 --- a/docs/api/access-control/access-control.md +++ b/docs/api/access-control/access-control.md @@ -1,7 +1,7 @@ --- title: Access Control slug: access-control -category: 64e49e26498dc6002b62ebf4 +category: 66aca8d40bf230001846b567 --- ## Overview diff --git a/docs/api/advisor-api/advisors-and-advisor-checks.md b/docs/api/advisor-api/advisors-and-advisor-checks.md index ae9d17337c..d39b0289b3 100644 --- a/docs/api/advisor-api/advisors-and-advisor-checks.md +++ b/docs/api/advisor-api/advisors-and-advisor-checks.md @@ -1,7 +1,7 @@ --- title: Percona Advisors and Advisors checks slug: advisors-and-advisor-checks -category: 6291050b9400a1001ae1877d +category: 66acabbe485c6000126b0499 order: 1 hidden: 0 --- diff --git a/docs/api/advisor-api/changing-advisor-checks.md b/docs/api/advisor-api/changing-advisor-checks.md index 36265f0c63..240ee068d3 100644 --- a/docs/api/advisor-api/changing-advisor-checks.md +++ b/docs/api/advisor-api/changing-advisor-checks.md @@ -1,7 +1,7 @@ --- title: Changing Advisors and Advisor checks slug: changing-advisor-checks -category: 6291050b9400a1001ae1877d +category: 66acabbe485c6000126b0499 order: 3 hidden: 0 --- diff --git a/docs/api/advisor-api/failed-checks.md b/docs/api/advisor-api/failed-checks.md index a112246bd2..4e10586a4f 100644 --- a/docs/api/advisor-api/failed-checks.md +++ b/docs/api/advisor-api/failed-checks.md @@ -1,7 +1,7 @@ --- title: List of problems detected by Advisors slug: failed-checks -category: 6291050b9400a1001ae1877d +category: 66acabbe485c6000126b0499 order: 2 hidden: 0 --- diff --git a/docs/api/advisor-api/overview.md b/docs/api/advisor-api/overview.md index ae9fa13284..7d0e1b648c 100644 --- a/docs/api/advisor-api/overview.md +++ b/docs/api/advisor-api/overview.md @@ -1,7 +1,7 @@ --- title: Overview slug: pmm-advisors -category: 6291050b9400a1001ae1877d +category: 66acabbe485c6000126b0499 order: 0 --- diff --git a/docs/api/backups/list-locations.md b/docs/api/backups/list-locations.md index 97723f3152..7834ccd6c5 100644 --- a/docs/api/backups/list-locations.md +++ b/docs/api/backups/list-locations.md @@ -2,7 +2,7 @@ title: List Locations slug: listlocations excerpt: ListLocations returns a list of all backup locations. -category: 66aa56507e69ed004a736efe +category: 66acac6024b4bc0022d980f3 --- The following API call will list all the available backup locations: diff --git a/docs/api/backups/overview.md b/docs/api/backups/overview.md index c4f8b2915e..b7b520cfeb 100644 --- a/docs/api/backups/overview.md +++ b/docs/api/backups/overview.md @@ -1,7 +1,7 @@ --- title: Overview slug: database-backups -category: 66aa56507e69ed004a736efe +category: 66acac6024b4bc0022d980f3 order: 0 --- diff --git a/docs/api/backups/restore-backup.md b/docs/api/backups/restore-backup.md index feb19c1528..31589c3461 100644 --- a/docs/api/backups/restore-backup.md +++ b/docs/api/backups/restore-backup.md @@ -2,7 +2,7 @@ title: Restore from a backup slug: restorebackup excerpt: This endpoint allows to restore a database from a previously made backup. -category: 66aa56507e69ed004a736efe +category: 66acac6024b4bc0022d980f3 --- PMM can backup the monitored services. diff --git a/docs/api/backups/start-backup.md b/docs/api/backups/start-backup.md index 788f7ffbe8..fcb935660b 100644 --- a/docs/api/backups/start-backup.md +++ b/docs/api/backups/start-backup.md @@ -2,7 +2,7 @@ title: Make a backup slug: startbackup excerpt: This endpoint allows to make an unscheduled, or ad-hoc, backup of a given service. -category: 66aa56507e69ed004a736efe +category: 66acac6024b4bc0022d980f3 --- PMM can backup the monitored services. diff --git a/docs/api/inventory/add-agent.md b/docs/api/inventory/add-agent.md index 71eef04c71..6c77ea95f4 100644 --- a/docs/api/inventory/add-agent.md +++ b/docs/api/inventory/add-agent.md @@ -1,7 +1,7 @@ --- title: Add an Agent slug: addagent -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## Add an Agent diff --git a/docs/api/inventory/add-node.md b/docs/api/inventory/add-node.md index 1a96ed40ec..6cfe8529ed 100644 --- a/docs/api/inventory/add-node.md +++ b/docs/api/inventory/add-node.md @@ -1,7 +1,7 @@ --- title: Add a Node slug: addnode -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## Add a Node diff --git a/docs/api/inventory/add-service.md b/docs/api/inventory/add-service.md index c37bfeb819..406e24d06e 100644 --- a/docs/api/inventory/add-service.md +++ b/docs/api/inventory/add-service.md @@ -1,7 +1,7 @@ --- title: Add a Service slug: addservice -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## Add a Service diff --git a/docs/api/inventory/change-agent.md b/docs/api/inventory/change-agent.md index a3dc043886..5db94ac192 100644 --- a/docs/api/inventory/change-agent.md +++ b/docs/api/inventory/change-agent.md @@ -1,7 +1,7 @@ --- title: Change Agent Attributes slug: changeagent -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## Change Agent Attributes diff --git a/docs/api/inventory/list-nodes.md b/docs/api/inventory/list-nodes.md index 2ba49557dd..5709c8b8f5 100644 --- a/docs/api/inventory/list-nodes.md +++ b/docs/api/inventory/list-nodes.md @@ -1,7 +1,7 @@ --- title: List Nodes slug: listnodes -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## List Nodes diff --git a/docs/api/inventory/list-services.md b/docs/api/inventory/list-services.md index a26f97c6a6..3c32f8bc0b 100644 --- a/docs/api/inventory/list-services.md +++ b/docs/api/inventory/list-services.md @@ -1,7 +1,7 @@ --- title: List Services slug: listservices -category: 626de009b977e3003179f7dd +category: 66aca9bf17142b005ad4e9fa --- ## List Services diff --git a/docs/api/pmm-server-config/account-management/bulk-add-users.md b/docs/api/pmm-server-config/account-management/bulk-add-users.md index 43aede9d08..4a2de7ca90 100644 --- a/docs/api/pmm-server-config/account-management/bulk-add-users.md +++ b/docs/api/pmm-server-config/account-management/bulk-add-users.md @@ -1,8 +1,8 @@ --- title: Create user accounts slug: bulk-add-users -category: 626bd6a45c6ea70129427eff -parentDoc: 626be9a93ab1240284d0d27d +category: 66acab7b0bf230001846b5e2 +parentDoc: 66acad52c21a1a0036295235 order: 1 --- diff --git a/docs/api/pmm-server-config/account-management/change-admin-password.md b/docs/api/pmm-server-config/account-management/change-admin-password.md index de935a1838..910ecb52aa 100644 --- a/docs/api/pmm-server-config/account-management/change-admin-password.md +++ b/docs/api/pmm-server-config/account-management/change-admin-password.md @@ -1,8 +1,8 @@ --- title: Change the administrator's password slug: change-admin-password -category: 626bd6a45c6ea70129427eff -parentDoc: 626be9a93ab1240284d0d27d +category: 66acab7b0bf230001846b5e2 +parentDoc: 66acad52c21a1a0036295235 order: 0 --- diff --git a/docs/api/pmm-server-config/overview.md b/docs/api/pmm-server-config/overview.md index 69e4a9b27c..ac269b3533 100644 --- a/docs/api/pmm-server-config/overview.md +++ b/docs/api/pmm-server-config/overview.md @@ -1,7 +1,7 @@ --- title: Overview slug: pmm-server-configuration -category: 626bd6a45c6ea70129427eff +category: 66acab7b0bf230001846b5e2 order: 0 --- diff --git a/docs/api/pmm-server-config/pmm-server-settings.md b/docs/api/pmm-server-config/pmm-server-settings.md index e9923b15ca..e9e95df6c7 100644 --- a/docs/api/pmm-server-config/pmm-server-settings.md +++ b/docs/api/pmm-server-config/pmm-server-settings.md @@ -1,7 +1,7 @@ --- title: PMM Server Settings slug: pmm-server-settings -category: 626bd6a45c6ea70129427eff +category: 66acab7b0bf230001846b5e2 order: 2 --- diff --git a/docs/api/pmm-server-config/pmm-server-troubleshooting.md b/docs/api/pmm-server-config/pmm-server-troubleshooting.md index 58e23de2d6..7b1bf8d931 100644 --- a/docs/api/pmm-server-config/pmm-server-troubleshooting.md +++ b/docs/api/pmm-server-config/pmm-server-troubleshooting.md @@ -1,7 +1,7 @@ --- title: Troubleshooting slug: pmm-server-troubleshooting -category: 626bd6a45c6ea70129427eff +category: 66acab7b0bf230001846b5e2 order: 4 hidden: 0 --- diff --git a/docs/api/pmm-server-config/pmm-server-upgrade.md b/docs/api/pmm-server-config/pmm-server-upgrade.md index ae5116a0d6..012db77a63 100644 --- a/docs/api/pmm-server-config/pmm-server-upgrade.md +++ b/docs/api/pmm-server-config/pmm-server-upgrade.md @@ -1,7 +1,7 @@ --- title: Upgrade your PMM Server slug: pmm-server-upgrade -category: 626bd6a45c6ea70129427eff +category: 66acab7b0bf230001846b5e2 order: 3 --- diff --git a/docs/api/pmm-server-config/troubleshooting/logs.md b/docs/api/pmm-server-config/troubleshooting/logs.md index dbb4b30b3f..97439aaeeb 100644 --- a/docs/api/pmm-server-config/troubleshooting/logs.md +++ b/docs/api/pmm-server-config/troubleshooting/logs.md @@ -1,7 +1,7 @@ --- title: Logs slug: "logs" -category: 626badcabbc59c02acc1a540 +category: 66acab7b0bf230001846b5e2 --- Sometimes users need to troubleshoot an issue. PMM Server offers an ability to download the logs as well as configuration of its components. diff --git a/docs/api/pmm-server-config/user-account-management.md b/docs/api/pmm-server-config/user-account-management.md index b5fac01365..01d53fa149 100644 --- a/docs/api/pmm-server-config/user-account-management.md +++ b/docs/api/pmm-server-config/user-account-management.md @@ -1,7 +1,7 @@ --- title: User account management slug: pmm-server-config-security -category: 626bd6a45c6ea70129427eff +category: 66acab7b0bf230001846b5e2 order: 1 --- diff --git a/docs/api/welcome/authentication.md b/docs/api/welcome/authentication.md index cec8d37873..a6c737023b 100644 --- a/docs/api/welcome/authentication.md +++ b/docs/api/welcome/authentication.md @@ -1,7 +1,7 @@ --- title: Authentication slug: authentication -category: 651bd218baa868000c212203 +category: 66aca6ddfd9bfe004c97cd48 order: 1 --- diff --git a/docs/api/welcome/introduction.md b/docs/api/welcome/introduction.md index 454c89171c..fffbc9a29c 100644 --- a/docs/api/welcome/introduction.md +++ b/docs/api/welcome/introduction.md @@ -1,7 +1,7 @@ --- title: Introduction slug: introduction -category: 651bd218baa868000c212203 +category: 66aca6ddfd9bfe004c97cd48 order: 0 --- diff --git a/docs/api/welcome/monitoring.md b/docs/api/welcome/monitoring.md index 55a9570353..5ca61a84b9 100644 --- a/docs/api/welcome/monitoring.md +++ b/docs/api/welcome/monitoring.md @@ -1,7 +1,7 @@ --- title: Monitoring slug: monitoring -category: 651bd218baa868000c212203 +category: 66aca6ddfd9bfe004c97cd48 order: 2 --- diff --git a/managed/cmd/pmm-managed/main.go b/managed/cmd/pmm-managed/main.go index 89a006f59f..4bb4ee1a02 100644 --- a/managed/cmd/pmm-managed/main.go +++ b/managed/cmd/pmm-managed/main.go @@ -348,8 +348,7 @@ func runHTTP1Server(ctx context.Context, deps *http1ServerDeps) { proxyMux := grpc_gateway.NewServeMux( grpc_gateway.WithMarshalerOption(grpc_gateway.MIMEWildcard, marshaller), grpc_gateway.WithErrorHandler(pmmerrors.PMMHTTPErrorHandler), - grpc_gateway.WithRoutingErrorHandler(pmmerrors.PMMRoutingErrorHandler), - ) + grpc_gateway.WithRoutingErrorHandler(pmmerrors.PMMRoutingErrorHandler)) opts := []grpc.DialOption{ grpc.WithTransportCredentials(insecure.NewCredentials()), diff --git a/qan-api2/main.go b/qan-api2/main.go index 2d982afb3f..382bff4e38 100644 --- a/qan-api2/main.go +++ b/qan-api2/main.go @@ -149,8 +149,7 @@ func runJSONServer(ctx context.Context, grpcBindF, jsonBindF string) { proxyMux := grpc_gateway.NewServeMux( grpc_gateway.WithMarshalerOption(grpc_gateway.MIMEWildcard, marshaller), - grpc_gateway.WithRoutingErrorHandler(pmmerrors.PMMRoutingErrorHandler), - ) + grpc_gateway.WithRoutingErrorHandler(pmmerrors.PMMRoutingErrorHandler)) opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} type registrar func(context.Context, *grpc_gateway.ServeMux, string, []grpc.DialOption) error From ffea77569b9e9dd0ce99a51e44c1aca612fdc19a Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Sat, 3 Aug 2024 10:48:18 +0300 Subject: [PATCH 27/70] PMM-12940 Run watchtower with AMI. (#3074) * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 Run watchtower next to pmm server container. * PMM-12940 No restart container. * PMM-12940 Increase disk space. * PMM-12940 AMI Improvements. * PMM-13053 Set instance ID as password. * PMM-13053 Add role. * PMM-12940 volume mount. * PMM-12940 user mapping. * PMM-12940 fix init-admin-password script. * PMM-12940 fix roles init order. * PMM-12940 fix roles init order. * PMM-12940 Distribution method. * PMM-12940 Make init-admin-password work. * PMM-12940 Make init-admin-password wait until container is healthy. * PMM-12940 PMM init order. * PMM-12940 fix init-admin-password ansible job. * PMM-12940 revert moving of lvm-init. * PMM-12940 home directory and initialization. * PMM-12940 home directory and initialization. * PMM-12940 Fix test. * PMM-12940 Fix initizalization. * PMM-12940 Fix build. * PMM-12940 Fix build. * PMM-12940 Fix linters. * PMM-12940 Fix linters. * PMM-12940 Fix linters. * PMM-12940 Set need_initialization correctly. * PMM-12940 remove must setup. * PMM-12940 use FB(should be reverted). * PMM-12940 improve entrypoint. * PMM-12940 use new PMM Image. * PMM-12940 move init admin password into container. * PMM-12940 detect AMI distribution. * PMM-12940 default env var for PMM Server Image. * PMM-12940 use new FB. * PMM-12940 Fix build. * PMM-12940 print environment file content. * PMM-12940 fix entrypoint. * PMM-12940 fix pmm distribution detection. * PMM-12940 fix AMI detection. * PMM-12940 fix AMI detection. * PMM-12940 fix AMI detection. * PMM-12940 change order on AMI build. * PMM-12940 change admin user to pmm user in ansible. * PMM-12940 fix logic of change admin password. * PMM-12940 Drop additional file. * PMM-12940 use ENV instead of file for AMI distribution. * PMM-13053 Cleanup. * PMM-13053 fix tests. * PMM-13053 Add changelog. * PMM-13063 remove unnecessary ansible step. * PMM-13063 use 3-dev-latest instead of FB in makefile. * PMM-12940 use custom docker image for OVF. * PMM-13280 create .ssh directory on OVF. * PMM-12940 ignore PMM ready errors. * PMM-12940 create empty authorized_keys file. * PMM-12940 update descriptors. --------- Co-authored-by: Talha Bin Rizwan --- api-tests/server/auth_test.go | 91 ---- .../aws_instance_check_parameters.go | 160 ------- .../aws_instance_check_responses.go | 369 --------------- .../server_service/server_service_client.go | 41 -- api/server/v1/json/v1.json | 59 --- api/server/v1/server.pb.go | 421 ++++++------------ api/server/v1/server.pb.gw.go | 81 ---- api/server/v1/server.pb.validate.go | 215 --------- api/server/v1/server.proto | 15 - api/server/v1/server_grpc.pb.go | 41 -- api/swagger/swagger-dev.json | 59 --- api/swagger/swagger.json | 59 --- build/Makefile | 6 +- .../init-admin-password-ami/tasks/main.yml | 10 + .../roles/initialization/tasks/main.yml | 149 +++++-- .../ansible/roles/nginx/files/conf.d/pmm.conf | 18 +- build/docker/server/entrypoint.sh | 10 +- .../rpm/server/SPECS/percona-dashboards.spec | 7 +- .../ansible/roles/cloud-node/files/show-url | 3 +- .../ansible/roles/cloud-node/tasks/ovf.yml | 18 + .../ansible/roles/lvm-init/vars/main.yml | 2 +- .../ansible/roles/podman-setup/tasks/main.yml | 80 +++- .../podman-setup/templates/pmm-server.env | 5 + .../podman-setup/templates/pmm-server.service | 18 +- .../podman-setup/templates/watchtower.service | 30 ++ build/packer/pmm.json | 2 +- descriptor.bin | Bin 704686 -> 703985 bytes managed/cmd/pmm-managed/main.go | 12 +- managed/services/grafana/auth_server.go | 80 +--- managed/services/grafana/auth_server_test.go | 115 +---- managed/services/grafana/deps.go | 6 - .../grafana/mock_aws_instance_checker_test.go | 43 -- .../services/server/aws_instance_checker.go | 121 ----- .../server/aws_instance_checker_test.go | 95 ---- managed/services/server/server.go | 32 +- managed/services/server/updater.go | 1 - managed/services/telemetry/deps.go | 2 +- .../mock_distribution_util_service_test.go | 6 +- managed/services/telemetry/telemetry.go | 13 +- managed/services/telemetry/telemetry_test.go | 5 +- .../distribution}/distribution_util.go | 35 +- .../distribution}/distribution_util_test.go | 14 +- managed/utils/envvars/parser.go | 2 +- 43 files changed, 481 insertions(+), 2070 deletions(-) delete mode 100644 api/server/v1/json/client/server_service/aws_instance_check_parameters.go delete mode 100644 api/server/v1/json/client/server_service/aws_instance_check_responses.go create mode 100644 build/ansible/roles/init-admin-password-ami/tasks/main.yml create mode 100644 build/packer/ansible/roles/podman-setup/templates/pmm-server.env create mode 100644 build/packer/ansible/roles/podman-setup/templates/watchtower.service delete mode 100644 managed/services/grafana/mock_aws_instance_checker_test.go delete mode 100644 managed/services/server/aws_instance_checker.go delete mode 100644 managed/services/server/aws_instance_checker_test.go rename managed/{services/telemetry => utils/distribution}/distribution_util.go (73%) rename managed/{services/telemetry => utils/distribution}/distribution_util_test.go (94%) diff --git a/api-tests/server/auth_test.go b/api-tests/server/auth_test.go index 0430f11d1e..a51d60b3dd 100644 --- a/api-tests/server/auth_test.go +++ b/api-tests/server/auth_test.go @@ -24,7 +24,6 @@ import ( "net/http/httputil" "net/url" "strconv" - "strings" "testing" "time" @@ -98,96 +97,6 @@ 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) - baseURL.User = nil - - // make client that does not follow redirects - client := &http.Client{ - CheckRedirect: func(req *http.Request, via []*http.Request) error { - return http.ErrUseLastResponse - }, - } - - t.Run("WebPage", func(t *testing.T) { - t.Parallel() - - uri := baseURL.ResolveReference(&url.URL{ - Path: "/setup", - }) - t.Logf("URI: %s", uri) - req, err := http.NewRequestWithContext(pmmapitests.Context, http.MethodGet, uri.String(), nil) - require.NoError(t, err) - req.Header.Set("X-Test-Must-Setup", "1") - - resp, b := doRequest(t, client, req) //nolint:bodyclose - - assert.Equal(t, 200, resp.StatusCode, "response:\n%s", b) - assert.True(t, strings.HasPrefix(string(b), ``), string(b)) - }) - - t.Run("Redirect", func(t *testing.T) { - t.Parallel() - paths := map[string]int{ - "graph": 303, - "graph/": 303, - "prometheus": 303, - "prometheus/": 303, - "swagger": 200, - "swagger/": 301, - - "v1/server/readyz": 200, - "v1/server/AWSInstance": 400, // It must accept a parameter - "v1/server/version": 401, // Grafana authentication required - } - for path, code := range paths { - path, code := path, code - t.Run(fmt.Sprintf("%s=%d", path, code), func(t *testing.T) { - t.Parallel() - - uri := baseURL.ResolveReference(&url.URL{ - Path: path, - }) - t.Logf("URI: %s", uri) - req, err := http.NewRequestWithContext(pmmapitests.Context, http.MethodGet, uri.String(), nil) - require.NoError(t, err) - req.Header.Set("X-Test-Must-Setup", "1") - - resp, b := doRequest(t, client, req) //nolint:bodyclose - - assert.Equal(t, code, resp.StatusCode, "response:\n%s", b) - if code == 303 { - assert.Equal(t, "/setup", resp.Header.Get("Location")) - } - }) - } - }) - - t.Run("API", func(t *testing.T) { - t.Parallel() - - q := make(url.Values) - q.Set("instance_id", "123") - uri := baseURL.ResolveReference(&url.URL{ - Path: "v1/server/AWSInstance", - RawQuery: q.Encode(), - }) - t.Logf("URI: %s", uri) - require.NoError(t, err) - req, err := http.NewRequestWithContext(pmmapitests.Context, http.MethodGet, uri.String(), nil) - require.NoError(t, err) - req.Header.Set("X-Test-Must-Setup", "1") - - resp, b := doRequest(t, client, req) //nolint:bodyclose - - assert.Equal(t, 200, resp.StatusCode, "response:\n%s", b) - assert.Equal(t, "{}", string(b), "response:\n%s", b) - }) -} - func TestSwagger(t *testing.T) { t.Parallel() for _, path := range []string{ diff --git a/api/server/v1/json/client/server_service/aws_instance_check_parameters.go b/api/server/v1/json/client/server_service/aws_instance_check_parameters.go deleted file mode 100644 index 87f36dd758..0000000000 --- a/api/server/v1/json/client/server_service/aws_instance_check_parameters.go +++ /dev/null @@ -1,160 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package server_service - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "context" - "net/http" - "time" - - "github.com/go-openapi/errors" - "github.com/go-openapi/runtime" - cr "github.com/go-openapi/runtime/client" - "github.com/go-openapi/strfmt" -) - -// NewAWSInstanceCheckParams creates a new AWSInstanceCheckParams object, -// with the default timeout for this client. -// -// Default values are not hydrated, since defaults are normally applied by the API server side. -// -// To enforce default values in parameter, use SetDefaults or WithDefaults. -func NewAWSInstanceCheckParams() *AWSInstanceCheckParams { - return &AWSInstanceCheckParams{ - timeout: cr.DefaultTimeout, - } -} - -// NewAWSInstanceCheckParamsWithTimeout creates a new AWSInstanceCheckParams object -// with the ability to set a timeout on a request. -func NewAWSInstanceCheckParamsWithTimeout(timeout time.Duration) *AWSInstanceCheckParams { - return &AWSInstanceCheckParams{ - timeout: timeout, - } -} - -// NewAWSInstanceCheckParamsWithContext creates a new AWSInstanceCheckParams object -// with the ability to set a context for a request. -func NewAWSInstanceCheckParamsWithContext(ctx context.Context) *AWSInstanceCheckParams { - return &AWSInstanceCheckParams{ - Context: ctx, - } -} - -// NewAWSInstanceCheckParamsWithHTTPClient creates a new AWSInstanceCheckParams object -// with the ability to set a custom HTTPClient for a request. -func NewAWSInstanceCheckParamsWithHTTPClient(client *http.Client) *AWSInstanceCheckParams { - return &AWSInstanceCheckParams{ - HTTPClient: client, - } -} - -/* -AWSInstanceCheckParams contains all the parameters to send to the API endpoint - - for the AWS instance check operation. - - Typically these are written to a http.Request. -*/ -type AWSInstanceCheckParams struct { - /* InstanceID. - - AWS EC2 instance ID (i-1234567890abcdef0). - */ - InstanceID *string - - timeout time.Duration - Context context.Context - HTTPClient *http.Client -} - -// WithDefaults hydrates default values in the AWS instance check params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *AWSInstanceCheckParams) WithDefaults() *AWSInstanceCheckParams { - o.SetDefaults() - return o -} - -// SetDefaults hydrates default values in the AWS instance check params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *AWSInstanceCheckParams) SetDefaults() { - // no default values defined for this parameter -} - -// WithTimeout adds the timeout to the AWS instance check params -func (o *AWSInstanceCheckParams) WithTimeout(timeout time.Duration) *AWSInstanceCheckParams { - o.SetTimeout(timeout) - return o -} - -// SetTimeout adds the timeout to the AWS instance check params -func (o *AWSInstanceCheckParams) SetTimeout(timeout time.Duration) { - o.timeout = timeout -} - -// WithContext adds the context to the AWS instance check params -func (o *AWSInstanceCheckParams) WithContext(ctx context.Context) *AWSInstanceCheckParams { - o.SetContext(ctx) - return o -} - -// SetContext adds the context to the AWS instance check params -func (o *AWSInstanceCheckParams) SetContext(ctx context.Context) { - o.Context = ctx -} - -// WithHTTPClient adds the HTTPClient to the AWS instance check params -func (o *AWSInstanceCheckParams) WithHTTPClient(client *http.Client) *AWSInstanceCheckParams { - o.SetHTTPClient(client) - return o -} - -// SetHTTPClient adds the HTTPClient to the AWS instance check params -func (o *AWSInstanceCheckParams) SetHTTPClient(client *http.Client) { - o.HTTPClient = client -} - -// WithInstanceID adds the instanceID to the AWS instance check params -func (o *AWSInstanceCheckParams) WithInstanceID(instanceID *string) *AWSInstanceCheckParams { - o.SetInstanceID(instanceID) - return o -} - -// SetInstanceID adds the instanceId to the AWS instance check params -func (o *AWSInstanceCheckParams) SetInstanceID(instanceID *string) { - o.InstanceID = instanceID -} - -// WriteToRequest writes these params to a swagger request -func (o *AWSInstanceCheckParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { - if err := r.SetTimeout(o.timeout); err != nil { - return err - } - var res []error - - if o.InstanceID != nil { - - // query param instance_id - var qrInstanceID string - - if o.InstanceID != nil { - qrInstanceID = *o.InstanceID - } - qInstanceID := qrInstanceID - if qInstanceID != "" { - if err := r.SetQueryParam("instance_id", qInstanceID); err != nil { - return err - } - } - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} diff --git a/api/server/v1/json/client/server_service/aws_instance_check_responses.go b/api/server/v1/json/client/server_service/aws_instance_check_responses.go deleted file mode 100644 index ed42e91f41..0000000000 --- a/api/server/v1/json/client/server_service/aws_instance_check_responses.go +++ /dev/null @@ -1,369 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package server_service - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "context" - "fmt" - "io" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/runtime" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// AWSInstanceCheckReader is a Reader for the AWSInstanceCheck structure. -type AWSInstanceCheckReader struct { - formats strfmt.Registry -} - -// ReadResponse reads a server response into the received o. -func (o *AWSInstanceCheckReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { - switch response.Code() { - case 200: - result := NewAWSInstanceCheckOK() - if err := result.readResponse(response, consumer, o.formats); err != nil { - return nil, err - } - return result, nil - default: - result := NewAWSInstanceCheckDefault(response.Code()) - if err := result.readResponse(response, consumer, o.formats); err != nil { - return nil, err - } - if response.Code()/100 == 2 { - return result, nil - } - return nil, result - } -} - -// NewAWSInstanceCheckOK creates a AWSInstanceCheckOK with default headers values -func NewAWSInstanceCheckOK() *AWSInstanceCheckOK { - return &AWSInstanceCheckOK{} -} - -/* -AWSInstanceCheckOK describes a response with status code 200, with default header values. - -A successful response. -*/ -type AWSInstanceCheckOK struct { - Payload interface{} -} - -func (o *AWSInstanceCheckOK) Error() string { - return fmt.Sprintf("[GET /v1/server/AWSInstance][%d] awsInstanceCheckOk %+v", 200, o.Payload) -} - -func (o *AWSInstanceCheckOK) GetPayload() interface{} { - return o.Payload -} - -func (o *AWSInstanceCheckOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - // response payload - if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF { - return err - } - - return nil -} - -// NewAWSInstanceCheckDefault creates a AWSInstanceCheckDefault with default headers values -func NewAWSInstanceCheckDefault(code int) *AWSInstanceCheckDefault { - return &AWSInstanceCheckDefault{ - _statusCode: code, - } -} - -/* -AWSInstanceCheckDefault describes a response with status code -1, with default header values. - -An unexpected error response. -*/ -type AWSInstanceCheckDefault struct { - _statusCode int - - Payload *AWSInstanceCheckDefaultBody -} - -// Code gets the status code for the AWS instance check default response -func (o *AWSInstanceCheckDefault) Code() int { - return o._statusCode -} - -func (o *AWSInstanceCheckDefault) Error() string { - return fmt.Sprintf("[GET /v1/server/AWSInstance][%d] AWSInstanceCheck default %+v", o._statusCode, o.Payload) -} - -func (o *AWSInstanceCheckDefault) GetPayload() *AWSInstanceCheckDefaultBody { - return o.Payload -} - -func (o *AWSInstanceCheckDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(AWSInstanceCheckDefaultBody) - - // response payload - if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { - return err - } - - return nil -} - -/* -AWSInstanceCheckDefaultBody AWS instance check default body -swagger:model AWSInstanceCheckDefaultBody -*/ -type AWSInstanceCheckDefaultBody struct { - // code - Code int32 `json:"code,omitempty"` - - // message - Message string `json:"message,omitempty"` - - // details - Details []*AWSInstanceCheckDefaultBodyDetailsItems0 `json:"details"` -} - -// Validate validates this AWS instance check default body -func (o *AWSInstanceCheckDefaultBody) Validate(formats strfmt.Registry) error { - var res []error - - if err := o.validateDetails(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *AWSInstanceCheckDefaultBody) validateDetails(formats strfmt.Registry) error { - if swag.IsZero(o.Details) { // not required - return nil - } - - for i := 0; i < len(o.Details); i++ { - if swag.IsZero(o.Details[i]) { // not required - continue - } - - if o.Details[i] != nil { - if err := o.Details[i].Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("AWSInstanceCheck default" + "." + "details" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("AWSInstanceCheck default" + "." + "details" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// ContextValidate validate this AWS instance check default body based on the context it is used -func (o *AWSInstanceCheckDefaultBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := o.contextValidateDetails(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *AWSInstanceCheckDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { - for i := 0; i < len(o.Details); i++ { - if o.Details[i] != nil { - if err := o.Details[i].ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("AWSInstanceCheck default" + "." + "details" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("AWSInstanceCheck default" + "." + "details" + "." + strconv.Itoa(i)) - } - return err - } - } - } - - return nil -} - -// MarshalBinary interface implementation -func (o *AWSInstanceCheckDefaultBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *AWSInstanceCheckDefaultBody) UnmarshalBinary(b []byte) error { - var res AWSInstanceCheckDefaultBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -AWSInstanceCheckDefaultBodyDetailsItems0 `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// // or ... -// if (any.isSameTypeAs(Foo.getDefaultInstance())) { -// foo = any.unpack(Foo.getDefaultInstance()); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := anypb.New(foo) -// if err != nil { -// ... -// } -// ... -// foo := &pb.Foo{} -// if err := any.UnmarshalTo(foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -swagger:model AWSInstanceCheckDefaultBodyDetailsItems0 -*/ -type AWSInstanceCheckDefaultBodyDetailsItems0 struct { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. This string must contain at least - // one "/" character. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. As of May 2023, there are no widely used type server - // implementations and no plans to implement one. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - AtType string `json:"@type,omitempty"` -} - -// Validate validates this AWS instance check default body details items0 -func (o *AWSInstanceCheckDefaultBodyDetailsItems0) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this AWS instance check default body details items0 based on context it is used -func (o *AWSInstanceCheckDefaultBodyDetailsItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *AWSInstanceCheckDefaultBodyDetailsItems0) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *AWSInstanceCheckDefaultBodyDetailsItems0) UnmarshalBinary(b []byte) error { - var res AWSInstanceCheckDefaultBodyDetailsItems0 - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/api/server/v1/json/client/server_service/server_service_client.go b/api/server/v1/json/client/server_service/server_service_client.go index 11343140a9..4d1cd044ff 100644 --- a/api/server/v1/json/client/server_service/server_service_client.go +++ b/api/server/v1/json/client/server_service/server_service_client.go @@ -30,8 +30,6 @@ type ClientOption func(*runtime.ClientOperation) // ClientService is the interface for Client methods type ClientService interface { - AWSInstanceCheck(params *AWSInstanceCheckParams, opts ...ClientOption) (*AWSInstanceCheckOK, error) - ChangeSettings(params *ChangeSettingsParams, opts ...ClientOption) (*ChangeSettingsOK, error) CheckUpdates(params *CheckUpdatesParams, opts ...ClientOption) (*CheckUpdatesOK, error) @@ -53,45 +51,6 @@ type ClientService interface { SetTransport(transport runtime.ClientTransport) } -/* -AWSInstanceCheck AWSs instance check - -Checks AWS EC2 instance ID. -*/ -func (a *Client) AWSInstanceCheck(params *AWSInstanceCheckParams, opts ...ClientOption) (*AWSInstanceCheckOK, error) { - // TODO: Validate the params before sending - if params == nil { - params = NewAWSInstanceCheckParams() - } - op := &runtime.ClientOperation{ - ID: "AWSInstanceCheck", - Method: "GET", - PathPattern: "/v1/server/AWSInstance", - ProducesMediaTypes: []string{"application/json"}, - ConsumesMediaTypes: []string{"application/json"}, - Schemes: []string{"http", "https"}, - Params: params, - Reader: &AWSInstanceCheckReader{formats: a.formats}, - Context: params.Context, - Client: params.HTTPClient, - } - for _, opt := range opts { - opt(op) - } - - result, err := a.transport.Submit(op) - if err != nil { - return nil, err - } - success, ok := result.(*AWSInstanceCheckOK) - if ok { - return success, nil - } - // unexpected success response - unexpectedSuccess := result.(*AWSInstanceCheckDefault) - return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) -} - /* ChangeSettings changes settings diff --git a/api/server/v1/json/v1.json b/api/server/v1/json/v1.json index 7831e9a4fa..a47880959b 100644 --- a/api/server/v1/json/v1.json +++ b/api/server/v1/json/v1.json @@ -15,65 +15,6 @@ "version": "v1" }, "paths": { - "/v1/server/AWSInstance": { - "get": { - "description": "Checks AWS EC2 instance ID.", - "tags": [ - "ServerService" - ], - "summary": "AWS instance check", - "operationId": "AWSInstanceCheck", - "parameters": [ - { - "type": "string", - "description": "AWS EC2 instance ID (i-1234567890abcdef0).", - "name": "instance_id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - }, - "message": { - "type": "string", - "x-order": 1 - } - } - } - } - } - } - }, "/v1/server/leaderHealthCheck": { "get": { "description": "Checks if the instance is the leader in a cluster. Returns an error if the instance isn't the leader.", diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index ff671a9f28..fd1eccccee 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -1469,92 +1469,6 @@ func (x *ChangeSettingsResponse) GetSettings() *Settings { return nil } -type AWSInstanceCheckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // AWS EC2 instance ID (i-1234567890abcdef0). - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` -} - -func (x *AWSInstanceCheckRequest) Reset() { - *x = AWSInstanceCheckRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_server_v1_server_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AWSInstanceCheckRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AWSInstanceCheckRequest) ProtoMessage() {} - -func (x *AWSInstanceCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_server_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AWSInstanceCheckRequest.ProtoReflect.Descriptor instead. -func (*AWSInstanceCheckRequest) Descriptor() ([]byte, []int) { - return file_server_v1_server_proto_rawDescGZIP(), []int{21} -} - -func (x *AWSInstanceCheckRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -type AWSInstanceCheckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AWSInstanceCheckResponse) Reset() { - *x = AWSInstanceCheckResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_server_v1_server_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AWSInstanceCheckResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AWSInstanceCheckResponse) ProtoMessage() {} - -func (x *AWSInstanceCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_server_v1_server_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AWSInstanceCheckResponse.ProtoReflect.Descriptor instead. -func (*AWSInstanceCheckResponse) Descriptor() ([]byte, []int) { - return file_server_v1_server_proto_rawDescGZIP(), []int{22} -} - var File_server_v1_server_proto protoreflect.FileDescriptor var file_server_v1_server_proto_rawDesc = []byte{ @@ -1804,144 +1718,127 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x22, 0x43, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, - 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, - 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, - 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, - 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, - 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, - 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, - 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, + 0x73, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, - 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, - 0x4f, 0x10, 0x05, 0x32, 0xc3, 0x0d, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xab, - 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, - 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, - 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0x81, 0x02, 0x0a, - 0x11, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, - 0x92, 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, - 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x6c, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, + 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, + 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, + 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, + 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, + 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, + 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, + 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, + 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, + 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, + 0x10, 0x05, 0x32, 0x91, 0x0c, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, + 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xab, 0x02, + 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, + 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x20, + 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, 0x65, + 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, + 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, 0x62, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, + 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0x81, 0x02, 0x0a, 0x11, + 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x92, + 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, + 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x6c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0xa7, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x56, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x92, 0x41, 0x29, 0x12, 0x0c, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, - 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xad, 0x01, 0x0a, 0x0c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x92, 0x41, - 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x3a, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, + 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xad, 0x01, 0x0a, 0x0c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x92, 0x41, 0x32, + 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, + 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, + 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, - 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, - 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xa7, 0x01, - 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, - 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, 0x53, 0x20, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x1b, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x41, 0x57, - 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, - 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, - 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, - 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, - 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, + 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xa7, 0x01, 0x0a, + 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, + 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1958,7 +1855,7 @@ func file_server_v1_server_proto_rawDescGZIP() []byte { var ( file_server_v1_server_proto_enumTypes = make([]protoimpl.EnumInfo, 1) - file_server_v1_server_proto_msgTypes = make([]protoimpl.MessageInfo, 23) + file_server_v1_server_proto_msgTypes = make([]protoimpl.MessageInfo, 21) file_server_v1_server_proto_goTypes = []any{ (DistributionMethod)(0), // 0: server.v1.DistributionMethod (*VersionInfo)(nil), // 1: server.v1.VersionInfo @@ -1982,36 +1879,34 @@ var ( (*GetSettingsResponse)(nil), // 19: server.v1.GetSettingsResponse (*ChangeSettingsRequest)(nil), // 20: server.v1.ChangeSettingsRequest (*ChangeSettingsResponse)(nil), // 21: server.v1.ChangeSettingsResponse - (*AWSInstanceCheckRequest)(nil), // 22: server.v1.AWSInstanceCheckRequest - (*AWSInstanceCheckResponse)(nil), // 23: server.v1.AWSInstanceCheckResponse - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 25: google.protobuf.Duration - (*common.StringArray)(nil), // 26: common.StringArray + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 23: google.protobuf.Duration + (*common.StringArray)(nil), // 24: common.StringArray } ) var file_server_v1_server_proto_depIdxs = []int32{ - 24, // 0: server.v1.VersionInfo.timestamp:type_name -> google.protobuf.Timestamp + 22, // 0: server.v1.VersionInfo.timestamp:type_name -> google.protobuf.Timestamp 1, // 1: server.v1.VersionResponse.server:type_name -> server.v1.VersionInfo 1, // 2: server.v1.VersionResponse.managed:type_name -> server.v1.VersionInfo 0, // 3: server.v1.VersionResponse.distribution_method:type_name -> server.v1.DistributionMethod - 24, // 4: server.v1.DockerVersionInfo.timestamp:type_name -> google.protobuf.Timestamp + 22, // 4: server.v1.DockerVersionInfo.timestamp:type_name -> google.protobuf.Timestamp 1, // 5: server.v1.CheckUpdatesResponse.installed:type_name -> server.v1.VersionInfo 9, // 6: server.v1.CheckUpdatesResponse.latest:type_name -> server.v1.DockerVersionInfo - 24, // 7: server.v1.CheckUpdatesResponse.last_check:type_name -> google.protobuf.Timestamp - 25, // 8: server.v1.MetricsResolutions.hr:type_name -> google.protobuf.Duration - 25, // 9: server.v1.MetricsResolutions.mr:type_name -> google.protobuf.Duration - 25, // 10: server.v1.MetricsResolutions.lr:type_name -> google.protobuf.Duration - 25, // 11: server.v1.AdvisorRunIntervals.standard_interval:type_name -> google.protobuf.Duration - 25, // 12: server.v1.AdvisorRunIntervals.rare_interval:type_name -> google.protobuf.Duration - 25, // 13: server.v1.AdvisorRunIntervals.frequent_interval:type_name -> google.protobuf.Duration + 22, // 7: server.v1.CheckUpdatesResponse.last_check:type_name -> google.protobuf.Timestamp + 23, // 8: server.v1.MetricsResolutions.hr:type_name -> google.protobuf.Duration + 23, // 9: server.v1.MetricsResolutions.mr:type_name -> google.protobuf.Duration + 23, // 10: server.v1.MetricsResolutions.lr:type_name -> google.protobuf.Duration + 23, // 11: server.v1.AdvisorRunIntervals.standard_interval:type_name -> google.protobuf.Duration + 23, // 12: server.v1.AdvisorRunIntervals.rare_interval:type_name -> google.protobuf.Duration + 23, // 13: server.v1.AdvisorRunIntervals.frequent_interval:type_name -> google.protobuf.Duration 15, // 14: server.v1.Settings.metrics_resolutions:type_name -> server.v1.MetricsResolutions - 25, // 15: server.v1.Settings.data_retention:type_name -> google.protobuf.Duration + 23, // 15: server.v1.Settings.data_retention:type_name -> google.protobuf.Duration 16, // 16: server.v1.Settings.advisor_run_intervals:type_name -> server.v1.AdvisorRunIntervals 17, // 17: server.v1.GetSettingsResponse.settings:type_name -> server.v1.Settings 15, // 18: server.v1.ChangeSettingsRequest.metrics_resolutions:type_name -> server.v1.MetricsResolutions - 25, // 19: server.v1.ChangeSettingsRequest.data_retention:type_name -> google.protobuf.Duration - 26, // 20: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.StringArray + 23, // 19: server.v1.ChangeSettingsRequest.data_retention:type_name -> google.protobuf.Duration + 24, // 20: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.StringArray 16, // 21: server.v1.ChangeSettingsRequest.advisor_run_intervals:type_name -> server.v1.AdvisorRunIntervals 17, // 22: server.v1.ChangeSettingsResponse.settings:type_name -> server.v1.Settings 2, // 23: server.v1.ServerService.Version:input_type -> server.v1.VersionRequest @@ -2022,18 +1917,16 @@ var file_server_v1_server_proto_depIdxs = []int32{ 13, // 28: server.v1.ServerService.UpdateStatus:input_type -> server.v1.UpdateStatusRequest 18, // 29: server.v1.ServerService.GetSettings:input_type -> server.v1.GetSettingsRequest 20, // 30: server.v1.ServerService.ChangeSettings:input_type -> server.v1.ChangeSettingsRequest - 22, // 31: server.v1.ServerService.AWSInstanceCheck:input_type -> server.v1.AWSInstanceCheckRequest - 3, // 32: server.v1.ServerService.Version:output_type -> server.v1.VersionResponse - 5, // 33: server.v1.ServerService.Readiness:output_type -> server.v1.ReadinessResponse - 7, // 34: server.v1.ServerService.LeaderHealthCheck:output_type -> server.v1.LeaderHealthCheckResponse - 10, // 35: server.v1.ServerService.CheckUpdates:output_type -> server.v1.CheckUpdatesResponse - 12, // 36: server.v1.ServerService.StartUpdate:output_type -> server.v1.StartUpdateResponse - 14, // 37: server.v1.ServerService.UpdateStatus:output_type -> server.v1.UpdateStatusResponse - 19, // 38: server.v1.ServerService.GetSettings:output_type -> server.v1.GetSettingsResponse - 21, // 39: server.v1.ServerService.ChangeSettings:output_type -> server.v1.ChangeSettingsResponse - 23, // 40: server.v1.ServerService.AWSInstanceCheck:output_type -> server.v1.AWSInstanceCheckResponse - 32, // [32:41] is the sub-list for method output_type - 23, // [23:32] is the sub-list for method input_type + 3, // 31: server.v1.ServerService.Version:output_type -> server.v1.VersionResponse + 5, // 32: server.v1.ServerService.Readiness:output_type -> server.v1.ReadinessResponse + 7, // 33: server.v1.ServerService.LeaderHealthCheck:output_type -> server.v1.LeaderHealthCheckResponse + 10, // 34: server.v1.ServerService.CheckUpdates:output_type -> server.v1.CheckUpdatesResponse + 12, // 35: server.v1.ServerService.StartUpdate:output_type -> server.v1.StartUpdateResponse + 14, // 36: server.v1.ServerService.UpdateStatus:output_type -> server.v1.UpdateStatusResponse + 19, // 37: server.v1.ServerService.GetSettings:output_type -> server.v1.GetSettingsResponse + 21, // 38: server.v1.ServerService.ChangeSettings:output_type -> server.v1.ChangeSettingsResponse + 31, // [31:39] is the sub-list for method output_type + 23, // [23:31] is the sub-list for method input_type 23, // [23:23] is the sub-list for extension type_name 23, // [23:23] is the sub-list for extension extendee 0, // [0:23] is the sub-list for field type_name @@ -2297,30 +2190,6 @@ func file_server_v1_server_proto_init() { return nil } } - file_server_v1_server_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*AWSInstanceCheckRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_server_v1_server_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*AWSInstanceCheckResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } file_server_v1_server_proto_msgTypes[19].OneofWrappers = []any{} type x struct{} @@ -2329,7 +2198,7 @@ func file_server_v1_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_v1_server_proto_rawDesc, NumEnums: 1, - NumMessages: 23, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/api/server/v1/server.pb.gw.go b/api/server/v1/server.pb.gw.go index 4fa1614e6c..ba65789293 100644 --- a/api/server/v1/server.pb.gw.go +++ b/api/server/v1/server.pb.gw.go @@ -217,38 +217,6 @@ func local_request_ServerService_ChangeSettings_0(ctx context.Context, marshaler return msg, metadata, err } -var filter_ServerService_AWSInstanceCheck_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_ServerService_AWSInstanceCheck_0(ctx context.Context, marshaler runtime.Marshaler, client ServerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq AWSInstanceCheckRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ServerService_AWSInstanceCheck_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.AWSInstanceCheck(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_ServerService_AWSInstanceCheck_0(ctx context.Context, marshaler runtime.Marshaler, server ServerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq AWSInstanceCheckRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ServerService_AWSInstanceCheck_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.AWSInstanceCheck(ctx, &protoReq) - return msg, metadata, err -} - // RegisterServerServiceHandlerServer registers the http handlers for service ServerService to "mux". // UnaryRPC :call ServerServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -446,30 +414,6 @@ func RegisterServerServiceHandlerServer(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.v1.ServerService/AWSInstanceCheck", runtime.WithHTTPPathPattern("/v1/server/AWSInstance")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_ServerService_AWSInstanceCheck_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ServerService_AWSInstanceCheck_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil } @@ -678,27 +622,6 @@ func RegisterServerServiceHandlerClient(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.v1.ServerService/AWSInstanceCheck", runtime.WithHTTPPathPattern("/v1/server/AWSInstance")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ServerService_AWSInstanceCheck_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ServerService_AWSInstanceCheck_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil } @@ -718,8 +641,6 @@ var ( pattern_ServerService_GetSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "server", "settings"}, "")) pattern_ServerService_ChangeSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "server", "settings"}, "")) - - pattern_ServerService_AWSInstanceCheck_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "server", "AWSInstance"}, "")) ) var ( @@ -738,6 +659,4 @@ var ( forward_ServerService_GetSettings_0 = runtime.ForwardResponseMessage forward_ServerService_ChangeSettings_0 = runtime.ForwardResponseMessage - - forward_ServerService_AWSInstanceCheck_0 = runtime.ForwardResponseMessage ) diff --git a/api/server/v1/server.pb.validate.go b/api/server/v1/server.pb.validate.go index 42336b9c6d..39897b8317 100644 --- a/api/server/v1/server.pb.validate.go +++ b/api/server/v1/server.pb.validate.go @@ -2900,218 +2900,3 @@ var _ interface { Cause() error ErrorName() string } = ChangeSettingsResponseValidationError{} - -// Validate checks the field values on AWSInstanceCheckRequest with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *AWSInstanceCheckRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AWSInstanceCheckRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// AWSInstanceCheckRequestMultiError, or nil if none found. -func (m *AWSInstanceCheckRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *AWSInstanceCheckRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if utf8.RuneCountInString(m.GetInstanceId()) < 1 { - err := AWSInstanceCheckRequestValidationError{ - field: "InstanceId", - reason: "value length must be at least 1 runes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return AWSInstanceCheckRequestMultiError(errors) - } - - return nil -} - -// AWSInstanceCheckRequestMultiError is an error wrapping multiple validation -// errors returned by AWSInstanceCheckRequest.ValidateAll() if the designated -// constraints aren't met. -type AWSInstanceCheckRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AWSInstanceCheckRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AWSInstanceCheckRequestMultiError) AllErrors() []error { return m } - -// AWSInstanceCheckRequestValidationError is the validation error returned by -// AWSInstanceCheckRequest.Validate if the designated constraints aren't met. -type AWSInstanceCheckRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e AWSInstanceCheckRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e AWSInstanceCheckRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e AWSInstanceCheckRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e AWSInstanceCheckRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e AWSInstanceCheckRequestValidationError) ErrorName() string { - return "AWSInstanceCheckRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e AWSInstanceCheckRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sAWSInstanceCheckRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = AWSInstanceCheckRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = AWSInstanceCheckRequestValidationError{} - -// Validate checks the field values on AWSInstanceCheckResponse with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *AWSInstanceCheckResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AWSInstanceCheckResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// AWSInstanceCheckResponseMultiError, or nil if none found. -func (m *AWSInstanceCheckResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *AWSInstanceCheckResponse) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return AWSInstanceCheckResponseMultiError(errors) - } - - return nil -} - -// AWSInstanceCheckResponseMultiError is an error wrapping multiple validation -// errors returned by AWSInstanceCheckResponse.ValidateAll() if the designated -// constraints aren't met. -type AWSInstanceCheckResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AWSInstanceCheckResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AWSInstanceCheckResponseMultiError) AllErrors() []error { return m } - -// AWSInstanceCheckResponseValidationError is the validation error returned by -// AWSInstanceCheckResponse.Validate if the designated constraints aren't met. -type AWSInstanceCheckResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e AWSInstanceCheckResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e AWSInstanceCheckResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e AWSInstanceCheckResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e AWSInstanceCheckResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e AWSInstanceCheckResponseValidationError) ErrorName() string { - return "AWSInstanceCheckResponseValidationError" -} - -// Error satisfies the builtin error interface -func (e AWSInstanceCheckResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sAWSInstanceCheckResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = AWSInstanceCheckResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = AWSInstanceCheckResponseValidationError{} diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index c65d7c3a65..527ff71a27 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -202,13 +202,6 @@ message ChangeSettingsResponse { Settings settings = 1; } -message AWSInstanceCheckRequest { - // AWS EC2 instance ID (i-1234567890abcdef0). - string instance_id = 1 [(validate.rules).string.min_len = 1]; -} - -message AWSInstanceCheckResponse {} - // Server service provides generic PMM Server public APIs. service ServerService { // Version returns PMM Server versions. @@ -285,12 +278,4 @@ service ServerService { description: "Changes PMM Server settings." }; } - // AWSInstanceCheck checks AWS EC2 instance ID. - rpc AWSInstanceCheck(AWSInstanceCheckRequest) returns (AWSInstanceCheckResponse) { - option (google.api.http) = {get: "/v1/server/AWSInstance"}; - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - summary: "AWS instance check" - description: "Checks AWS EC2 instance ID." - }; - } } diff --git a/api/server/v1/server_grpc.pb.go b/api/server/v1/server_grpc.pb.go index 67d9f22312..528ca59472 100644 --- a/api/server/v1/server_grpc.pb.go +++ b/api/server/v1/server_grpc.pb.go @@ -28,7 +28,6 @@ const ( ServerService_UpdateStatus_FullMethodName = "/server.v1.ServerService/UpdateStatus" ServerService_GetSettings_FullMethodName = "/server.v1.ServerService/GetSettings" ServerService_ChangeSettings_FullMethodName = "/server.v1.ServerService/ChangeSettings" - ServerService_AWSInstanceCheck_FullMethodName = "/server.v1.ServerService/AWSInstanceCheck" ) // ServerServiceClient is the client API for ServerService service. @@ -54,8 +53,6 @@ type ServerServiceClient interface { GetSettings(ctx context.Context, in *GetSettingsRequest, opts ...grpc.CallOption) (*GetSettingsResponse, error) // ChangeSettings changes PMM Server settings. ChangeSettings(ctx context.Context, in *ChangeSettingsRequest, opts ...grpc.CallOption) (*ChangeSettingsResponse, error) - // AWSInstanceCheck checks AWS EC2 instance ID. - AWSInstanceCheck(ctx context.Context, in *AWSInstanceCheckRequest, opts ...grpc.CallOption) (*AWSInstanceCheckResponse, error) } type serverServiceClient struct { @@ -146,16 +143,6 @@ func (c *serverServiceClient) ChangeSettings(ctx context.Context, in *ChangeSett return out, nil } -func (c *serverServiceClient) AWSInstanceCheck(ctx context.Context, in *AWSInstanceCheckRequest, opts ...grpc.CallOption) (*AWSInstanceCheckResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AWSInstanceCheckResponse) - err := c.cc.Invoke(ctx, ServerService_AWSInstanceCheck_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - // ServerServiceServer is the server API for ServerService service. // All implementations must embed UnimplementedServerServiceServer // for forward compatibility @@ -179,8 +166,6 @@ type ServerServiceServer interface { GetSettings(context.Context, *GetSettingsRequest) (*GetSettingsResponse, error) // ChangeSettings changes PMM Server settings. ChangeSettings(context.Context, *ChangeSettingsRequest) (*ChangeSettingsResponse, error) - // AWSInstanceCheck checks AWS EC2 instance ID. - AWSInstanceCheck(context.Context, *AWSInstanceCheckRequest) (*AWSInstanceCheckResponse, error) mustEmbedUnimplementedServerServiceServer() } @@ -218,10 +203,6 @@ func (UnimplementedServerServiceServer) GetSettings(context.Context, *GetSetting func (UnimplementedServerServiceServer) ChangeSettings(context.Context, *ChangeSettingsRequest) (*ChangeSettingsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeSettings not implemented") } - -func (UnimplementedServerServiceServer) AWSInstanceCheck(context.Context, *AWSInstanceCheckRequest) (*AWSInstanceCheckResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AWSInstanceCheck not implemented") -} func (UnimplementedServerServiceServer) mustEmbedUnimplementedServerServiceServer() {} // UnsafeServerServiceServer may be embedded to opt out of forward compatibility for this service. @@ -379,24 +360,6 @@ func _ServerService_ChangeSettings_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _ServerService_AWSInstanceCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AWSInstanceCheckRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServerServiceServer).AWSInstanceCheck(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ServerService_AWSInstanceCheck_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServerServiceServer).AWSInstanceCheck(ctx, req.(*AWSInstanceCheckRequest)) - } - return interceptor(ctx, in, info, handler) -} - // ServerService_ServiceDesc is the grpc.ServiceDesc for ServerService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -436,10 +399,6 @@ var ServerService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ChangeSettings", Handler: _ServerService_ChangeSettings_Handler, }, - { - MethodName: "AWSInstanceCheck", - Handler: _ServerService_AWSInstanceCheck_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "server/v1/server.proto", diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 917c75e4ca..cf32bb6f3a 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -26706,65 +26706,6 @@ } } }, - "/v1/server/AWSInstance": { - "get": { - "description": "Checks AWS EC2 instance ID.", - "tags": [ - "ServerService" - ], - "summary": "AWS instance check", - "operationId": "AWSInstanceCheck", - "parameters": [ - { - "type": "string", - "description": "AWS EC2 instance ID (i-1234567890abcdef0).", - "name": "instance_id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, "/v1/server/leaderHealthCheck": { "get": { "description": "Checks if the instance is the leader in a cluster. Returns an error if the instance isn't the leader.", diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 765fbdcdd3..53ea07bff3 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -25748,65 +25748,6 @@ } } }, - "/v1/server/AWSInstance": { - "get": { - "description": "Checks AWS EC2 instance ID.", - "tags": [ - "ServerService" - ], - "summary": "AWS instance check", - "operationId": "AWSInstanceCheck", - "parameters": [ - { - "type": "string", - "description": "AWS EC2 instance ID (i-1234567890abcdef0).", - "name": "instance_id", - "in": "query" - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } - } - }, "/v1/server/leaderHealthCheck": { "get": { "description": "Checks if the instance is the leader in a cluster. Returns an error if the instance isn't the leader.", diff --git a/build/Makefile b/build/Makefile index 66da3fddb0..8640220610 100644 --- a/build/Makefile +++ b/build/Makefile @@ -1,5 +1,6 @@ export PACKER_CACHE_DIR := .cache export PACKER_VERSION := 1.9.4 +export PMM_SERVER_IMAGE ?= docker.io/perconalab/pmm-server:3-dev-latest ## ----------------- PACKER ------------------ fetch: @@ -21,8 +22,7 @@ deps: unzip -o ${PACKER_CACHE_DIR}/packer.zip -d ~/bin pmm-ovf: fetch - /usr/bin/packer build \ - -only virtualbox-ovf -color=false packer/pmm.json | tee build.log + /usr/bin/packer build -var 'pmm_server_image_name=${PMM_SERVER_IMAGE}' -only virtualbox-ovf -color=false packer/pmm.json | tee build.log pmm-digitalocean: packer build -only digitalocean -var 'single_disk=true' packer/pmm.json @@ -32,7 +32,7 @@ pmm-azure: pmm-ami: docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build \hashicorp/packer:${PACKER_VERSION} \ - build -only amazon-ebs -color=false packer/pmm.json | tee build.log + build -var 'pmm_server_image_name=${PMM_SERVER_IMAGE}' -only amazon-ebs -color=false packer/pmm.json | tee build.log ## ----------------- PACKER ------------------ check: ## Run required checks and linters diff --git a/build/ansible/roles/init-admin-password-ami/tasks/main.yml b/build/ansible/roles/init-admin-password-ami/tasks/main.yml new file mode 100644 index 0000000000..9275e0dd56 --- /dev/null +++ b/build/ansible/roles/init-admin-password-ami/tasks/main.yml @@ -0,0 +1,10 @@ +- name: Fetch instance metadata + uri: + url: http://169.254.169.254/latest/meta-data/instance-id + return_content: yes + register: jsondata + +- debug: msg="Instance ID {{ jsondata['content'] }}" + +- name: change admin password + command: change-admin-password {{ jsondata['content'] }} diff --git a/build/ansible/roles/initialization/tasks/main.yml b/build/ansible/roles/initialization/tasks/main.yml index fdbe31c9b2..8715815ad3 100644 --- a/build/ansible/roles/initialization/tasks/main.yml +++ b/build/ansible/roles/initialization/tasks/main.yml @@ -1,5 +1,21 @@ --- # This role contains tasks executed during initialization of PMM Server +- name: detect /srv/pmm-distribution + slurp: + path: /srv/pmm-distribution + register: pmm_distribution + ignore_errors: True + +- name: detect AMI + set_fact: + is_ami: "{{ pmm_distribution['content'] | b64decode | trim == 'ami' }}" + when: pmm_distribution['failed'] == false + +- name: Set PMM distribution + set_fact: + is_ami: "False" + when: pmm_distribution['failed'] == true + - name: Get current version slurp: src: /srv/grafana/PERCONA_DASHBOARDS_VERSION @@ -25,63 +41,102 @@ set_fact: pmm_image_version: "{{ image_version_file['content'] | b64decode | trim }}" +- name: Set need_initialization fact + set_fact: + need_initialization: "{{ current_version_file['failed'] == true }}" + - name: Set need_upgrade fact set_fact: need_upgrade: "{{ pmm_current_version is version(pmm_image_version, '<') }}" +- name: Print PMM distribution + debug: + msg: "PMM distribution: {{ pmm_distribution }}, Is AMI: {{ is_ami }}" + - name: Print current PMM and image versions debug: msg: "Current version: {{ pmm_current_version }} Image Version: {{ pmm_image_version }}" +- name: Print need_initialization fact + debug: + msg: "Need initialization: {{ need_initialization }}" + - name: Print need_upgrade fact debug: msg: "Need upgrade: {{ need_upgrade }}" -- name: Perform upgrade tasks +- name: Perform upgrade & init tasks block: - - name: Enable maintenance mode before upgrade - copy: - src: maintenance.html - dest: /usr/share/pmm-server/maintenance/ - owner: pmm - group: pmm - mode: 0644 - - - name: Upgrade dashboards - include_role: - name: dashboards - - - name: Copy file with image version - copy: - src: /usr/share/percona-dashboards/VERSION - dest: /srv/grafana/PERCONA_DASHBOARDS_VERSION - owner: pmm - group: pmm - mode: 0644 - remote_src: yes - - - name: Create a backup directory - file: - path: /srv/backup - state: directory - owner: pmm - group: pmm - mode: 0775 - - # Note: we want to leave this for some time until we achieve stable builds - - name: Output pmm-managed logs - shell: sleep 10 && tail -n 300 /srv/logs/pmm-managed.log - - - name: Wait for PMM to be ready - ansible.builtin.uri: - url: "http://127.0.0.1:7772/v1/server/readyz" - status_code: 200 - method: GET - retries: 20 - delay: 5 - - - name: Disable maintenance mode - file: - state: absent - path: /usr/share/pmm-server/maintenance/maintenance.html - when: need_upgrade + - name: Enable maintenance mode before upgrade + copy: + src: maintenance.html + dest: /usr/share/pmm-server/maintenance/ + owner: pmm + group: pmm + mode: 0644 + + - name: Create grafana DB + block: + - name: Create grafana database in postgres + postgresql_db: + name: grafana + login_user: postgres + state: present + + - name: Create grafana user in postgres + postgresql_user: + db: grafana + name: grafana + password: grafana + priv: 'ALL' + expires: infinity + login_user: postgres + state: present + when: not ansible_check_mode + when: lookup('env','GF_DATABASE_URL') == '' and lookup('env','GF_DATABASE_HOST') == '' and need_initialization + + - name: Upgrade/Install dashboards + include_role: + name: dashboards + + - name: Copy file with image version + copy: + src: /usr/share/percona-dashboards/VERSION + dest: /srv/grafana/PERCONA_DASHBOARDS_VERSION + owner: pmm + group: pmm + mode: 0644 + remote_src: yes + + - name: Create a backup directory + file: + path: /srv/backup + state: directory + owner: pmm + group: pmm + mode: 0775 + when: need_upgrade + + # Note: we want to leave this for some time until we achieve stable builds + - name: Output pmm-managed logs + shell: sleep 10 && tail -n 300 /srv/logs/pmm-managed.log + + - name: Wait for PMM to be ready + ansible.builtin.uri: + url: "http://127.0.0.1:7772/v1/server/readyz" + status_code: 200 + method: GET + retries: 20 + delay: 5 + ignore_errors: yes + + - name: init admin password on AMI + include_role: + name: init-admin-password-ami + when: need_initialization and is_ami + + - name: Disable maintenance mode + file: + state: absent + path: /usr/share/pmm-server/maintenance/maintenance.html + when: need_initialization or need_upgrade diff --git a/build/ansible/roles/nginx/files/conf.d/pmm.conf b/build/ansible/roles/nginx/files/conf.d/pmm.conf index 21623d8831..c4ac6155bd 100644 --- a/build/ansible/roles/nginx/files/conf.d/pmm.conf +++ b/build/ansible/roles/nginx/files/conf.d/pmm.conf @@ -73,13 +73,9 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Enable auth_request for all locations, including root - # (but excluding /auth_request and /setup below). + # (but excluding /auth_request). auth_request /auth_request; - # Store the value of X-Must-Setup header of auth_request subrequest response in the variable. - # It is used below in /auth_request. - auth_request_set $auth_request_must_setup $upstream_http_x_must_setup; - # Store the value of X-Proxy-Filter header of auth_request subrequest response in the variable. auth_request_set $auth_request_proxy_filter $upstream_http_x_proxy_filter; proxy_set_header X-Proxy-Filter $auth_request_proxy_filter; @@ -109,23 +105,11 @@ proxy_http_version 1.1; proxy_set_header Connection ""; - # This header is set only for to the second request, not for the first subrequest. - # That variable is set above. - proxy_set_header X-Must-Setup $auth_request_must_setup; - # Those headers are set for both subrequest and normal request. proxy_set_header X-Original-Uri $request_uri; proxy_set_header X-Original-Method $request_method; } - # AWS setup wizard - location /setup { - auth_request off; - - alias /usr/share/percona-dashboards/setup-page; - try_files $uri /index.html break; - } - # PMM UI location /pmm-ui { # Will redirect on FE to login page if user is not authenticated diff --git a/build/docker/server/entrypoint.sh b/build/docker/server/entrypoint.sh index df1e5b755e..4b7b0b7f93 100755 --- a/build/docker/server/entrypoint.sh +++ b/build/docker/server/entrypoint.sh @@ -1,6 +1,8 @@ #!/bin/bash set -o errexit +PMM_DISTRIBUTION_METHOD="${PMM_DISTRIBUTION_METHOD:-docker}" + if [ ! -w /srv ]; then echo "FATAL: /srv is not writable for $(whoami) user." >&2 echo "Please make sure that /srv is owned by uid $(id -u) and gid $(id -g) and try again." >&2 @@ -11,12 +13,12 @@ fi # Initialize /srv if empty DIST_FILE=/srv/pmm-distribution if [ ! -f $DIST_FILE ]; then - echo "File $DIST_FILE doesn't exist. Initializing /srv..." - echo docker > $DIST_FILE + echo $PMM_DISTRIBUTION_METHOD > $DIST_FILE + echo "Initializing /srv..." mkdir -p /srv/{backup,clickhouse,grafana,logs,nginx,postgres14,prometheus,victoriametrics} echo "Copying grafana plugins and the VERSION file..." + mkdir -p /srv/grafana/plugins cp -r /usr/share/percona-dashboards/panels/* /srv/grafana/plugins - cp /usr/share/percona-dashboards/VERSION /srv/grafana/PERCONA_DASHBOARDS_VERSION echo "Generating self-signed certificates for nginx..." bash /var/lib/cloud/scripts/per-boot/generate-ssl-certificate @@ -26,8 +28,6 @@ if [ ! -f $DIST_FILE ]; then echo "Enabling pg_stat_statements extension for PostgreSQL..." /usr/pgsql-14/bin/pg_ctl start -D /srv/postgres14 -o '-c logging_collector=off' - # We create the postgres user with superuser privileges to not break the code that connects pmm-managed to postgres. - /usr/pgsql-14/bin/createuser --echo --superuser --host=/run/postgresql --no-password postgres /usr/bin/psql postgres postgres -c 'CREATE EXTENSION pg_stat_statements SCHEMA public' /usr/pgsql-14/bin/pg_ctl stop -D /srv/postgres14 fi diff --git a/build/packages/rpm/server/SPECS/percona-dashboards.spec b/build/packages/rpm/server/SPECS/percona-dashboards.spec index 5a1a895ed3..eb964ce17f 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 21 +%define release 22 %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} Name: percona-dashboards @@ -42,11 +42,9 @@ make release %install install -d %{buildroot}%{_datadir}/%{name} install -d %{buildroot}%{_datadir}/%{name}/panels/pmm-app -install -d %{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 @@ -57,6 +55,9 @@ echo %{version} > %{buildroot}%{_datadir}/%{name}/VERSION %changelog +* Tue Jul 23 2024 Nurlan Moldomurov - 3.0.0-22 +- PMM-13053 Remove /setup page + * Wed Nov 29 2023 Alex Demidoff - 3.0.0-21 - PMM-12693 Run Grafana as non-root user diff --git a/build/packer/ansible/roles/cloud-node/files/show-url b/build/packer/ansible/roles/cloud-node/files/show-url index a72488a9b0..c7f3f13410 100644 --- a/build/packer/ansible/roles/cloud-node/files/show-url +++ b/build/packer/ansible/roles/cloud-node/files/show-url @@ -5,8 +5,7 @@ SOURCE= if [ -f /var/lib/cloud/data/status.json ]; then SOURCE=$( - cat /var/lib/cloud/data/status.json 2>/dev/null \ - | python -c 'import json, sys; print json.load(sys.stdin)["v1"]["datasource"];' 2>/dev/null + cat /var/lib/cloud/data/status.json 2>/dev/null | jq -r '.v1.datasource' 2>/dev/null ) fi diff --git a/build/packer/ansible/roles/cloud-node/tasks/ovf.yml b/build/packer/ansible/roles/cloud-node/tasks/ovf.yml index db520b2959..786d521d9e 100644 --- a/build/packer/ansible/roles/cloud-node/tasks/ovf.yml +++ b/build/packer/ansible/roles/cloud-node/tasks/ovf.yml @@ -13,3 +13,21 @@ retries: 2 dest: /etc/cloud/cloud.cfg.d/90_disable-cloud.cfg mode: 0644 + +- name: Create user-specific .ssh directory + when: ansible_virtualization_type == "virtualbox" + file: + path: /home/admin/.ssh + state: directory + owner: admin + group: admin + mode: '0700' + +- name: create authorized_keys file + when: ansible_virtualization_type == "virtualbox" + file: + path: /home/admin/.ssh/authorized_keys + state: touch + owner: admin + group: admin + mode: '0600' \ No newline at end of file diff --git a/build/packer/ansible/roles/lvm-init/vars/main.yml b/build/packer/ansible/roles/lvm-init/vars/main.yml index 3568493682..8934b62d03 100644 --- a/build/packer/ansible/roles/lvm-init/vars/main.yml +++ b/build/packer/ansible/roles/lvm-init/vars/main.yml @@ -1,5 +1,5 @@ --- -data_partition: "/srv" +data_partition: "/home/admin/volume" create_admin: "true" enable_lvm: "true" single_disk: "false" diff --git a/build/packer/ansible/roles/podman-setup/tasks/main.yml b/build/packer/ansible/roles/podman-setup/tasks/main.yml index 7854d0b157..5c53c631cb 100644 --- a/build/packer/ansible/roles/podman-setup/tasks/main.yml +++ b/build/packer/ansible/roles/podman-setup/tasks/main.yml @@ -1,23 +1,38 @@ +- name: Create user-specific volume directory + file: + path: /home/admin/volume/srv/ + state: directory + owner: admin + group: admin + mode: '0755' + - name: Set distribution for OVF when: ansible_virtualization_type == "virtualbox" - copy: - content: ovf - dest: /srv/pmm-distribution + set_fact: + pmm_distribution_method: ovf - name: Set distribution for AMI when: > ( ansible_virtualization_type == "xen" or ansible_virtualization_type == "kvm" ) and ansible_system_vendor != "DigitalOcean" - copy: - content: ami - dest: /srv/pmm-distribution + set_fact: + pmm_distribution_method: ami -- name: Pull the PMM image - command: podman pull {{ pmm_server_image_name }} +- name: Set SELinux in permissive mode for watchtower + selinux: + policy: targeted + state: permissive - name: Create a volume on the host command: podman volume create pmm-data + become: true + become_user: admin + +- name: Create a network + command: podman network create pmm_default + become: true + become_user: admin - name: Enable privileged port become: true @@ -33,7 +48,23 @@ group: admin mode: '0755' -- name: Copy systemd service file to user-specific directory +- name: Copy pmm-server environment file for service to user-specific directory + template: + src: pmm-server.env + dest: /home/admin/.config/systemd/user/ + owner: admin + group: admin + mode: '0644' + +- name: Display the contents of the environment file + command: cat /home/admin/.config/systemd/user/pmm-server.env + register: command_output + +- name: Print to console + debug: + msg: "{{command_output.stdout}}" + +- name: Copy pmm-server systemd service file to user-specific directory template: src: pmm-server.service dest: /home/admin/.config/systemd/user/ @@ -41,6 +72,14 @@ group: admin mode: '0644' +- name: Copy watchtower systemd service file to user-specific directory + template: + src: watchtower.service + dest: /home/admin/.config/systemd/user/ + owner: admin + group: admin + mode: '0644' + - name: Get user ID of admin user command: id -u admin register: admin_user_id @@ -48,9 +87,32 @@ - name: Enable linger for the admin user command: loginctl enable-linger {{ admin_user_id.stdout }} +- name: Pull the PMM image + command: podman pull {{ pmm_server_image_name }} + become: true + become_user: admin + - name: Enable and start PMM container as a user service command: systemctl --user enable --now pmm-server become: true become_user: admin environment: DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ admin_user_id.stdout }}/bus" + +- name: Enable socket + command: systemctl --user enable --now podman.socket + become: true + become_user: admin + environment: + DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ admin_user_id.stdout }}/bus" + +- name: Enable and start watchtower container as a user service + command: systemctl --user enable --now watchtower + become: true + become_user: admin + environment: + DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ admin_user_id.stdout }}/bus" + +- name: Sleep for 1 minute + pause: + minutes: 1 diff --git a/build/packer/ansible/roles/podman-setup/templates/pmm-server.env b/build/packer/ansible/roles/podman-setup/templates/pmm-server.env new file mode 100644 index 0000000000..88936af0a7 --- /dev/null +++ b/build/packer/ansible/roles/podman-setup/templates/pmm-server.env @@ -0,0 +1,5 @@ +PMM_WATCHTOWER_HOST=http://watchtower:8080 +PMM_WATCHTOWER_TOKEN=123 +PMM_SERVER_UPDATE_VERSION=docker.io/perconalab/pmm-server:3-dev-container +PMM_IMAGE={{ pmm_server_image_name }} +PMM_DISTRIBUTION_METHOD={{ pmm_distribution_method }} \ No newline at end of file diff --git a/build/packer/ansible/roles/podman-setup/templates/pmm-server.service b/build/packer/ansible/roles/podman-setup/templates/pmm-server.service index ecb10f37df..dc862129e3 100644 --- a/build/packer/ansible/roles/podman-setup/templates/pmm-server.service +++ b/build/packer/ansible/roles/podman-setup/templates/pmm-server.service @@ -6,11 +6,21 @@ After=nss-user-lookup.target nss-lookup.target After=time-sync.target [Service] -TimeoutStartSec=0 -Restart=always +EnvironmentFile=/home/admin/.config/systemd/user/pmm-server.env -ExecStart=/usr/bin/podman run --volume pmm-data:/srv/ --rm --name %N \ - -p 443:8443/tcp --ulimit=host {{ pmm_server_image_name }} +Restart=on-failure +RestartSec=20 + +ExecStart=/usr/bin/podman run \ + --volume /home/admin/volume/srv:/srv \ + --volume /home/admin/.ssh/:/home/pmm/.ssh/ \ + --volume /home/admin/.config/:/home/pmm/config/ \ + --rm --replace=true --name %N \ + --env-file=/home/admin/.config/systemd/user/pmm-server.env \ + --net pmm_default \ + --cap-add=net_admin,net_raw \ + --userns=keep-id:uid=1000,gid=1000 \ + -p 443:8443/tcp --ulimit=host ${PMM_IMAGE} ExecStop=/usr/bin/podman stop -t 10 %N diff --git a/build/packer/ansible/roles/podman-setup/templates/watchtower.service b/build/packer/ansible/roles/podman-setup/templates/watchtower.service new file mode 100644 index 0000000000..96c1e93202 --- /dev/null +++ b/build/packer/ansible/roles/podman-setup/templates/watchtower.service @@ -0,0 +1,30 @@ +[Unit] +Description=watchtower +Wants=network-online.target +After=network-online.target +After=nss-user-lookup.target nss-lookup.target +After=time-sync.target + +[Service] +Restart=on-failure +RestartSec=20 + +Environment=WATCHTOWER_HTTP_API_UPDATE=1 +Environment=WATCHTOWER_HTTP_API_TOKEN=123 +Environment=WATCHTOWER_NO_RESTART=1 +Environment=WATCHTOWER_DEBUG=1 + +ExecStart=/usr/bin/podman run --rm --replace=true --name %N \ + -v ${XDG_RUNTIME_DIR}/podman/podman.sock:/var/run/docker.sock \ + -e WATCHTOWER_HTTP_API_UPDATE=${WATCHTOWER_HTTP_API_UPDATE} \ + -e WATCHTOWER_HTTP_API_TOKEN=${WATCHTOWER_HTTP_API_TOKEN} \ + -e WATCHTOWER_NO_RESTART=${WATCHTOWER_NO_RESTART} \ + -e WATCHTOWER_DEBUG=${WATCHTOWER_DEBUG} \ + --net pmm_default \ + --cap-add=net_admin,net_raw \ + -p 8080:8080/tcp docker.io/perconalab/watchtower + +ExecStop=/usr/bin/podman stop -t 10 %N + +[Install] +WantedBy=default.target diff --git a/build/packer/pmm.json b/build/packer/pmm.json index 3262b48916..5fd2f79a43 100644 --- a/build/packer/pmm.json +++ b/build/packer/pmm.json @@ -12,7 +12,7 @@ { "delete_on_termination": true, "device_name": "/dev/sda1", - "volume_size": 10, + "volume_size": 20, "volume_type": "gp3" }, { diff --git a/descriptor.bin b/descriptor.bin index a588614ad11cd3c8bbf11aa78f21133ccccd60ba..b6d43848715709a2fac2d22b535e79564fab075a 100644 GIT binary patch delta 1611 zcmYk6%}-rb5Wtyv=gxhd+5!g&U7&e34I~f+7NE2c3tC9(w(X`1(=Gpik!r?3W-UggpxQZCc8f2rzh~!=jO*I_*7$BoaC!G{lNV4BsUWu-8{;%jT#!>O`m-< zYMuYQ!gKAr#~G=?(q#}lJi}x5G89{RfDJXE@CCqc)3Y<&UtR#(!+SV#9IaV^z3o|8 zaAD^_78+}=fH}m?yvzOAT)6bvenpl!M^fYplm@vm)HIg90`m=!ndO#~OHg`3ML|TbgSnZDf^njXf|Wzk?FLY%)N`JW6l}B%^abzMMvOu~uI} zBw01Lg3vya_J4!%+Ker_sDPj@joL`C%Lr6ozp~ zoGO^F#u3qa0cn6o{V-%{3h}jc{X-rpPhq|plEf*@H$##&g|eCO2Sj3c2F;Lu1f=)m zQ5Ym3DRKr&2lWXgi(W$WYVJ(lS&@DOj!D|fm~X%lY5xk+AP;-#*iscSO|N~#L***c zgQ^uvVijAvvQV+vPa7diqcBR5j9FgK@k^1K6KIWaa{{gL({?Gsb delta 2339 zcmaKuTWl0%6vy|R{r21GDVO$xZR=WaXiY)TZ5M5!g@UC(gCr)R;xpDY0!dL8Nko&y zx?aE(6;cN;B`p`5_#i$Q`(omQ4;n)-C@J2OB4Ub)DR@aiyq)hd(~88$^WXWO^ZU>F zW@ay5ng7<43w9Qvh{bqO6ca^ROcuRj$vd=i6OKPIw0aY5m|j=YPL*x<-MywOzimTT zXRiIBT<7L>xknz&<+rJMRJzgX!JL)e%wYE!ue7=*O;!IjFZ63 z{4!tvwyJ&M#P4fXX1YH+yAP{WMg8_{y#=YCL~+NyJ1MCWvDhF6*&&)4^zBNP4!ygR z-mET6ArvVkk3sAc04k-pNP!Z^z`KE3NQe~1lsFE!Jbm-E2K)0i-jZE->urrqixxLG zY`DMkf!u=)H)V*XQbKzZ#_WY9cRmg!Gs7~j#M>c%{p_bCE zM2uOX#0iMi8psN6bpkw}ItXP<$&(Np3^w=C>e(m3OHmUE8Dn%g4EQy~({=v(+}8ZY zEnUH!L!AG@4k`)G_tBKXFvzKTyuO-e4a2nRuw=SnnA;SVLWxr#mS{MAv3UFA_iCJ^ zh$4xboC3d@rrVxE$LaOORRm2uv1Gas=?Z zVDJEaSQr60-EjdsN1)6POSX-`f~8@})TcqTIBIazMzYja;wGoTU+k!XslNenHlhZh zsh#AgwZ^tHAm?&-O|6x8xXFcy0}^NG ziy(fDpyLMGN$yr_jcq@Job8~s!sCAd*-DEHH1`=bmq1+M`7_MH7M42{Ex8pr;AN0?G+9e3@w+~Z_PFbAe}MSABZ?zT9Idfr z54V<>=}(ZeCMk^d7sw3VZqg)_>_&V(C_6;U3*8v4Ai>6Nj8>3fS2yws?Dzzae+tDj z7=}r>Fiy1KR^%{6l=EE}t8tj8F$$x*J&R&@2e-2iZ^DGp8cQ~emYC@|j8>x+#@dCl ziB^~}Qpp~~eL?ClwH10W+Kgml4@R4j?CL?@jC~zRCftK!se1^dJ5NTkL9E10_MqS5 zZUMXG3w)#_W@(t6 /inventory.Nodes/ -> /inventory.Nodes -> /inventory. -> /inventory -> / // /v1/inventory/Nodes/List -> /v1/inventory/Nodes/ -> /v1/inventory/Nodes -> /v1/inventory/ -> /v1/inventory -> /v1/ -> /v1 -> / diff --git a/managed/services/grafana/auth_server_test.go b/managed/services/grafana/auth_server_test.go index 54ab827128..42aa225fac 100644 --- a/managed/services/grafana/auth_server_test.go +++ b/managed/services/grafana/auth_server_test.go @@ -20,7 +20,6 @@ import ( "encoding/base64" "encoding/json" "fmt" - "io" "net/http" "net/http/httptest" "testing" @@ -65,112 +64,12 @@ func TestNextPrefix(t *testing.T) { } } -func TestAuthServerMustSetup(t *testing.T) { - t.Run("MustCheck", func(t *testing.T) { - req, err := http.NewRequest(http.MethodGet, "/graph", nil) - require.NoError(t, err) - - checker := &mockAwsInstanceChecker{} - checker.Test(t) - defer checker.AssertExpectations(t) - - s := NewAuthServer(nil, checker, nil) - - t.Run("Subrequest", func(t *testing.T) { - checker.On("MustCheck").Return(true) - rw := httptest.NewRecorder() - assert.True(t, s.mustSetup(rw, req, logrus.WithField("test", t.Name()))) - - resp := rw.Result() - defer resp.Body.Close() //nolint:gosec,errcheck,nolintlint - assert.Equal(t, 401, resp.StatusCode) - assert.Equal(t, "1", resp.Header.Get("X-Must-Setup")) - assert.Equal(t, "", resp.Header.Get("Location")) - b, err := io.ReadAll(resp.Body) - assert.NoError(t, err) - assert.Empty(t, b) - }) - - t.Run("Request", func(t *testing.T) { - req.Header.Set("X-Must-Setup", "1") - - checker.On("MustCheck").Return(true) - rw := httptest.NewRecorder() - assert.True(t, s.mustSetup(rw, req, logrus.WithField("test", t.Name()))) - - resp := rw.Result() - defer resp.Body.Close() //nolint:gosec,errcheck,nolintlint - assert.Equal(t, 303, resp.StatusCode) - assert.Equal(t, "", resp.Header.Get("X-Must-Setup")) - assert.Equal(t, "/setup", resp.Header.Get("Location")) - b, err := io.ReadAll(resp.Body) - assert.NoError(t, err) - assert.Empty(t, b) - }) - }) - - t.Run("MustNotCheck", func(t *testing.T) { - req, err := http.NewRequest(http.MethodGet, "/graph", nil) - require.NoError(t, err) - - checker := &mockAwsInstanceChecker{} - checker.Test(t) - defer checker.AssertExpectations(t) - - s := NewAuthServer(nil, checker, nil) - - t.Run("Subrequest", func(t *testing.T) { - checker.On("MustCheck").Return(false) - rw := httptest.NewRecorder() - assert.False(t, s.mustSetup(rw, req, logrus.WithField("test", t.Name()))) - - resp := rw.Result() - defer resp.Body.Close() //nolint:gosec,errcheck,nolintlint - assert.Equal(t, 200, resp.StatusCode) - assert.Equal(t, "", resp.Header.Get("X-Must-Setup")) - assert.Equal(t, "", resp.Header.Get("Location")) - b, err := io.ReadAll(resp.Body) - assert.NoError(t, err) - assert.Empty(t, b) - }) - }) - - t.Run("SkipNonUI", func(t *testing.T) { - req, err := http.NewRequest(http.MethodGet, "/dummy", nil) - require.NoError(t, err) - - checker := &mockAwsInstanceChecker{} - checker.Test(t) - defer checker.AssertExpectations(t) - - s := NewAuthServer(nil, checker, nil) - - t.Run("Subrequest", func(t *testing.T) { - rw := httptest.NewRecorder() - assert.False(t, s.mustSetup(rw, req, logrus.WithField("test", t.Name()))) - - resp := rw.Result() - defer resp.Body.Close() //nolint:gosec,errcheck,nolintlint - assert.Equal(t, 200, resp.StatusCode) - assert.Equal(t, "", resp.Header.Get("X-Must-Setup")) - assert.Equal(t, "", resp.Header.Get("Location")) - b, err := io.ReadAll(resp.Body) - assert.NoError(t, err) - assert.Empty(t, b) - }) - }) -} - func TestAuthServerAuthenticate(t *testing.T) { t.Parallel() - checker := &mockAwsInstanceChecker{} - checker.Test(t) - t.Cleanup(func() { checker.AssertExpectations(t) }) - ctx := context.Background() c := NewClient("127.0.0.1:3000") - s := NewAuthServer(c, checker, nil) + s := NewAuthServer(c, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/dummy", nil) require.NoError(t, err) @@ -283,13 +182,9 @@ func TestAuthServerAuthenticate(t *testing.T) { func TestServerClientConnection(t *testing.T) { t.Parallel() - checker := &mockAwsInstanceChecker{} - checker.Test(t) - t.Cleanup(func() { checker.AssertExpectations(t) }) - ctx := context.Background() c := NewClient("127.0.0.1:3000") - s := NewAuthServer(c, checker, nil) + s := NewAuthServer(c, nil) t.Run("Basic auth - success", func(t *testing.T) { t.Parallel() @@ -365,12 +260,8 @@ func TestAuthServerAddVMGatewayToken(t *testing.T) { require.NoError(t, sqlDB.Close()) }(t) - var checker mockAwsInstanceChecker - checker.Test(t) - defer checker.AssertExpectations(t) - c := NewClient("127.0.0.1:3000") - s := NewAuthServer(c, &checker, db) + s := NewAuthServer(c, db) roleA := models.Role{ Title: "Role A", diff --git a/managed/services/grafana/deps.go b/managed/services/grafana/deps.go index fe4f32012e..39862b3980 100644 --- a/managed/services/grafana/deps.go +++ b/managed/services/grafana/deps.go @@ -14,9 +14,3 @@ // along with this program. If not, see . package grafana - -// 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. -type awsInstanceChecker interface { - MustCheck() bool -} diff --git a/managed/services/grafana/mock_aws_instance_checker_test.go b/managed/services/grafana/mock_aws_instance_checker_test.go deleted file mode 100644 index f502ba06d3..0000000000 --- a/managed/services/grafana/mock_aws_instance_checker_test.go +++ /dev/null @@ -1,43 +0,0 @@ -// Code generated by mockery. DO NOT EDIT. - -package grafana - -import mock "github.com/stretchr/testify/mock" - -// mockAwsInstanceChecker is an autogenerated mock type for the awsInstanceChecker type -type mockAwsInstanceChecker struct { - mock.Mock -} - -// MustCheck provides a mock function with given fields: -func (_m *mockAwsInstanceChecker) MustCheck() bool { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for MustCheck") - } - - var r0 bool - if rf, ok := ret.Get(0).(func() bool); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(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/server/aws_instance_checker.go b/managed/services/server/aws_instance_checker.go deleted file mode 100644 index b4b047f1cb..0000000000 --- a/managed/services/server/aws_instance_checker.go +++ /dev/null @@ -1,121 +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 server - -import ( - "crypto/subtle" - "sync" - - "github.com/aws/aws-sdk-go/aws/ec2metadata" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "gopkg.in/reform.v1" - - serverv1 "github.com/percona/pmm/api/server/v1" - "github.com/percona/pmm/managed/models" -) - -// AWSInstanceChecker checks AWS EC2 instance ID for AMI. -type AWSInstanceChecker struct { - db *reform.DB - telemetryService telemetryService - l *logrus.Entry - - rw sync.RWMutex - checked bool -} - -// NewAWSInstanceChecker creates a new AWSInstanceChecker. -func NewAWSInstanceChecker(db *reform.DB, telemetryService telemetryService) *AWSInstanceChecker { - return &AWSInstanceChecker{ - db: db, - telemetryService: telemetryService, - l: logrus.WithField("component", "server/awsInstanceChecker"), - } -} - -// MustCheck returns true if instance ID must be checked: this is AMI, and it wasn't checked already. -func (c *AWSInstanceChecker) MustCheck() bool { - // fast-path without hitting database - c.rw.RLock() - checked := c.checked - c.rw.RUnlock() - if checked { - return false - } - - c.rw.Lock() - defer c.rw.Unlock() - - if c.telemetryService.DistributionMethod() != serverv1.DistributionMethod_DISTRIBUTION_METHOD_AMI { - c.checked = true - return false - } - - settings, err := models.GetSettings(c.db.Querier) - if err != nil { - c.l.Error(err) - return true - } - if settings.AWSInstanceChecked { - c.checked = true - return false - } - - return true -} - -// check performs instance ID check and stores successful result flag in settings. -func (c *AWSInstanceChecker) check(instanceID string) error { - // do not allow more AWS API calls if instance is already checked - if !c.MustCheck() { - return nil - } - - sess, err := session.NewSession() - if err != nil { - return errors.Wrap(err, "cannot create AWS session") - } - doc, err := ec2metadata.New(sess).GetInstanceIdentityDocument() - if err != nil { - c.l.Error(err) - return status.Error(codes.Unavailable, "cannot get instance metadata") - } - if subtle.ConstantTimeCompare([]byte(instanceID), []byte(doc.InstanceID)) == 0 { - return status.Error(codes.InvalidArgument, "invalid instance ID") - } - - if e := c.db.InTransaction(func(tx *reform.TX) error { - settings, err := models.GetSettings(tx.Querier) - if err != nil { - return err - } - - settings.AWSInstanceChecked = true - return models.SaveSettings(tx.Querier, settings) - }); e != nil { - return e - } - - c.rw.Lock() - c.checked = true - c.rw.Unlock() - - return nil -} diff --git a/managed/services/server/aws_instance_checker_test.go b/managed/services/server/aws_instance_checker_test.go deleted file mode 100644 index f82d0a8b63..0000000000 --- a/managed/services/server/aws_instance_checker_test.go +++ /dev/null @@ -1,95 +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 server - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "gopkg.in/reform.v1" - "gopkg.in/reform.v1/dialects/postgresql" - - serverv1 "github.com/percona/pmm/api/server/v1" - "github.com/percona/pmm/managed/models" - "github.com/percona/pmm/managed/utils/testdb" - "github.com/percona/pmm/managed/utils/tests" -) - -func TestAWSInstanceChecker(t *testing.T) { - setup := func(t *testing.T) (db *reform.DB, teardown func()) { - t.Helper() - sqlDB := testdb.Open(t, models.SkipFixtures, nil) - db = reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) - - teardown = func() { - t.Helper() - require.NoError(t, sqlDB.Close()) - } - - return - } - - t.Run("Docker", func(t *testing.T) { - db, teardown := setup(t) - defer teardown() - - telemetry := &mockTelemetryService{} - telemetry.Test(t) - telemetry.On("DistributionMethod").Return(serverv1.DistributionMethod_DISTRIBUTION_METHOD_DOCKER) - defer telemetry.AssertExpectations(t) - - checker := NewAWSInstanceChecker(db, telemetry) - assert.False(t, checker.MustCheck()) - assert.NoError(t, checker.check("foo")) - }) - - t.Run("AMI", func(t *testing.T) { - db, teardown := setup(t) - defer teardown() - - telemetry := &mockTelemetryService{} - telemetry.Test(t) - telemetry.On("DistributionMethod").Return(serverv1.DistributionMethod_DISTRIBUTION_METHOD_AMI) - defer telemetry.AssertExpectations(t) - - checker := NewAWSInstanceChecker(db, telemetry) - assert.True(t, checker.MustCheck()) - tests.AssertGRPCError(t, status.New(codes.Unavailable, `cannot get instance metadata`), checker.check("foo")) - }) - - t.Run("AMI/Checked", func(t *testing.T) { - db, teardown := setup(t) - defer teardown() - - settings, err := models.GetSettings(db.Querier) - require.NoError(t, err) - settings.AWSInstanceChecked = true - err = models.SaveSettings(db.Querier, settings) - require.NoError(t, err) - - telemetry := &mockTelemetryService{} - telemetry.Test(t) - telemetry.On("DistributionMethod").Return(serverv1.DistributionMethod_DISTRIBUTION_METHOD_AMI) - defer telemetry.AssertExpectations(t) - - checker := NewAWSInstanceChecker(db, telemetry) - assert.False(t, checker.MustCheck()) - assert.NoError(t, checker.check("foo")) - }) -} diff --git a/managed/services/server/server.go b/managed/services/server/server.go index 2bd2cd502d..051214bf8c 100644 --- a/managed/services/server/server.go +++ b/managed/services/server/server.go @@ -43,6 +43,7 @@ import ( serverv1 "github.com/percona/pmm/api/server/v1" "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/managed/utils/distribution" "github.com/percona/pmm/managed/utils/envvars" "github.com/percona/pmm/version" ) @@ -58,7 +59,6 @@ type Server struct { templatesService templatesService supervisord supervisordService telemetryService telemetryService - awsInstanceChecker *AWSInstanceChecker grafanaClient grafanaClient haService haService updater *Updater @@ -91,9 +91,9 @@ type Params struct { VMAlertExternalRules vmAlertExternalRules Supervisord supervisordService TelemetryService telemetryService - AwsInstanceChecker *AWSInstanceChecker GrafanaClient grafanaClient Updater *Updater + Dus *distribution.Service } // NewServer returns new server for Server service. @@ -114,7 +114,6 @@ func NewServer(params *Params) (*Server, error) { vmalertExternalRules: params.VMAlertExternalRules, supervisord: params.Supervisord, telemetryService: params.TelemetryService, - awsInstanceChecker: params.AwsInstanceChecker, grafanaClient: params.GrafanaClient, updater: params.Updater, l: logrus.WithField("component", "server"), @@ -666,6 +665,11 @@ func (s *Server) writeSSHKey(sshKey string) error { s.sshKeyM.Lock() defer s.sshKeyM.Unlock() + distributionMethod := s.telemetryService.DistributionMethod() + if distributionMethod != serverv1.DistributionMethod_DISTRIBUTION_METHOD_AMI && distributionMethod != serverv1.DistributionMethod_DISTRIBUTION_METHOD_OVF { + return errors.New("SSH key can be set only on AMI and OVF distributions") + } + username := "pmm" usr, err := user.Lookup(username) if err != nil { @@ -676,35 +680,13 @@ func (s *Server) writeSSHKey(sshKey string) error { return errors.WithStack(err) } - uid, err := strconv.Atoi(usr.Uid) - if err != nil { - return errors.WithStack(err) - } - gid, err := strconv.Atoi(usr.Gid) - if err != nil { - return errors.WithStack(err) - } - if err = os.Chown(sshDirPath, uid, gid); err != nil { - return errors.WithStack(err) - } keysPath := path.Join(sshDirPath, "authorized_keys") if err = os.WriteFile(keysPath, []byte(sshKey), 0o600); err != nil { return errors.WithStack(err) } - if err = os.Chown(keysPath, uid, gid); err != nil { - return errors.WithStack(err) - } return nil } -// AWSInstanceCheck checks AWS EC2 instance ID. -func (s *Server) AWSInstanceCheck(ctx context.Context, req *serverv1.AWSInstanceCheckRequest) (*serverv1.AWSInstanceCheckResponse, error) { //nolint:revive - if err := s.awsInstanceChecker.check(req.InstanceId); err != nil { - return nil, err - } - return &serverv1.AWSInstanceCheckResponse{}, nil -} - // isAgentsStateUpdateNeeded - checks metrics resolution changes, // if it was changed, agents state must be updated. func isAgentsStateUpdateNeeded(mr *serverv1.MetricsResolutions) bool { diff --git a/managed/services/server/updater.go b/managed/services/server/updater.go index 0240536e19..62683a7643 100644 --- a/managed/services/server/updater.go +++ b/managed/services/server/updater.go @@ -147,7 +147,6 @@ func (up *Updater) StartUpdate(ctx context.Context, newImageName string) error { return errors.New("update already in progress") } up.running = true - up.performM.Unlock() if newImageName == "" { return errors.New("newImageName is empty") } diff --git a/managed/services/telemetry/deps.go b/managed/services/telemetry/deps.go index b10e89310b..603e669505 100644 --- a/managed/services/telemetry/deps.go +++ b/managed/services/telemetry/deps.go @@ -26,7 +26,7 @@ import ( // distributionUtilService service to get info about OS on which pmm server is running. type distributionUtilService interface { - getDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) + GetDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) } // sender is interface which defines method for client which sends report with metrics. diff --git a/managed/services/telemetry/mock_distribution_util_service_test.go b/managed/services/telemetry/mock_distribution_util_service_test.go index b8a33e7fb9..baa81ac8e8 100644 --- a/managed/services/telemetry/mock_distribution_util_service_test.go +++ b/managed/services/telemetry/mock_distribution_util_service_test.go @@ -14,12 +14,12 @@ type mockDistributionUtilService struct { mock.Mock } -// getDistributionMethodAndOS provides a mock function with given fields: -func (_m *mockDistributionUtilService) getDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) { +// GetDistributionMethodAndOS provides a mock function with given fields: +func (_m *mockDistributionUtilService) GetDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) { ret := _m.Called() if len(ret) == 0 { - panic("no return value specified for getDistributionMethodAndOS") + panic("no return value specified for GetDistributionMethodAndOS") } var r0 serverv1.DistributionMethod diff --git a/managed/services/telemetry/telemetry.go b/managed/services/telemetry/telemetry.go index c303094368..966ee5ec27 100644 --- a/managed/services/telemetry/telemetry.go +++ b/managed/services/telemetry/telemetry.go @@ -38,9 +38,7 @@ import ( ) const ( - distributionInfoFilePath = "/srv/pmm-distribution" - osInfoFilePath = "/proc/version" - sendChSize = 10 + sendChSize = 10 ) // Service reports telemetry. @@ -69,7 +67,9 @@ var ( ) // NewService creates a new service. -func NewService(db *reform.DB, portalClient *platform.Client, pmmVersion string, config ServiceConfig, extensions map[ExtensionType]Extension) (*Service, error) { +func NewService(db *reform.DB, portalClient *platform.Client, pmmVersion string, + dus distributionUtilService, config ServiceConfig, extensions map[ExtensionType]Extension, +) (*Service, error) { if config.SaasHostname == "" { return nil, errors.New("empty host") } @@ -80,7 +80,6 @@ func NewService(db *reform.DB, portalClient *platform.Client, pmmVersion string, if err != nil { return nil, err } - dus := newDistributionUtilServiceImpl(distributionInfoFilePath, osInfoFilePath, l) s := &Service{ db: db, l: l, @@ -94,7 +93,7 @@ func NewService(db *reform.DB, portalClient *platform.Client, pmmVersion string, extensions: extensions, } - s.sDistributionMethod, s.tDistributionMethod, s.os = dus.getDistributionMethodAndOS() + s.sDistributionMethod, s.tDistributionMethod, s.os = dus.GetDistributionMethodAndOS() s.dataSourcesMap = s.locateDataSources(config.telemetry) return s, nil @@ -360,7 +359,7 @@ func (s *Service) makeMetric(ctx context.Context) (*pmmv1.ServerMetric, error) { if err != nil { return nil, errors.Wrapf(err, "failed to decode UUID %s", serverIDToUse) } - _, distMethod, _ := s.dus.getDistributionMethodAndOS() + _, distMethod, _ := s.dus.GetDistributionMethodAndOS() eventID := uuid.New() return &pmmv1.ServerMetric{ diff --git a/managed/services/telemetry/telemetry_test.go b/managed/services/telemetry/telemetry_test.go index 16dcf8722b..ac463b6589 100644 --- a/managed/services/telemetry/telemetry_test.go +++ b/managed/services/telemetry/telemetry_test.go @@ -34,6 +34,7 @@ import ( serverv1 "github.com/percona/pmm/api/server/v1" "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/managed/utils/distribution" "github.com/percona/pmm/managed/utils/testdb" ) @@ -258,7 +259,7 @@ func getServiceConfig(pgPortHost string, qanDSN string, vmDSN string) ServiceCon return serviceConfig } -func getDistributionUtilService(t *testing.T, l *logrus.Entry) *distributionUtilServiceImpl { +func getDistributionUtilService(t *testing.T, l *logrus.Entry) distributionUtilService { t.Helper() const ( tmpDistributionFile = "/tmp/distribution" @@ -269,7 +270,7 @@ func getDistributionUtilService(t *testing.T, l *logrus.Entry) *distributionUtil assert.Fail(t, "cannot write to file: ", err) return nil } - dus := newDistributionUtilServiceImpl(tmpDistributionFile, osInfoFilePath, l) + dus := distribution.NewService(tmpDistributionFile, "/proc/version", l) return dus } diff --git a/managed/services/telemetry/distribution_util.go b/managed/utils/distribution/distribution_util.go similarity index 73% rename from managed/services/telemetry/distribution_util.go rename to managed/utils/distribution/distribution_util.go index 986ee00f55..e25f21b3b5 100644 --- a/managed/services/telemetry/distribution_util.go +++ b/managed/utils/distribution/distribution_util.go @@ -13,7 +13,8 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -package telemetry +// Package distribution provides structures and methods to determine the distribution method and OS of the PMM Server. +package distribution import ( "bytes" @@ -26,29 +27,36 @@ import ( serverv1 "github.com/percona/pmm/api/server/v1" ) -type distributionUtilServiceImpl struct { +// Service provides methods to determine the distribution method and OS of the PMM Server. +type Service struct { distributionInfoFilePath string osInfoFilePath string l *logrus.Entry } -func newDistributionUtilServiceImpl(distributionFilePath, osInfoFilePath string, l *logrus.Entry) *distributionUtilServiceImpl { - return &distributionUtilServiceImpl{ +// NewService creates a new Distribution Service. +func NewService(distributionFilePath, osInfoFilePath string, l *logrus.Entry) *Service { + return &Service{ distributionInfoFilePath: distributionFilePath, osInfoFilePath: osInfoFilePath, l: l, } } -func (d distributionUtilServiceImpl) getDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) { - b, err := os.ReadFile(d.distributionInfoFilePath) - if err != nil { - d.l.Debugf("Failed to read %s: %s", d.distributionInfoFilePath, err) - } +// GetDistributionMethodAndOS returns the distribution method and OS of the PMM Server. +func (d Service) GetDistributionMethodAndOS() (serverv1.DistributionMethod, pmmv1.DistributionMethod, string) { + dm := os.Getenv("PMM_DISTRIBUTION_METHOD") + if dm == "" { + b, err := os.ReadFile(d.distributionInfoFilePath) + if err != nil { + d.l.Debugf("Failed to read %s: %s", d.distributionInfoFilePath, err) + } - b = bytes.ToLower(bytes.TrimSpace(b)) - switch string(b) { + b = bytes.ToLower(bytes.TrimSpace(b)) + dm = string(b) + } + switch dm { case "ovf": return serverv1.DistributionMethod_DISTRIBUTION_METHOD_OVF, pmmv1.DistributionMethod_OVF, "ovf" case "ami": @@ -58,7 +66,8 @@ func (d distributionUtilServiceImpl) getDistributionMethodAndOS() (serverv1.Dist case "digitalocean": return serverv1.DistributionMethod_DISTRIBUTION_METHOD_DO, pmmv1.DistributionMethod_DO, "digitalocean" case "docker", "": // /srv/pmm-distribution does not exist in PMM 2.0. - if b, err = os.ReadFile(d.osInfoFilePath); err != nil { + b, err := os.ReadFile(d.osInfoFilePath) + if err != nil { d.l.Debugf("Failed to read %s: %s", d.osInfoFilePath, err) } return serverv1.DistributionMethod_DISTRIBUTION_METHOD_DOCKER, pmmv1.DistributionMethod_DOCKER, d.getLinuxDistribution(string(b)) @@ -85,7 +94,7 @@ var procVersionRegexps = []pair{ } // getLinuxDistribution detects Linux distribution and version from /proc/version information. -func (d distributionUtilServiceImpl) getLinuxDistribution(procVersion string) string { +func (d Service) getLinuxDistribution(procVersion string) string { for _, p := range procVersionRegexps { match := p.re.FindStringSubmatchIndex(procVersion) if match != nil { diff --git a/managed/services/telemetry/distribution_util_test.go b/managed/utils/distribution/distribution_util_test.go similarity index 94% rename from managed/services/telemetry/distribution_util_test.go rename to managed/utils/distribution/distribution_util_test.go index 596b0ce373..dca253ccd0 100644 --- a/managed/services/telemetry/distribution_util_test.go +++ b/managed/utils/distribution/distribution_util_test.go @@ -13,7 +13,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -package telemetry +package distribution import ( "os" @@ -132,11 +132,11 @@ func Test_distributionUtilServiceImpl_getDistributionMethodAndOS(t *testing.T) { tmpOsInfoFilePath = f2.Name() } - d := newDistributionUtilServiceImpl(tmpDistributionFilePath, tmpOsInfoFilePath, logEntry) - got, got1, got2 := d.getDistributionMethodAndOS() - assert.Equalf(t, tt.want, got, "getDistributionMethodAndOS() serverv1.DistributionMethod") - assert.Equalf(t, tt.want1, got1, "getDistributionMethodAndOS() pmmv1.DistributionMethod") - assert.Equalf(t, tt.want2, got2, "getDistributionMethodAndOS() name") + d := NewService(tmpDistributionFilePath, tmpOsInfoFilePath, logEntry) + got, got1, got2 := d.GetDistributionMethodAndOS() + assert.Equalf(t, tt.want, got, "GetDistributionMethodAndOS() serverv1.DistributionMethod") + assert.Equalf(t, tt.want1, got1, "GetDistributionMethodAndOS() pmmv1.DistributionMethod") + assert.Equalf(t, tt.want2, got2, "GetDistributionMethodAndOS() name") }) } } @@ -228,7 +228,7 @@ func Test_distributionUtilServiceImpl_getLinuxDistribution(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - d := distributionUtilServiceImpl{ + d := Service{ distributionInfoFilePath: tmpDistributionFile, osInfoFilePath: tmpOsInfoFilePath, l: logEntry, diff --git a/managed/utils/envvars/parser.go b/managed/utils/envvars/parser.go index d2515f5ea3..6d68a85187 100644 --- a/managed/utils/envvars/parser.go +++ b/managed/utils/envvars/parser.go @@ -176,7 +176,7 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } - case "PMM_INSTALL_METHOD": + case "PMM_INSTALL_METHOD", "PMM_DISTRIBUTION_METHOD": continue case envEnableAccessControl: From 32426ea05bd4366a6bdc0da6dd6477318fca7ce2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 13:37:03 +0300 Subject: [PATCH 28/70] Bump github.com/vektra/mockery/v2 from 2.43.0 to 2.44.1 in /tools (#3125) Bumps [github.com/vektra/mockery/v2](https://github.com/vektra/mockery) from 2.43.0 to 2.44.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.43.0...v2.44.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] 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 99f7005a3b..d5728a2307 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -22,7 +22,7 @@ require ( github.com/quasilyte/go-consistent v0.6.0 github.com/reviewdog/reviewdog v0.20.1 github.com/vburenin/ifacemaker v1.2.1 - github.com/vektra/mockery/v2 v2.43.0 + github.com/vektra/mockery/v2 v2.44.1 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 golang.org/x/tools v0.23.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 diff --git a/tools/go.sum b/tools/go.sum index 3b0f0b79af..e0a01b8eba 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -678,8 +678,8 @@ github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinC github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= 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.43.0 h1:9jgLwYbFIKPwWJUeK6Y+0s9oLRIGXLfW4FWlmF9R8c0= -github.com/vektra/mockery/v2 v2.43.0/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= +github.com/vektra/mockery/v2 v2.44.1 h1:lfvocO3HklLp68gezPBVaHl+5rKXloGCO7eTEXh71dA= +github.com/vektra/mockery/v2 v2.44.1/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= github.com/xanzy/go-gitlab v0.106.0 h1:EDfD03K74cIlQo2EducfiupVrip+Oj02bq9ofw5F8sA= github.com/xanzy/go-gitlab v0.106.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= From 9edc180f0548e7fd16e776a802afa62005f9f488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 10:53:16 +0000 Subject: [PATCH 29/70] Bump github.com/envoyproxy/protoc-gen-validate in /tools (#3129) Bumps [github.com/envoyproxy/protoc-gen-validate](https://github.com/envoyproxy/protoc-gen-validate) from 1.0.4 to 1.1.0. - [Release notes](https://github.com/envoyproxy/protoc-gen-validate/releases) - [Changelog](https://github.com/bufbuild/protoc-gen-validate/blob/main/.goreleaser.yaml) - [Commits](https://github.com/envoyproxy/protoc-gen-validate/compare/v1.0.4...v1.1.0) --- updated-dependencies: - dependency-name: github.com/envoyproxy/protoc-gen-validate 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 d5728a2307..500dce445b 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -12,7 +12,7 @@ require ( github.com/apache/skywalking-eyes v0.6.0 github.com/bufbuild/buf v1.35.1 github.com/daixiang0/gci v0.13.0 - github.com/envoyproxy/protoc-gen-validate v1.0.4 + github.com/envoyproxy/protoc-gen-validate v1.1.0 github.com/go-delve/delve v1.23.0 github.com/go-openapi/runtime v0.25.0 github.com/go-openapi/spec v0.20.4 @@ -142,7 +142,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect 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/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/tools/go.sum b/tools/go.sum index e0a01b8eba..b68df4139d 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -189,8 +189,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw= @@ -515,8 +515,8 @@ github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1 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/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/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= 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= From 8c169eeca9c9b906736abf7e1b0c98fe64cefce5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 11:10:41 +0000 Subject: [PATCH 30/70] Bump eslint from 8.56.0 to 8.57.0 in /cli-tests (#2843) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint](https://github.com/eslint/eslint) from 8.56.0 to 8.57.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.56.0...v8.57.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- cli-tests/package-lock.json | 36 +++++++++++++++++++----------------- cli-tests/package.json | 2 +- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 4adac998fd..28a00acca6 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": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", - "eslint": "8.56", + "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-plugin-import": "^2.29.0", @@ -86,22 +86,23 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -122,9 +123,10 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -950,16 +952,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", diff --git a/cli-tests/package.json b/cli-tests/package.json index 9c05c1bb0f..20097e3789 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -26,7 +26,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", - "eslint": "8.56", + "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-plugin-import": "^2.29.0", From 40950e243603345efc1a5aa965c68e14879e90b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 11:19:09 +0000 Subject: [PATCH 31/70] Bump @typescript-eslint/eslint-plugin from 7.18.0 to 8.0.1 in /cli-tests (#3131) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.18.0 to 8.0.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/v8.0.1/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 279 ++++++++++++++++++++++++++++++++---- cli-tests/package.json | 2 +- 2 files changed, 253 insertions(+), 28 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 28a00acca6..9f9a2b1175 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": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", "@typescript-eslint/parser": "^7.18.0", "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", @@ -251,31 +251,31 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", + "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/scope-manager": "8.0.1", + "@typescript-eslint/type-utils": "8.0.1", + "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -283,6 +283,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", + "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", + "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", + "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/parser": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", @@ -329,25 +376,63 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", + "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/typescript-estree": "8.0.1", + "@typescript-eslint/utils": "8.0.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", + "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", + "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { "typescript": { @@ -355,6 +440,47 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", + "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/types": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", @@ -421,25 +547,124 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", + "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@typescript-eslint/scope-manager": "8.0.1", + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/typescript-estree": "8.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", + "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", + "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", + "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/visitor-keys": "8.0.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", + "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.0.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/visitor-keys": { diff --git a/cli-tests/package.json b/cli-tests/package.json index 20097e3789..dd13a35acb 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": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", "@typescript-eslint/parser": "^7.18.0", "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", From 693514983bc2e38d016368f398d2ff3e4608dd12 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:05:24 +0200 Subject: [PATCH 32/70] Bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.20.0 to 2.21.0 in /tools (#3097) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bump github.com/grpc-ecosystem/grpc-gateway/v2 in /tools Bumps [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) from 2.20.0 to 2.21.0. - [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases) - [Changelog](https://github.com/grpc-ecosystem/grpc-gateway/blob/main/.goreleaser.yml) - [Commits](https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.20.0...v2.21.0) --- updated-dependencies: - dependency-name: github.com/grpc-ecosystem/grpc-gateway/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump github.com/grpc-ecosystem/grpc-gateway/v2 in /tools Bumps [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) from 2.20.0 to 2.21.0. - [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases) - [Changelog](https://github.com/grpc-ecosystem/grpc-gateway/blob/main/.goreleaser.yml) - [Commits](https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.20.0...v2.21.0) --- updated-dependencies: - dependency-name: github.com/grpc-ecosystem/grpc-gateway/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * make gen --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jiří Čtvrtka Co-authored-by: Alex Demidoff Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- api/agentlocalpb/agentlocal.pb.gw.go | 3 ++- api/inventorypb/agents.pb.gw.go | 3 ++- api/inventorypb/nodes.pb.gw.go | 3 ++- api/inventorypb/services.pb.gw.go | 3 ++- api/managementpb/actions.pb.gw.go | 3 ++- api/managementpb/agent/agent.pb.gw.go | 3 ++- api/managementpb/alerting/alerting.pb.gw.go | 3 ++- api/managementpb/annotation.pb.gw.go | 3 ++- api/managementpb/azure/azure.pb.gw.go | 3 ++- api/managementpb/backup/artifacts.pb.gw.go | 3 ++- api/managementpb/backup/backups.pb.gw.go | 3 ++- api/managementpb/backup/locations.pb.gw.go | 3 ++- api/managementpb/backup/restores.pb.gw.go | 3 ++- api/managementpb/checks.pb.gw.go | 3 ++- api/managementpb/dbaas/components.pb.gw.go | 3 ++- api/managementpb/dbaas/db_clusters.pb.gw.go | 3 ++- api/managementpb/dbaas/kubernetes.pb.gw.go | 3 ++- api/managementpb/dbaas/logs.pb.gw.go | 3 ++- api/managementpb/dbaas/psmdb_clusters.pb.gw.go | 3 ++- api/managementpb/dbaas/pxc_clusters.pb.gw.go | 3 ++- api/managementpb/dbaas/templates.pb.gw.go | 3 ++- api/managementpb/dump/dump.pb.gw.go | 3 ++- api/managementpb/external.pb.gw.go | 3 ++- api/managementpb/haproxy.pb.gw.go | 3 ++- api/managementpb/ia/alerts.pb.gw.go | 3 ++- api/managementpb/ia/channels.pb.gw.go | 3 ++- api/managementpb/ia/rules.pb.gw.go | 3 ++- api/managementpb/mongodb.pb.gw.go | 3 ++- api/managementpb/mysql.pb.gw.go | 3 ++- api/managementpb/node.pb.gw.go | 3 ++- api/managementpb/node/node.pb.gw.go | 3 ++- api/managementpb/postgresql.pb.gw.go | 3 ++- api/managementpb/proxysql.pb.gw.go | 3 ++- api/managementpb/rds.pb.gw.go | 3 ++- api/managementpb/role/role.pb.gw.go | 3 ++- api/managementpb/service.pb.gw.go | 3 ++- api/managementpb/service/service.pb.gw.go | 3 ++- api/platformpb/platform.pb.gw.go | 3 ++- api/qanpb/filters.pb.gw.go | 3 ++- api/qanpb/metrics_names.pb.gw.go | 3 ++- api/qanpb/object_details.pb.gw.go | 3 ++- api/qanpb/profile.pb.gw.go | 3 ++- api/serverpb/server.pb.gw.go | 3 ++- api/uieventspb/server.pb.gw.go | 3 ++- api/userpb/user.pb.gw.go | 3 ++- tools/go.mod | 6 +++--- tools/go.sum | 12 ++++++------ 47 files changed, 99 insertions(+), 54 deletions(-) diff --git a/api/agentlocalpb/agentlocal.pb.gw.go b/api/agentlocalpb/agentlocal.pb.gw.go index 37bd317c6b..f76755dc44 100644 --- a/api/agentlocalpb/agentlocal.pb.gw.go +++ b/api/agentlocalpb/agentlocal.pb.gw.go @@ -117,6 +117,7 @@ func local_request_AgentLocal_Reload_0(ctx context.Context, marshaler runtime.Ma // UnaryRPC :call AgentLocalServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAgentLocalHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAgentLocalHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AgentLocalServer) error { mux.Handle("POST", pattern_AgentLocal_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -228,7 +229,7 @@ func RegisterAgentLocalHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AgentLocalClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AgentLocalClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AgentLocalClient" to call the correct interceptors. +// "AgentLocalClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAgentLocalHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AgentLocalClient) error { mux.Handle("POST", pattern_AgentLocal_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventorypb/agents.pb.gw.go b/api/inventorypb/agents.pb.gw.go index 74700f5eec..4ca7b2009f 100644 --- a/api/inventorypb/agents.pb.gw.go +++ b/api/inventorypb/agents.pb.gw.go @@ -781,6 +781,7 @@ func local_request_Agents_RemoveAgent_0(ctx context.Context, marshaler runtime.M // UnaryRPC :call AgentsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAgentsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAgentsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AgentsServer) error { mux.Handle("POST", pattern_Agents_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -1564,7 +1565,7 @@ func RegisterAgentsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grp // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AgentsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AgentsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AgentsClient" to call the correct interceptors. +// "AgentsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAgentsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AgentsClient) error { mux.Handle("POST", pattern_Agents_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventorypb/nodes.pb.gw.go b/api/inventorypb/nodes.pb.gw.go index 56cd882ac7..3cb6e5babb 100644 --- a/api/inventorypb/nodes.pb.gw.go +++ b/api/inventorypb/nodes.pb.gw.go @@ -253,6 +253,7 @@ func local_request_Nodes_RemoveNode_0(ctx context.Context, marshaler runtime.Mar // UnaryRPC :call NodesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterNodesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterNodesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server NodesServer) error { mux.Handle("POST", pattern_Nodes_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -508,7 +509,7 @@ func RegisterNodesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "NodesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "NodesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "NodesClient" to call the correct interceptors. +// "NodesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterNodesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client NodesClient) error { mux.Handle("POST", pattern_Nodes_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventorypb/services.pb.gw.go b/api/inventorypb/services.pb.gw.go index 92c0ffa9e0..bb388bbc88 100644 --- a/api/inventorypb/services.pb.gw.go +++ b/api/inventorypb/services.pb.gw.go @@ -349,6 +349,7 @@ func local_request_Services_ChangeService_0(ctx context.Context, marshaler runti // UnaryRPC :call ServicesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServicesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterServicesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServicesServer) error { mux.Handle("POST", pattern_Services_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -700,7 +701,7 @@ func RegisterServicesHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServicesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServicesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ServicesClient" to call the correct interceptors. +// "ServicesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterServicesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServicesClient) error { mux.Handle("POST", pattern_Services_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/actions.pb.gw.go b/api/managementpb/actions.pb.gw.go index 2c16bc6c09..0a86375a14 100644 --- a/api/managementpb/actions.pb.gw.go +++ b/api/managementpb/actions.pb.gw.go @@ -397,6 +397,7 @@ func local_request_Actions_CancelAction_0(ctx context.Context, marshaler runtime // UnaryRPC :call ActionsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterActionsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterActionsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ActionsServer) error { mux.Handle("POST", pattern_Actions_GetAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -796,7 +797,7 @@ func RegisterActionsHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ActionsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ActionsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ActionsClient" to call the correct interceptors. +// "ActionsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterActionsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ActionsClient) error { mux.Handle("POST", pattern_Actions_GetAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/agent/agent.pb.gw.go b/api/managementpb/agent/agent.pb.gw.go index f2128d1d30..7b014f9bed 100644 --- a/api/managementpb/agent/agent.pb.gw.go +++ b/api/managementpb/agent/agent.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Agent_ListAgents_0(ctx context.Context, marshaler runtime.Mar // UnaryRPC :call AgentServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAgentHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAgentHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AgentServer) error { mux.Handle("POST", pattern_Agent_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterAgentHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AgentClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AgentClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AgentClient" to call the correct interceptors. +// "AgentClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAgentHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AgentClient) error { mux.Handle("POST", pattern_Agent_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/alerting/alerting.pb.gw.go b/api/managementpb/alerting/alerting.pb.gw.go index 87800b1b64..e9688ccf29 100644 --- a/api/managementpb/alerting/alerting.pb.gw.go +++ b/api/managementpb/alerting/alerting.pb.gw.go @@ -157,6 +157,7 @@ func local_request_Alerting_CreateRule_0(ctx context.Context, marshaler runtime. // UnaryRPC :call AlertingServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAlertingHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAlertingHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AlertingServer) error { mux.Handle("POST", pattern_Alerting_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -316,7 +317,7 @@ func RegisterAlertingHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AlertingClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AlertingClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AlertingClient" to call the correct interceptors. +// "AlertingClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAlertingHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AlertingClient) error { mux.Handle("POST", pattern_Alerting_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/annotation.pb.gw.go b/api/managementpb/annotation.pb.gw.go index 33be03fa13..25c9e5a425 100644 --- a/api/managementpb/annotation.pb.gw.go +++ b/api/managementpb/annotation.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Annotation_AddAnnotation_0(ctx context.Context, marshaler run // UnaryRPC :call AnnotationServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAnnotationHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAnnotationHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AnnotationServer) error { mux.Handle("POST", pattern_Annotation_AddAnnotation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterAnnotationHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AnnotationClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AnnotationClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AnnotationClient" to call the correct interceptors. +// "AnnotationClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAnnotationHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AnnotationClient) error { mux.Handle("POST", pattern_Annotation_AddAnnotation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/azure/azure.pb.gw.go b/api/managementpb/azure/azure.pb.gw.go index a30fae74a2..29ef5120e7 100644 --- a/api/managementpb/azure/azure.pb.gw.go +++ b/api/managementpb/azure/azure.pb.gw.go @@ -85,6 +85,7 @@ func local_request_AzureDatabase_AddAzureDatabase_0(ctx context.Context, marshal // UnaryRPC :call AzureDatabaseServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAzureDatabaseHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAzureDatabaseHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AzureDatabaseServer) error { mux.Handle("POST", pattern_AzureDatabase_DiscoverAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -172,7 +173,7 @@ func RegisterAzureDatabaseHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AzureDatabaseClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AzureDatabaseClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AzureDatabaseClient" to call the correct interceptors. +// "AzureDatabaseClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAzureDatabaseHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AzureDatabaseClient) error { mux.Handle("POST", pattern_AzureDatabase_DiscoverAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/backup/artifacts.pb.gw.go b/api/managementpb/backup/artifacts.pb.gw.go index 83bd7abae2..1c3a402cca 100644 --- a/api/managementpb/backup/artifacts.pb.gw.go +++ b/api/managementpb/backup/artifacts.pb.gw.go @@ -109,6 +109,7 @@ func local_request_Artifacts_ListPitrTimeranges_0(ctx context.Context, marshaler // UnaryRPC :call ArtifactsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterArtifactsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterArtifactsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ArtifactsServer) error { mux.Handle("POST", pattern_Artifacts_ListArtifacts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -220,7 +221,7 @@ func RegisterArtifactsHandler(ctx context.Context, mux *runtime.ServeMux, conn * // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ArtifactsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ArtifactsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ArtifactsClient" to call the correct interceptors. +// "ArtifactsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterArtifactsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ArtifactsClient) error { mux.Handle("POST", pattern_Artifacts_ListArtifacts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/backup/backups.pb.gw.go b/api/managementpb/backup/backups.pb.gw.go index be0b7897f9..2fcdf2bfe6 100644 --- a/api/managementpb/backup/backups.pb.gw.go +++ b/api/managementpb/backup/backups.pb.gw.go @@ -229,6 +229,7 @@ func local_request_Backups_GetLogs_0(ctx context.Context, marshaler runtime.Mars // UnaryRPC :call BackupsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterBackupsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterBackupsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server BackupsServer) error { mux.Handle("POST", pattern_Backups_StartBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -460,7 +461,7 @@ func RegisterBackupsHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "BackupsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "BackupsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "BackupsClient" to call the correct interceptors. +// "BackupsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterBackupsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client BackupsClient) error { mux.Handle("POST", pattern_Backups_StartBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/backup/locations.pb.gw.go b/api/managementpb/backup/locations.pb.gw.go index 94232abd2e..93dabdf08e 100644 --- a/api/managementpb/backup/locations.pb.gw.go +++ b/api/managementpb/backup/locations.pb.gw.go @@ -157,6 +157,7 @@ func local_request_Locations_TestLocationConfig_0(ctx context.Context, marshaler // UnaryRPC :call LocationsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterLocationsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterLocationsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server LocationsServer) error { mux.Handle("POST", pattern_Locations_ListLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -316,7 +317,7 @@ func RegisterLocationsHandler(ctx context.Context, mux *runtime.ServeMux, conn * // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "LocationsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "LocationsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "LocationsClient" to call the correct interceptors. +// "LocationsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterLocationsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client LocationsClient) error { mux.Handle("POST", pattern_Locations_ListLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/backup/restores.pb.gw.go b/api/managementpb/backup/restores.pb.gw.go index 4f13605987..49db73b789 100644 --- a/api/managementpb/backup/restores.pb.gw.go +++ b/api/managementpb/backup/restores.pb.gw.go @@ -61,6 +61,7 @@ func local_request_RestoreHistory_ListRestoreHistory_0(ctx context.Context, mars // UnaryRPC :call RestoreHistoryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRestoreHistoryHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterRestoreHistoryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RestoreHistoryServer) error { mux.Handle("POST", pattern_RestoreHistory_ListRestoreHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterRestoreHistoryHandler(ctx context.Context, mux *runtime.ServeMux, c // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RestoreHistoryClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RestoreHistoryClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "RestoreHistoryClient" to call the correct interceptors. +// "RestoreHistoryClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterRestoreHistoryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RestoreHistoryClient) error { mux.Handle("POST", pattern_RestoreHistory_ListRestoreHistory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/checks.pb.gw.go b/api/managementpb/checks.pb.gw.go index f00fdc6f2b..4371329eeb 100644 --- a/api/managementpb/checks.pb.gw.go +++ b/api/managementpb/checks.pb.gw.go @@ -229,6 +229,7 @@ func local_request_SecurityChecks_ChangeSecurityChecks_0(ctx context.Context, ma // UnaryRPC :call SecurityChecksServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSecurityChecksHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterSecurityChecksHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SecurityChecksServer) error { mux.Handle("POST", pattern_SecurityChecks_ListFailedServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -460,7 +461,7 @@ func RegisterSecurityChecksHandler(ctx context.Context, mux *runtime.ServeMux, c // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SecurityChecksClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SecurityChecksClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "SecurityChecksClient" to call the correct interceptors. +// "SecurityChecksClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterSecurityChecksHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SecurityChecksClient) error { mux.Handle("POST", pattern_SecurityChecks_ListFailedServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/components.pb.gw.go b/api/managementpb/dbaas/components.pb.gw.go index 9f1d1c5ea8..c8b793b0db 100644 --- a/api/managementpb/dbaas/components.pb.gw.go +++ b/api/managementpb/dbaas/components.pb.gw.go @@ -181,6 +181,7 @@ func local_request_Components_CheckForOperatorUpdate_0(ctx context.Context, mars // UnaryRPC :call ComponentsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterComponentsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterComponentsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ComponentsServer) error { mux.Handle("POST", pattern_Components_GetPSMDBComponents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -364,7 +365,7 @@ func RegisterComponentsHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ComponentsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ComponentsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ComponentsClient" to call the correct interceptors. +// "ComponentsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterComponentsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ComponentsClient) error { mux.Handle("POST", pattern_Components_GetPSMDBComponents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/db_clusters.pb.gw.go b/api/managementpb/dbaas/db_clusters.pb.gw.go index 80f0aff6ed..c88fb85a67 100644 --- a/api/managementpb/dbaas/db_clusters.pb.gw.go +++ b/api/managementpb/dbaas/db_clusters.pb.gw.go @@ -181,6 +181,7 @@ func local_request_DBClusters_ListSecrets_0(ctx context.Context, marshaler runti // UnaryRPC :call DBClustersServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDBClustersHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterDBClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DBClustersServer) error { mux.Handle("POST", pattern_DBClusters_ListDBClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -364,7 +365,7 @@ func RegisterDBClustersHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DBClustersClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DBClustersClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "DBClustersClient" to call the correct interceptors. +// "DBClustersClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterDBClustersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DBClustersClient) error { mux.Handle("POST", pattern_DBClusters_ListDBClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/kubernetes.pb.gw.go b/api/managementpb/dbaas/kubernetes.pb.gw.go index 82aeec6d29..268c2b49e5 100644 --- a/api/managementpb/dbaas/kubernetes.pb.gw.go +++ b/api/managementpb/dbaas/kubernetes.pb.gw.go @@ -181,6 +181,7 @@ func local_request_Kubernetes_ListStorageClasses_0(ctx context.Context, marshale // UnaryRPC :call KubernetesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterKubernetesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterKubernetesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server KubernetesServer) error { mux.Handle("POST", pattern_Kubernetes_ListKubernetesClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -364,7 +365,7 @@ func RegisterKubernetesHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "KubernetesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "KubernetesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "KubernetesClient" to call the correct interceptors. +// "KubernetesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterKubernetesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client KubernetesClient) error { mux.Handle("POST", pattern_Kubernetes_ListKubernetesClusters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/logs.pb.gw.go b/api/managementpb/dbaas/logs.pb.gw.go index 657231edfe..33bb8c713a 100644 --- a/api/managementpb/dbaas/logs.pb.gw.go +++ b/api/managementpb/dbaas/logs.pb.gw.go @@ -61,6 +61,7 @@ func local_request_LogsAPI_GetLogs_0(ctx context.Context, marshaler runtime.Mars // UnaryRPC :call LogsAPIServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterLogsAPIHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterLogsAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server LogsAPIServer) error { mux.Handle("POST", pattern_LogsAPI_GetLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterLogsAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "LogsAPIClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "LogsAPIClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "LogsAPIClient" to call the correct interceptors. +// "LogsAPIClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterLogsAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client LogsAPIClient) error { mux.Handle("POST", pattern_LogsAPI_GetLogs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/psmdb_clusters.pb.gw.go b/api/managementpb/dbaas/psmdb_clusters.pb.gw.go index 42f4cd5268..00075d2c37 100644 --- a/api/managementpb/dbaas/psmdb_clusters.pb.gw.go +++ b/api/managementpb/dbaas/psmdb_clusters.pb.gw.go @@ -133,6 +133,7 @@ func local_request_PSMDBClusters_GetPSMDBClusterResources_0(ctx context.Context, // UnaryRPC :call PSMDBClustersServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPSMDBClustersHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterPSMDBClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PSMDBClustersServer) error { mux.Handle("POST", pattern_PSMDBClusters_GetPSMDBClusterCredentials_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -268,7 +269,7 @@ func RegisterPSMDBClustersHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PSMDBClustersClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PSMDBClustersClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "PSMDBClustersClient" to call the correct interceptors. +// "PSMDBClustersClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterPSMDBClustersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PSMDBClustersClient) error { mux.Handle("POST", pattern_PSMDBClusters_GetPSMDBClusterCredentials_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/pxc_clusters.pb.gw.go b/api/managementpb/dbaas/pxc_clusters.pb.gw.go index ab14b412cf..1194f6a745 100644 --- a/api/managementpb/dbaas/pxc_clusters.pb.gw.go +++ b/api/managementpb/dbaas/pxc_clusters.pb.gw.go @@ -133,6 +133,7 @@ func local_request_PXCClusters_GetPXCClusterResources_0(ctx context.Context, mar // UnaryRPC :call PXCClustersServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPXCClustersHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterPXCClustersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PXCClustersServer) error { mux.Handle("POST", pattern_PXCClusters_GetPXCClusterCredentials_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -268,7 +269,7 @@ func RegisterPXCClustersHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PXCClustersClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PXCClustersClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "PXCClustersClient" to call the correct interceptors. +// "PXCClustersClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterPXCClustersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PXCClustersClient) error { mux.Handle("POST", pattern_PXCClusters_GetPXCClusterCredentials_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dbaas/templates.pb.gw.go b/api/managementpb/dbaas/templates.pb.gw.go index a5d36e622d..1b5ae7434d 100644 --- a/api/managementpb/dbaas/templates.pb.gw.go +++ b/api/managementpb/dbaas/templates.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Templates_ListTemplates_0(ctx context.Context, marshaler runt // UnaryRPC :call TemplatesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterTemplatesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterTemplatesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server TemplatesServer) error { mux.Handle("POST", pattern_Templates_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterTemplatesHandler(ctx context.Context, mux *runtime.ServeMux, conn * // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "TemplatesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "TemplatesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "TemplatesClient" to call the correct interceptors. +// "TemplatesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterTemplatesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client TemplatesClient) error { mux.Handle("POST", pattern_Templates_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/dump/dump.pb.gw.go b/api/managementpb/dump/dump.pb.gw.go index fee3d14358..0077bdab79 100644 --- a/api/managementpb/dump/dump.pb.gw.go +++ b/api/managementpb/dump/dump.pb.gw.go @@ -157,6 +157,7 @@ func local_request_Dumps_UploadDump_0(ctx context.Context, marshaler runtime.Mar // UnaryRPC :call DumpsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDumpsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterDumpsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DumpsServer) error { mux.Handle("POST", pattern_Dumps_StartDump_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -316,7 +317,7 @@ func RegisterDumpsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DumpsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DumpsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "DumpsClient" to call the correct interceptors. +// "DumpsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterDumpsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DumpsClient) error { mux.Handle("POST", pattern_Dumps_StartDump_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/external.pb.gw.go b/api/managementpb/external.pb.gw.go index 2a30385c0f..c2c3c308fd 100644 --- a/api/managementpb/external.pb.gw.go +++ b/api/managementpb/external.pb.gw.go @@ -61,6 +61,7 @@ func local_request_External_AddExternal_0(ctx context.Context, marshaler runtime // UnaryRPC :call ExternalServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterExternalHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterExternalHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ExternalServer) error { mux.Handle("POST", pattern_External_AddExternal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterExternalHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ExternalClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ExternalClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ExternalClient" to call the correct interceptors. +// "ExternalClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterExternalHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ExternalClient) error { mux.Handle("POST", pattern_External_AddExternal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/haproxy.pb.gw.go b/api/managementpb/haproxy.pb.gw.go index d8f7abf6de..c178981b4e 100644 --- a/api/managementpb/haproxy.pb.gw.go +++ b/api/managementpb/haproxy.pb.gw.go @@ -61,6 +61,7 @@ func local_request_HAProxy_AddHAProxy_0(ctx context.Context, marshaler runtime.M // UnaryRPC :call HAProxyServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterHAProxyHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterHAProxyHandlerServer(ctx context.Context, mux *runtime.ServeMux, server HAProxyServer) error { mux.Handle("POST", pattern_HAProxy_AddHAProxy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterHAProxyHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "HAProxyClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "HAProxyClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "HAProxyClient" to call the correct interceptors. +// "HAProxyClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterHAProxyHandlerClient(ctx context.Context, mux *runtime.ServeMux, client HAProxyClient) error { mux.Handle("POST", pattern_HAProxy_AddHAProxy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/ia/alerts.pb.gw.go b/api/managementpb/ia/alerts.pb.gw.go index 591284f730..6207878cac 100644 --- a/api/managementpb/ia/alerts.pb.gw.go +++ b/api/managementpb/ia/alerts.pb.gw.go @@ -85,6 +85,7 @@ func local_request_Alerts_ToggleAlerts_0(ctx context.Context, marshaler runtime. // UnaryRPC :call AlertsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAlertsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAlertsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AlertsServer) error { mux.Handle("POST", pattern_Alerts_ListAlerts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -172,7 +173,7 @@ func RegisterAlertsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grp // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AlertsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AlertsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AlertsClient" to call the correct interceptors. +// "AlertsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAlertsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AlertsClient) error { mux.Handle("POST", pattern_Alerts_ListAlerts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/ia/channels.pb.gw.go b/api/managementpb/ia/channels.pb.gw.go index ea03da2b81..c343d2b6e6 100644 --- a/api/managementpb/ia/channels.pb.gw.go +++ b/api/managementpb/ia/channels.pb.gw.go @@ -133,6 +133,7 @@ func local_request_Channels_RemoveChannel_0(ctx context.Context, marshaler runti // UnaryRPC :call ChannelsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterChannelsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterChannelsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ChannelsServer) error { mux.Handle("POST", pattern_Channels_ListChannels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -268,7 +269,7 @@ func RegisterChannelsHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ChannelsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ChannelsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ChannelsClient" to call the correct interceptors. +// "ChannelsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterChannelsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ChannelsClient) error { mux.Handle("POST", pattern_Channels_ListChannels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/ia/rules.pb.gw.go b/api/managementpb/ia/rules.pb.gw.go index a166cf6577..2923c98c8a 100644 --- a/api/managementpb/ia/rules.pb.gw.go +++ b/api/managementpb/ia/rules.pb.gw.go @@ -157,6 +157,7 @@ func local_request_Rules_DeleteAlertRule_0(ctx context.Context, marshaler runtim // UnaryRPC :call RulesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRulesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterRulesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RulesServer) error { mux.Handle("POST", pattern_Rules_ListAlertRules_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -316,7 +317,7 @@ func RegisterRulesHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RulesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RulesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "RulesClient" to call the correct interceptors. +// "RulesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterRulesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RulesClient) error { mux.Handle("POST", pattern_Rules_ListAlertRules_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/mongodb.pb.gw.go b/api/managementpb/mongodb.pb.gw.go index 77d304976c..0673c30fa6 100644 --- a/api/managementpb/mongodb.pb.gw.go +++ b/api/managementpb/mongodb.pb.gw.go @@ -61,6 +61,7 @@ func local_request_MongoDB_AddMongoDB_0(ctx context.Context, marshaler runtime.M // UnaryRPC :call MongoDBServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMongoDBHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterMongoDBHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MongoDBServer) error { mux.Handle("POST", pattern_MongoDB_AddMongoDB_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterMongoDBHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MongoDBClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MongoDBClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MongoDBClient" to call the correct interceptors. +// "MongoDBClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterMongoDBHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MongoDBClient) error { mux.Handle("POST", pattern_MongoDB_AddMongoDB_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/mysql.pb.gw.go b/api/managementpb/mysql.pb.gw.go index b3bb115079..98ba5d0df6 100644 --- a/api/managementpb/mysql.pb.gw.go +++ b/api/managementpb/mysql.pb.gw.go @@ -61,6 +61,7 @@ func local_request_MySQL_AddMySQL_0(ctx context.Context, marshaler runtime.Marsh // UnaryRPC :call MySQLServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMySQLHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterMySQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MySQLServer) error { mux.Handle("POST", pattern_MySQL_AddMySQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterMySQLHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MySQLClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MySQLClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MySQLClient" to call the correct interceptors. +// "MySQLClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterMySQLHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MySQLClient) error { mux.Handle("POST", pattern_MySQL_AddMySQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/node.pb.gw.go b/api/managementpb/node.pb.gw.go index 1cde3d6571..c3037b8d66 100644 --- a/api/managementpb/node.pb.gw.go +++ b/api/managementpb/node.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Node_RegisterNode_0(ctx context.Context, marshaler runtime.Ma // UnaryRPC :call NodeServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterNodeHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterNodeHandlerServer(ctx context.Context, mux *runtime.ServeMux, server NodeServer) error { mux.Handle("POST", pattern_Node_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterNodeHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc. // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "NodeClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "NodeClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "NodeClient" to call the correct interceptors. +// "NodeClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterNodeHandlerClient(ctx context.Context, mux *runtime.ServeMux, client NodeClient) error { mux.Handle("POST", pattern_Node_RegisterNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/node/node.pb.gw.go b/api/managementpb/node/node.pb.gw.go index 967e8cc452..708024d75f 100644 --- a/api/managementpb/node/node.pb.gw.go +++ b/api/managementpb/node/node.pb.gw.go @@ -85,6 +85,7 @@ func local_request_MgmtNode_GetNode_0(ctx context.Context, marshaler runtime.Mar // UnaryRPC :call MgmtNodeServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMgmtNodeHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterMgmtNodeHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MgmtNodeServer) error { mux.Handle("POST", pattern_MgmtNode_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -172,7 +173,7 @@ func RegisterMgmtNodeHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MgmtNodeClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MgmtNodeClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MgmtNodeClient" to call the correct interceptors. +// "MgmtNodeClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterMgmtNodeHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MgmtNodeClient) error { mux.Handle("POST", pattern_MgmtNode_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/postgresql.pb.gw.go b/api/managementpb/postgresql.pb.gw.go index 8a95a58b29..e6979682f6 100644 --- a/api/managementpb/postgresql.pb.gw.go +++ b/api/managementpb/postgresql.pb.gw.go @@ -61,6 +61,7 @@ func local_request_PostgreSQL_AddPostgreSQL_0(ctx context.Context, marshaler run // UnaryRPC :call PostgreSQLServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPostgreSQLHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterPostgreSQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PostgreSQLServer) error { mux.Handle("POST", pattern_PostgreSQL_AddPostgreSQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterPostgreSQLHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PostgreSQLClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PostgreSQLClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "PostgreSQLClient" to call the correct interceptors. +// "PostgreSQLClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterPostgreSQLHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PostgreSQLClient) error { mux.Handle("POST", pattern_PostgreSQL_AddPostgreSQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/proxysql.pb.gw.go b/api/managementpb/proxysql.pb.gw.go index 9a0a209f50..757dec2107 100644 --- a/api/managementpb/proxysql.pb.gw.go +++ b/api/managementpb/proxysql.pb.gw.go @@ -61,6 +61,7 @@ func local_request_ProxySQL_AddProxySQL_0(ctx context.Context, marshaler runtime // UnaryRPC :call ProxySQLServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterProxySQLHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterProxySQLHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ProxySQLServer) error { mux.Handle("POST", pattern_ProxySQL_AddProxySQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterProxySQLHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ProxySQLClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ProxySQLClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ProxySQLClient" to call the correct interceptors. +// "ProxySQLClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterProxySQLHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ProxySQLClient) error { mux.Handle("POST", pattern_ProxySQL_AddProxySQL_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/rds.pb.gw.go b/api/managementpb/rds.pb.gw.go index 60aa2da92f..fdf3ad6732 100644 --- a/api/managementpb/rds.pb.gw.go +++ b/api/managementpb/rds.pb.gw.go @@ -85,6 +85,7 @@ func local_request_RDS_AddRDS_0(ctx context.Context, marshaler runtime.Marshaler // UnaryRPC :call RDSServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRDSHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterRDSHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RDSServer) error { mux.Handle("POST", pattern_RDS_DiscoverRDS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -172,7 +173,7 @@ func RegisterRDSHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.C // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RDSClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RDSClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "RDSClient" to call the correct interceptors. +// "RDSClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterRDSHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RDSClient) error { mux.Handle("POST", pattern_RDS_DiscoverRDS_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/role/role.pb.gw.go b/api/managementpb/role/role.pb.gw.go index 15ccfb9f04..d52fcda76c 100644 --- a/api/managementpb/role/role.pb.gw.go +++ b/api/managementpb/role/role.pb.gw.go @@ -205,6 +205,7 @@ func local_request_Role_SetDefaultRole_0(ctx context.Context, marshaler runtime. // UnaryRPC :call RoleServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRoleHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterRoleHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RoleServer) error { mux.Handle("POST", pattern_Role_CreateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -412,7 +413,7 @@ func RegisterRoleHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc. // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RoleClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RoleClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "RoleClient" to call the correct interceptors. +// "RoleClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterRoleHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RoleClient) error { mux.Handle("POST", pattern_Role_CreateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/service.pb.gw.go b/api/managementpb/service.pb.gw.go index 57cac977e4..bff595c8d2 100644 --- a/api/managementpb/service.pb.gw.go +++ b/api/managementpb/service.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Service_RemoveService_0(ctx context.Context, marshaler runtim // UnaryRPC :call ServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServiceServer) error { mux.Handle("POST", pattern_Service_RemoveService_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ServiceClient" to call the correct interceptors. +// "ServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServiceClient) error { mux.Handle("POST", pattern_Service_RemoveService_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/managementpb/service/service.pb.gw.go b/api/managementpb/service/service.pb.gw.go index 1cf30357bc..064faccb89 100644 --- a/api/managementpb/service/service.pb.gw.go +++ b/api/managementpb/service/service.pb.gw.go @@ -61,6 +61,7 @@ func local_request_MgmtService_ListServices_0(ctx context.Context, marshaler run // UnaryRPC :call MgmtServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMgmtServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterMgmtServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MgmtServiceServer) error { mux.Handle("POST", pattern_MgmtService_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterMgmtServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MgmtServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MgmtServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MgmtServiceClient" to call the correct interceptors. +// "MgmtServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterMgmtServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MgmtServiceClient) error { mux.Handle("POST", pattern_MgmtService_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/platformpb/platform.pb.gw.go b/api/platformpb/platform.pb.gw.go index 20c99e5814..59e1737534 100644 --- a/api/platformpb/platform.pb.gw.go +++ b/api/platformpb/platform.pb.gw.go @@ -205,6 +205,7 @@ func local_request_Platform_UserStatus_0(ctx context.Context, marshaler runtime. // UnaryRPC :call PlatformServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPlatformHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterPlatformHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PlatformServer) error { mux.Handle("POST", pattern_Platform_Connect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -412,7 +413,7 @@ func RegisterPlatformHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PlatformClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PlatformClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "PlatformClient" to call the correct interceptors. +// "PlatformClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterPlatformHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PlatformClient) error { mux.Handle("POST", pattern_Platform_Connect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/qanpb/filters.pb.gw.go b/api/qanpb/filters.pb.gw.go index 0aaa2ad79e..f45b145e18 100644 --- a/api/qanpb/filters.pb.gw.go +++ b/api/qanpb/filters.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Filters_Get_0(ctx context.Context, marshaler runtime.Marshale // UnaryRPC :call FiltersServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterFiltersHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterFiltersHandlerServer(ctx context.Context, mux *runtime.ServeMux, server FiltersServer) error { mux.Handle("POST", pattern_Filters_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterFiltersHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "FiltersClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "FiltersClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "FiltersClient" to call the correct interceptors. +// "FiltersClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterFiltersHandlerClient(ctx context.Context, mux *runtime.ServeMux, client FiltersClient) error { mux.Handle("POST", pattern_Filters_Get_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/qanpb/metrics_names.pb.gw.go b/api/qanpb/metrics_names.pb.gw.go index 9cedf06864..83ab055607 100644 --- a/api/qanpb/metrics_names.pb.gw.go +++ b/api/qanpb/metrics_names.pb.gw.go @@ -61,6 +61,7 @@ func local_request_MetricsNames_GetMetricsNames_0(ctx context.Context, marshaler // UnaryRPC :call MetricsNamesServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMetricsNamesHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterMetricsNamesHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MetricsNamesServer) error { mux.Handle("POST", pattern_MetricsNames_GetMetricsNames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterMetricsNamesHandler(ctx context.Context, mux *runtime.ServeMux, con // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MetricsNamesClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MetricsNamesClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MetricsNamesClient" to call the correct interceptors. +// "MetricsNamesClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterMetricsNamesHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MetricsNamesClient) error { mux.Handle("POST", pattern_MetricsNames_GetMetricsNames_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/qanpb/object_details.pb.gw.go b/api/qanpb/object_details.pb.gw.go index 39dda45c4d..c06a6bd18b 100644 --- a/api/qanpb/object_details.pb.gw.go +++ b/api/qanpb/object_details.pb.gw.go @@ -229,6 +229,7 @@ func local_request_ObjectDetails_SchemaByQueryID_0(ctx context.Context, marshale // UnaryRPC :call ObjectDetailsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterObjectDetailsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterObjectDetailsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ObjectDetailsServer) error { mux.Handle("POST", pattern_ObjectDetails_GetMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -460,7 +461,7 @@ func RegisterObjectDetailsHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ObjectDetailsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ObjectDetailsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ObjectDetailsClient" to call the correct interceptors. +// "ObjectDetailsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterObjectDetailsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ObjectDetailsClient) error { mux.Handle("POST", pattern_ObjectDetails_GetMetrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/qanpb/profile.pb.gw.go b/api/qanpb/profile.pb.gw.go index e272e66cfd..573d7e4c39 100644 --- a/api/qanpb/profile.pb.gw.go +++ b/api/qanpb/profile.pb.gw.go @@ -61,6 +61,7 @@ func local_request_Profile_GetReport_0(ctx context.Context, marshaler runtime.Ma // UnaryRPC :call ProfileServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterProfileHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterProfileHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ProfileServer) error { mux.Handle("POST", pattern_Profile_GetReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterProfileHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ProfileClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ProfileClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ProfileClient" to call the correct interceptors. +// "ProfileClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterProfileHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ProfileClient) error { mux.Handle("POST", pattern_Profile_GetReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/serverpb/server.pb.gw.go b/api/serverpb/server.pb.gw.go index 1a6d5930f3..62f4f4a1c0 100644 --- a/api/serverpb/server.pb.gw.go +++ b/api/serverpb/server.pb.gw.go @@ -277,6 +277,7 @@ func local_request_Server_AWSInstanceCheck_0(ctx context.Context, marshaler runt // UnaryRPC :call ServerServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServerHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterServerHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServerServer) error { mux.Handle("GET", pattern_Server_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -556,7 +557,7 @@ func RegisterServerHandler(ctx context.Context, mux *runtime.ServeMux, conn *grp // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServerClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServerClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ServerClient" to call the correct interceptors. +// "ServerClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterServerHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServerClient) error { mux.Handle("GET", pattern_Server_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/uieventspb/server.pb.gw.go b/api/uieventspb/server.pb.gw.go index a0bdc6d93d..0b1b55a3c5 100644 --- a/api/uieventspb/server.pb.gw.go +++ b/api/uieventspb/server.pb.gw.go @@ -61,6 +61,7 @@ func local_request_UIEvents_Store_0(ctx context.Context, marshaler runtime.Marsh // UnaryRPC :call UIEventsServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterUIEventsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterUIEventsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UIEventsServer) error { mux.Handle("POST", pattern_UIEvents_Store_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterUIEventsHandler(ctx context.Context, mux *runtime.ServeMux, conn *g // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UIEventsClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UIEventsClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "UIEventsClient" to call the correct interceptors. +// "UIEventsClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterUIEventsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UIEventsClient) error { mux.Handle("POST", pattern_UIEvents_Store_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/userpb/user.pb.gw.go b/api/userpb/user.pb.gw.go index 515226f98f..577a4e9b76 100644 --- a/api/userpb/user.pb.gw.go +++ b/api/userpb/user.pb.gw.go @@ -93,6 +93,7 @@ func local_request_User_ListUsers_0(ctx context.Context, marshaler runtime.Marsh // UnaryRPC :call UserServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterUserHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UserServer) error { mux.Handle("GET", pattern_User_GetUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -204,7 +205,7 @@ func RegisterUserHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc. // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UserClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UserClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "UserClient" to call the correct interceptors. +// "UserClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UserClient) error { mux.Handle("GET", pattern_User_GetUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/tools/go.mod b/tools/go.mod index 500dce445b..2a2356a574 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -17,7 +17,7 @@ require ( 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 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 github.com/jstemmer/go-junit-report v1.0.0 github.com/quasilyte/go-consistent v0.6.0 github.com/reviewdog/reviewdog v0.20.1 @@ -213,8 +213,8 @@ require ( golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a // indirect google.golang.org/grpc v1.65.0 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index b68df4139d..74e31bedd7 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -423,8 +423,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= @@ -1099,10 +1099,10 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc= -google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a h1:YIa/rzVqMEokBkPtydCkx1VLmv3An1Uw7w1P1m6EhOY= +google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a h1:hqK4+jJZXCU4pW7jsAdGOVFIfLHQeV7LaizZKnZ84HI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= From 20150481ddc83f3ea7e91e7b981aa0bdda16b93e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 15:31:27 +0300 Subject: [PATCH 33/70] Bump github.com/docker/docker in /tools in the go_modules group (#3105) Bumps the go_modules group in /tools with 1 update: [github.com/docker/docker](https://github.com/docker/docker). Updates `github.com/docker/docker` from 27.0.0+incompatible to 27.1.0+incompatible - [Release notes](https://github.com/docker/docker/releases) - [Commits](https://github.com/docker/docker/commits/v27.1.0) --- updated-dependencies: - dependency-name: github.com/docker/docker dependency-type: indirect dependency-group: go_modules ... 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 2a2356a574..625f6b0e3d 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -68,7 +68,7 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v26.1.4+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.0.0+incompatible // indirect + github.com/docker/docker v27.1.0+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 74e31bedd7..31ad9749ad 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -171,8 +171,8 @@ github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwen github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.0.0+incompatible h1:JRugTYuelmWlW0M3jakcIadDx2HUoUO6+Tf2C5jVfwA= -github.com/docker/docker v27.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= +github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= From a84f7d03a7af8b2b8e4a26f2ad97cd6441b255bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 12:44:25 +0000 Subject: [PATCH 34/70] Bump github.com/charmbracelet/bubbletea from 0.25.0 to 0.26.6 (#3110) Bumps [github.com/charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) from 0.25.0 to 0.26.6. - [Release notes](https://github.com/charmbracelet/bubbletea/releases) - [Changelog](https://github.com/charmbracelet/bubbletea/blob/master/.goreleaser.yml) - [Commits](https://github.com/charmbracelet/bubbletea/compare/v0.25.0...v0.26.6) --- updated-dependencies: - dependency-name: github.com/charmbracelet/bubbletea 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 | 21 +++++++++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 6f9e404d34..c77d920cab 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/blang/semver v3.5.1+incompatible github.com/brianvoe/gofakeit/v6 v6.28.0 github.com/charmbracelet/bubbles v0.18.0 - github.com/charmbracelet/bubbletea v0.25.0 + github.com/charmbracelet/bubbletea v0.26.6 github.com/charmbracelet/lipgloss v0.12.1 github.com/davecgh/go-spew v1.1.1 github.com/docker/docker v25.0.3+incompatible @@ -105,9 +105,13 @@ require ( github.com/benbjohnson/clock v1.3.5 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/charmbracelet/x/ansi v0.1.4 // indirect + github.com/charmbracelet/x/input v0.1.0 // indirect + github.com/charmbracelet/x/term v0.1.1 // indirect + github.com/charmbracelet/x/windows v0.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/fatih/color v1.13.0 // indirect @@ -144,6 +148,7 @@ require ( github.com/sergi/go-diff v1.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/xlab/treeprint v1.2.0 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect @@ -179,7 +184,6 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/harmonica v0.2.0 // indirect github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 // indirect - github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/go-faster/city v1.0.1 // indirect @@ -223,7 +227,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/montanaflynn/stats v0.7.0 // indirect - github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect diff --git a/go.sum b/go.sum index 52d32a358b..ba1ed7e3ed 100644 --- a/go.sum +++ b/go.sum @@ -148,14 +148,20 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= -github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= -github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s= +github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk= github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ= github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao= github.com/charmbracelet/lipgloss v0.12.1 h1:/gmzszl+pedQpjCOH+wFkZr/N90Snz40J/NR7A0zQcs= github.com/charmbracelet/lipgloss v0.12.1/go.mod h1:V2CiwIuhx9S1S1ZlADfOj9HmxeMAORuz5izHb0zGbB8= github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM= github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/x/input v0.1.0 h1:TEsGSfZYQyOtp+STIjyBq6tpRaorH0qpwZUj8DavAhQ= +github.com/charmbracelet/x/input v0.1.0/go.mod h1:ZZwaBxPF7IG8gWWzPUVqHEtWhc1+HXJPNuerJGRGZ28= +github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI= +github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw= +github.com/charmbracelet/x/windows v0.1.0 h1:gTaxdvzDM5oMa/I2ZNF7wN78X/atWemG9Wph7Ika2k4= +github.com/charmbracelet/x/windows v0.1.0/go.mod h1:GLEO/l+lizvFDBPLIOk+49gdX49L9YWMB5t+DZd0jkQ= 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= @@ -166,8 +172,6 @@ github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -204,6 +208,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= @@ -591,8 +597,8 @@ github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= @@ -784,6 +790,8 @@ github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6 github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4= @@ -987,6 +995,7 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From c4631baed99ee115e1aa2f14a7a86717e88cb4c0 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Wed, 7 Aug 2024 01:02:01 +0300 Subject: [PATCH 35/70] PMM-13244 Move agent build scripts over to monorepo (#3124) * PMM-13244 Move agent build scripts over to monorepo * PMM-13244 update ansible scripts * PMM-13244 use amazon corretto for Java distro * PMM-13244 use OL9 images * PMM-13244 make Java package consistent --- build/packer/README.md | 16 ++ build/packer/ansible/agent-aws.yml | 293 +++++++++++++++++++++++++ build/packer/ansible/agent-do.yml | 271 +++++++++++++++++++++++ build/packer/ansible/files/daemon.json | 5 + build/packer/aws.pkr.hcl | 121 ++++++++++ build/packer/do.pkr.hcl | 30 +++ 6 files changed, 736 insertions(+) create mode 100644 build/packer/README.md create mode 100644 build/packer/ansible/agent-aws.yml create mode 100644 build/packer/ansible/agent-do.yml create mode 100644 build/packer/ansible/files/daemon.json create mode 100644 build/packer/aws.pkr.hcl create mode 100644 build/packer/do.pkr.hcl diff --git a/build/packer/README.md b/build/packer/README.md new file mode 100644 index 0000000000..bd55717741 --- /dev/null +++ b/build/packer/README.md @@ -0,0 +1,16 @@ +# Packer templates to build the agents on AWS and DigitalOcean + +### Building agents + +- AWS: `packer build aws.pkr.hcl` + - build only amd64: `packer build -only=jenkins-farm.amazon-ebs.agent aws.pkr.hcl` + - build only arm64: `packer build -only=jenkins-farm.amazon-ebs.arm-agent aws.pkr.hcl` +- DigitalOcean: `packer build -color=false do.pkr.hcl` + +### Turn on logging + +Run: +``` + PACKER_LOG_PATH="packer.log" PACKER_LOG=1 packer build aws.pkr.hcl + PACKER_LOG_PATH="packer.log" PACKER_LOG=1 packer build do.pkr.hcl +``` diff --git a/build/packer/ansible/agent-aws.yml b/build/packer/ansible/agent-aws.yml new file mode 100644 index 0000000000..f5d8c84ef9 --- /dev/null +++ b/build/packer/ansible/agent-aws.yml @@ -0,0 +1,293 @@ +--- +- name: "Provision an AWS Agent" + hosts: default + become: true + vars: + docker_compose_version: "2.26.1" + kubectl_version: "1.29.2" + doctl_version: "1.105.0" + node_version: "18.x" + + tasks: + - name: Detect vm architecture + set_fact: + # Alternative architecture name just because we never can have only one name in computers + ansible_architecture_alt: "{% if ansible_architecture == 'x86_64' %}amd64{% elif ansible_architecture == 'aarch64' %}arm64{% else %}none{% endif %}" + + - name: Upgrade OS packages + yum: + name: "*" + state: latest + + - name: Add a repository for NodeJS + shell: "curl -fsSL https://rpm.nodesource.com/setup_{{ node_version }} | bash -" + + - name: Install packages + package: + name: + - docker + - git + - jq + - gettext + - unzip + - python3 + - svn # we use it in pmm-framework.sh + - php # we use PHP in pmm-qa repo + - php-mysqlnd + - php-pdo + - wget + - kernel-devel + - kernel-headers + - gcc + - make + - perl + # - p7zip + - nodejs + state: present + + - name: Install Java17 + package: + name: jdk-17-headless + state: present + + - name: Install pip3 and ansible + package: + name: + - python3-pip + - ansible-core + - glibc-langpack-en + state: present + + - name: Install ansible collections + shell: "ansible-galaxy collection install {{ item }}" + loop: + - ansible.posix + - community.general + - community.postgresql + + - name: Install bats + shell: "npm install -g bats" + + - name: Install docker-compose + get_url: + url: "https://github.com/docker/compose/releases/download/v{{ docker_compose_version }}/docker-compose-linux-{{ ansible_architecture }}" + dest: /usr/local/bin/docker-compose + mode: "u+x,g+x,o+x" + + - name: Install kubectl + get_url: + url: https://storage.googleapis.com/kubernetes-release/release/v{{ kubectl_version }}/bin/linux/{{ ansible_architecture_alt }}/kubectl + dest: /usr/local/bin/kubectl + mode: "u+x,g+x,o+x" + + - name: Install lacework + get_url: + url: "https://github.com/lacework/lacework-vulnerability-scanner/releases/latest/download/lw-scanner-linux-{{ ansible_architecture_alt }}" + dest: /usr/local/bin/lw-scanner + mode: "u+x,g+x,o+x" + + - name: Install chromium + shell: "dnf install -y https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm" + when: ansible_architecture == "x86_64" + # NOTE: no chromium package for arm64 + + - name: Install doctl client for digital ocean + get_url: + url: https://github.com/digitalocean/doctl/releases/download/v{{ doctl_version }}/doctl-{{ doctl_version }}-linux-{{ ansible_architecture_alt }}.tar.gz + dest: /tmp/doctl.tar.gz + + - name: Unarchive a file with doctl + unarchive: + src: /tmp/doctl.tar.gz + dest: /usr/local/bin + remote_src: yes + mode: "u+x,g+x,o+x" + + - name: Instal yq + get_url: + url: https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + dest: /usr/bin/yq + mode: "555" + + - name: Install Python's virtualenv + pip: + name: virtualenv + + - name: Install Python modules + pip: + name: "{{ item }}" + virtualenv: /home/ec2-user/venv + loop: # Lookup versions at: https://pypi.org/search/ + - pyaml==24.7.0 + - GitPython==3.1.43 + - PyGithub==2.3.0 + - python-digitalocean==1.17.0 + - docker==7.1.0 + - linode-cli==5.50.0 + + - name: Copy docker daemon config + copy: + src: daemon.json + dest: /etc/docker/daemon.json + + - name: Enable Docker service + systemd: + name: docker.service + state: started + enabled: yes + + - name: Download and unarchive AWS installer + unarchive: + src: https://awscli.amazonaws.com/awscli-exe-linux-{{ ansible_architecture }}.zip + dest: /tmp + remote_src: yes + + - name: Run awscli installer + shell: /tmp/aws/install + + - name: Remove files + file: + path: "{{ item }}" + state: absent + loop: + - /tmp/doctl.tar.gz + - /tmp/aws + + - name: Add ec2-user user to "docker" group + user: + name: "ec2-user" + groups: + - "docker" + append: yes + + - name: Pull and cache docker images + docker_image: + name: "{{ item }}" + source: pull + loop: + - debian:buster + - debian:bullseye + - debian:bookworm + - ubuntu:focal + - ubuntu:jammy + - ubuntu:noble + - rockylinux:8 + - oraclelinux:9 + + - name: Turn off swap + sysctl: + name: vm.swappiness + value: 0 + state: present + + - name: Increase dirty ratio + sysctl: + name: vm.dirty_ratio + value: 80 + state: present + + - name: Decrease dirty_background_ratio + sysctl: + name: vm.dirty_background_ratio + value: 5 + + - name: Increase dirty_expire_centisecs + sysctl: + name: vm.dirty_expire_centisecs + value: 12000 #120 sec + + - name: Increase net.core.somaxconn + sysctl: + name: net.core.somaxconn + value: 1024 + + - name: Increase net.core.netdev_max_backlog + sysctl: + name: net.core.netdev_max_backlog + value: 5000 + + - name: Increase net.core.rmem_max + sysctl: + name: net.core.rmem_max + value: 16777216 + + - name: Increase net.core.wmem_max + sysctl: + name: net.core.wmem_max + value: 16777216 + + - name: Increase net.ipv4.tcp_wmem + sysctl: + name: net.ipv4.tcp_wmem + value: 4096 12582912 16777216 + + - name: Increase net.ipv4.tcp_rmem + sysctl: + name: net.ipv4.tcp_rmem + value: 4096 12582912 16777216 + + - name: Increase net.ipv4.tcp_max_syn_backlog + sysctl: + name: net.ipv4.tcp_max_syn_backlog + value: 8192 + + - name: Disable net.ipv4.tcp_slow_start_after_idle + sysctl: + name: net.ipv4.tcp_slow_start_after_idle + value: 0 + + - name: Enable net.ipv4.tcp_tw_reuse + sysctl: + name: net.ipv4.tcp_tw_reuse + value: 1 + + - name: Change net.ipv4.ip_local_port_range + sysctl: + name: net.ipv4.ip_local_port_range + value: 10240 65535 + + - name: Change TCP Congestion Control Algorithm (net.ipv4.tcp_congestion_control) + sysctl: + name: net.ipv4.tcp_congestion_control + value: bbr + + - name: Change net.ipv4.tcp_syn_retries + sysctl: + name: net.ipv4.tcp_syn_retries + value: 2 + + - name: Change BBR algoritm + sysctl: + name: net.core.default_qdisc + value: fq + + - name: Increase kernel.perf_event_max_stack + sysctl: + name: kernel.perf_event_max_stack + value: 1023 + + - name: Increase fs.xfs.xfssyncd_centisecs + sysctl: + name: fs.xfs.xfssyncd_centisecs + value: 9000 + + - name: Increase fs.inotify.max_user_watches + sysctl: + name: fs.inotify.max_user_watches + value: 1048576 + + - name: Get disk UUID + command: blkid -s UUID -o value /dev/nvme0n1p1 + register: disk_uuid + + - name: Replace fstab entities with new mount options + lineinfile: + path: /etc/fstab + regexp: "^UUID={{ disk_uuid.stdout }}" + line: "UUID={{ disk_uuid.stdout }} / xfs defaults,noatime,nobarrier,discard 1 1" + + - name: Add repo.ci.percona.com to /etc/hosts + lineinfile: + dest: /etc/hosts + line: "10.30.6.9 repo.ci.percona.com" + state: present diff --git a/build/packer/ansible/agent-do.yml b/build/packer/ansible/agent-do.yml new file mode 100644 index 0000000000..44ae5485fa --- /dev/null +++ b/build/packer/ansible/agent-do.yml @@ -0,0 +1,271 @@ +--- +- name: "Provision a DO Agent" + hosts: default + become: true + vars: + docker_compose_version: "2.26.1" + kubectl_version: "1.29.2" + doctl_version: "1.105.0" + node_version: "18.x" + + tasks: + - name: Detect vm architecture + set_fact: + # Alternative architecture name just because we never can have only one name in computers + ansible_architecture_alt: "{% if ansible_architecture == 'x86_64' %}amd64{% elif ansible_architecture == 'aarch64' %}arm64{% else %}none{% endif %}" + + - name: Enable epel repo + yum: + name: epel-release + state: present + + - name: Upgrade OS packages + yum: + name: "*" + state: latest + + - name: Add a repository for NodeJS + shell: "curl -fsSL https://rpm.nodesource.com/setup_{{ node_version }} | bash -" + + - name: Install packages + package: + name: + - docker + - git + - jq + - gettext + - unzip + - python3 + - bats + - svn # we use it in pmm-framework.sh + - php # we use PHP in pmm-qa repo + - php-mysqlnd + - php-pdo + - wget + - kernel-devel + - kernel-headers + - gcc + - make + - perl + - p7zip + - nodejs + # - xmlstarlet + state: present + + - name: Install Java17 + package: + name: jdk-17-headless + state: present + + - name: Install docker-compose + get_url: + url: "https://github.com/docker/compose/releases/download/v{{ docker_compose_version }}/docker-compose-linux-{{ ansible_architecture }}" + dest: /usr/local/bin/docker-compose + mode: "u+x,g+x,o+x" + + - name: Install kubectl + get_url: + url: https://storage.googleapis.com/kubernetes-release/release/v{{ kubectl_version }}/bin/linux/{{ ansible_architecture_alt }}/kubectl + dest: /usr/local/bin/kubectl + mode: "u+x,g+x,o+x" + + - name: Install lacework + get_url: + url: "https://github.com/lacework/lacework-vulnerability-scanner/releases/latest/download/lw-scanner-linux-{{ ansible_architecture_alt }}" + dest: /usr/local/bin/lw-scanner + mode: "u+x,g+x,o+x" + + - name: Install other software + package: + name: + - chromium + state: present + when: ansible_architecture == "x86_64" + # NOTE: no chromium package for arm64 + + - name: Install doctl client for digital ocean + get_url: + url: https://github.com/digitalocean/doctl/releases/download/v{{ doctl_version }}/doctl-{{ doctl_version }}-linux-{{ ansible_architecture_alt }}.tar.gz + dest: /tmp/doctl.tar.gz + + - name: Unarchive a file with doctl + unarchive: + src: /tmp/doctl.tar.gz + dest: /usr/local/bin + remote_src: yes + mode: "u+x,g+x,o+x" + group: "root" + owner: "root" + + - name: Instal yq + get_url: + url: https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + dest: /usr/bin/yq + mode: "555" + group: "root" + owner: "root" + + - name: Install Python modules + pip: + name: "{{ item }}" + loop: # Lookup versions at: https://pypi.org/search/ + - pyaml==24.7.0 + - GitPython==3.1.43 + - PyGithub==2.3.0 + - python-digitalocean==1.17.0 + - docker==7.1.0 + - linode-cli==5.50.0 + + - name: Install virtual box (only for Digital Ocean) + block: + - name: Add base repository for VirtualBox + yum_repository: + name: virtualbox + description: VirtualBox + baseurl: "http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch" + gpgcheck: true + gpgkey: https://www.virtualbox.org/download/oracle_vbox.asc + enabled: true + state: present + + - name: Install packages for virtualization + yum: + state: present + name: "{{ item }}" + loop: + - VirtualBox-6.1 + - vagrant + + - name: Reboot to the latest kernel + reboot: + reboot_timeout: 1200 + - name: Recompile kernel + command: /sbin/vboxconfig + + - name: Copy docker daemon config + copy: + src: daemon.json + dest: /etc/docker/daemon.json + + - name: Enable Docker service + systemd: + name: docker.service + state: started + enabled: yes + + - name: Pull and cache docker images + docker_image: + name: "{{ item }}" + source: pull + loop: + - debian:buster + - debian:stretch + - debian:bullseye + - ubuntu:jammy + - ubuntu:bionic + - ubuntu:focal + - rockylinux:8 + - oraclelinux:9 + + - name: Turn off swap + sysctl: + name: vm.swappiness + value: 0 + state: present + + - name: Increase dirty ratio + sysctl: + name: vm.dirty_ratio + value: 80 + state: present + + - name: Decrease dirty_background_ratio + sysctl: + name: vm.dirty_background_ratio + value: 5 + + - name: Increase dirty_expire_centisecs + sysctl: + name: vm.dirty_expire_centisecs + value: 12000 #120 sec + + - name: Increase net.core.somaxconn + sysctl: + name: net.core.somaxconn + value: 1024 + + - name: Increase net.core.netdev_max_backlog + sysctl: + name: net.core.netdev_max_backlog + value: 5000 + + - name: Increase net.core.rmem_max + sysctl: + name: net.core.rmem_max + value: 16777216 + + - name: Increase net.core.wmem_max + sysctl: + name: net.core.wmem_max + value: 16777216 + + - name: Increase net.ipv4.tcp_wmem + sysctl: + name: net.ipv4.tcp_wmem + value: 4096 12582912 16777216 + + - name: Increase net.ipv4.tcp_rmem + sysctl: + name: net.ipv4.tcp_rmem + value: 4096 12582912 16777216 + + - name: Increase net.ipv4.tcp_max_syn_backlog + sysctl: + name: net.ipv4.tcp_max_syn_backlog + value: 8192 + + - name: Disable net.ipv4.tcp_slow_start_after_idle + sysctl: + name: net.ipv4.tcp_slow_start_after_idle + value: 0 + + - name: Enable net.ipv4.tcp_tw_reuse + sysctl: + name: net.ipv4.tcp_tw_reuse + value: 1 + + - name: Change net.ipv4.ip_local_port_range + sysctl: + name: net.ipv4.ip_local_port_range + value: 10240 65535 + + - name: Change TCP Congestion Control Algorithm (net.ipv4.tcp_congestion_control) + sysctl: + name: net.ipv4.tcp_congestion_control + value: bbr + + - name: Change net.ipv4.tcp_syn_retries + sysctl: + name: net.ipv4.tcp_syn_retries + value: 2 + + - name: Change BBR algoritm + sysctl: + name: net.core.default_qdisc + value: fq + + - name: Increase fs.xfs.xfssyncd_centisecs + sysctl: + name: fs.xfs.xfssyncd_centisecs + value: 9000 + + - name: Increase fs.inotify.max_user_watches + sysctl: + name: fs.inotify.max_user_watches + value: 1048576 + + - name: Add repo.ci.percona.com to /etc/hosts + lineinfile: + dest: /etc/hosts + line: "10.30.6.9 repo.ci.percona.com" + state: present diff --git a/build/packer/ansible/files/daemon.json b/build/packer/ansible/files/daemon.json new file mode 100644 index 0000000000..f63a705763 --- /dev/null +++ b/build/packer/ansible/files/daemon.json @@ -0,0 +1,5 @@ +{ + "experimental": true, + "max-concurrent-downloads": 9, + "max-concurrent-uploads": 15 +} diff --git a/build/packer/aws.pkr.hcl b/build/packer/aws.pkr.hcl new file mode 100644 index 0000000000..d3bd6cd7cf --- /dev/null +++ b/build/packer/aws.pkr.hcl @@ -0,0 +1,121 @@ +packer { + required_plugins { + amazon = { + version = "=1.1.6" + source = "github.com/hashicorp/amazon" + } + ansible = { + source = "github.com/hashicorp/ansible" + version = "~> 1" + } + } +} + +source "amazon-ebs" "agent" { + ami_name = "Docker Agent v3" + instance_type = "t3.xlarge" + force_deregister = true + force_delete_snapshot = true + region = "us-east-2" + source_ami_filter { + filters = { + name = "OL9.3-*" + root-device-type = "ebs" + virtualization-type = "hvm" + architecture = "x86_64" + } + most_recent = true + owners = ["131827586825"] + } + ssh_username = "ec2-user" + tags = { + Name = "Jenkins Agent x86_64 v3" + iit-billing-tag = "pmm-worker-3" + } + run_tags = { + iit-billing-tag = "pmm-worker" + } + run_volume_tags = { + iit-billing-tag = "pmm-worker" + } + launch_block_device_mappings { + device_name = "/dev/xvda" + volume_size = 50 + volume_type = "gp3" + delete_on_termination = true + } + vpc_filter { + filters = { + "tag:Name" : "jenkins-pmm-amzn2" + } + } + subnet_filter { + filters = { + "tag:Name" : "jenkins-pmm-amzn2-B" + } + random = true + } +} + +source "amazon-ebs" "arm-agent" { + ami_name = "Docker Agent ARM v3" + instance_type = "t4g.xlarge" + force_deregister = true + force_delete_snapshot = true + region = "us-east-2" + source_ami_filter { + filters = { + name = "OL9.3-*" + root-device-type = "ebs" + virtualization-type = "hvm" + architecture = "arm64" + } + most_recent = true + owners = ["131827586825"] + } + ssh_username = "ec2-user" + tags = { + Name = "Jenkins Agent arm64 v3" + iit-billing-tag = "pmm-worker-3" + } + run_tags = { + iit-billing-tag = "pmm-worker", + } + run_volume_tags = { + iit-billing-tag = "pmm-worker" + } + launch_block_device_mappings { + device_name = "/dev/xvda" + volume_size = 30 + volume_type = "gp3" + delete_on_termination = true + } + vpc_filter { + filters = { + "tag:Name" : "jenkins-pmm-amzn2" + } + } + subnet_filter { + filters = { + "tag:Name" : "jenkins-pmm-amzn2-B" + } + random = true + } +} + +build { + name = "jenkins-farm" + sources = [ + "source.amazon-ebs.agent", + "source.amazon-ebs.arm-agent" + ] + provisioner "ansible" { + use_proxy = false + user = "ec2-user" + ansible_env_vars = ["ANSIBLE_NOCOLOR=True"] + extra_arguments = [ + "--ssh-extra-args", "-o HostKeyAlgorithms=+ssh-rsa -o StrictHostKeyChecking=no -o ForwardAgent=yes -o UserKnownHostsFile=/dev/null", "-v" + ] + playbook_file = "./ansible/agent-aws.yml" + } +} diff --git a/build/packer/do.pkr.hcl b/build/packer/do.pkr.hcl new file mode 100644 index 0000000000..3b1cba00a1 --- /dev/null +++ b/build/packer/do.pkr.hcl @@ -0,0 +1,30 @@ +packer { + required_plugins { + digitalocean = { + version = "=1.0.4" + source = "github.com/digitalocean/digitalocean" + } + } +} + +source "digitalocean" "pmm-ovf" { + droplet_name = "pmm-ovf-agent-builder" + image = "centos-stream-9-x64" + region = "ams3" + size = "s-4vcpu-8gb-intel" + ssh_username = "root" + snapshot_name = "pmm-ovf-agent" +} + +build { + name = "jenkins-farm" + sources = ["source.digitalocean.pmm-ovf"] + + provisioner "ansible" { + use_proxy = false # otherwise it fails to connect ansible to the host + ansible_env_vars = ["ANSIBLE_NOCOLOR=True"] + extra_arguments = ["-v"] # -vvv for more verbose output + max_retries = 1 + playbook_file = "./ansible/agent-do.yml" + } +} From 6f21cb2a0de4016b16336e2362dd0133e0044765 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 06:47:03 +0000 Subject: [PATCH 36/70] Bump k8s.io/kubectl from 0.29.0 to 0.30.3 (#3126) Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.29.0 to 0.30.3. - [Commits](https://github.com/kubernetes/kubectl/compare/v0.29.0...v0.30.3) --- updated-dependencies: - dependency-name: k8s.io/kubectl 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 c77d920cab..339c1c23bd 100644 --- a/go.mod +++ b/go.mod @@ -94,7 +94,7 @@ require ( k8s.io/apimachinery v0.30.3 k8s.io/cli-runtime v0.30.3 k8s.io/client-go v0.30.3 - k8s.io/kubectl v0.29.0 + k8s.io/kubectl v0.30.3 sigs.k8s.io/controller-runtime v0.14.6 ) diff --git a/go.sum b/go.sum index ba1ed7e3ed..bb86010e6a 100644 --- a/go.sum +++ b/go.sum @@ -1245,8 +1245,8 @@ k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.29.0 h1:Oqi48gXjikDhrBF67AYuZRTcJV4lg2l42GmvsP7FmYI= -k8s.io/kubectl v0.29.0/go.mod h1:0jMjGWIcMIQzmUaMgAzhSELv5WtHo2a8pq67DtviAJs= +k8s.io/kubectl v0.30.3 h1:YIBBvMdTW0xcDpmrOBzcpUVsn+zOgjMYIu7kAq+yqiI= +k8s.io/kubectl v0.30.3/go.mod h1:IcR0I9RN2+zzTRUa1BzZCm4oM0NLOawE6RzlDvd1Fpo= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= From 4278babd2389a52d0ae41f129bf8a52eb3b33df2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:56:34 +0200 Subject: [PATCH 37/70] Bump rtCamp/action-slack-notify from 2.2.1 to 2.3.0 (#2911) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [rtCamp/action-slack-notify](https://github.com/rtcamp/action-slack-notify) from 2.2.1 to 2.3.0. - [Release notes](https://github.com/rtcamp/action-slack-notify/releases) - [Commits](https://github.com/rtcamp/action-slack-notify/compare/v2.2.1...v2.3.0) --- updated-dependencies: - dependency-name: rtCamp/action-slack-notify 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: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 87e5ecf7e2..943a139750 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -151,7 +151,7 @@ jobs: steps: - name: Slack Notification - uses: rtCamp/action-slack-notify@v2.2.1 + uses: rtCamp/action-slack-notify@v2.3.0 workflow_failure: if: ${{ failure() }} @@ -169,4 +169,4 @@ jobs: steps: - name: Slack Notification - uses: rtCamp/action-slack-notify@v2.2.1 + uses: rtCamp/action-slack-notify@v2.3.0 From 61a4fb4493ed3a2e7e43c3cd16bbcef767771969 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:06:45 +0000 Subject: [PATCH 38/70] Bump github.com/bufbuild/buf from 1.35.1 to 1.36.0 in /tools (#3136) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.35.1 to 1.36.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.35.1...v1.36.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@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 625f6b0e3d..094fb1e9c6 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -10,7 +10,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.6.0 - github.com/bufbuild/buf v1.35.1 + github.com/bufbuild/buf v1.36.0 github.com/daixiang0/gci v0.13.0 github.com/envoyproxy/protoc-gen-validate v1.1.0 github.com/go-delve/delve v1.23.0 diff --git a/tools/go.sum b/tools/go.sum index 31ad9749ad..3799d69844 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -104,8 +104,8 @@ github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= 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.35.1 h1:aiCi/YFOg7eXKZeveWb2ZhnmLFwUMM/FnDCM0roFp+M= -github.com/bufbuild/buf v1.35.1/go.mod h1:SM7b5QW3FkQPNkkqIa/9UWzLOoe51la+GGZpEgH9b68= +github.com/bufbuild/buf v1.36.0 h1:sC/MRgAhwvcbLbUXlTY+zgLUT4PzHm19BnnEsgu/rgU= +github.com/bufbuild/buf v1.36.0/go.mod h1:SM7b5QW3FkQPNkkqIa/9UWzLOoe51la+GGZpEgH9b68= github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee h1:E6ET8YUcYJ1lAe6ctR3as7yqzW2BNItDFnaB5zQq/8M= From 083fa32d53f1099cd6d3259eccacd4ad65c29e7f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:15:04 +0000 Subject: [PATCH 39/70] Bump golang.org/x/tools from 0.23.0 to 0.24.0 in /tools (#3135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.23.0...v0.24.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@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 094fb1e9c6..146f2c14b3 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -24,7 +24,7 @@ require ( github.com/vburenin/ifacemaker v1.2.1 github.com/vektra/mockery/v2 v2.44.1 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 - golang.org/x/tools v0.23.0 + golang.org/x/tools v0.24.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 google.golang.org/protobuf v1.34.2 gopkg.in/reform.v1 v1.5.1 @@ -203,15 +203,15 @@ require ( go.uber.org/zap v1.27.0 // indirect golang.org/x/arch v0.6.0 // indirect golang.org/x/build v0.0.0-20240712162709-0b82a206aadf // indirect - golang.org/x/crypto v0.25.0 // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/mod v0.19.0 // indirect - golang.org/x/net v0.27.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a // indirect diff --git a/tools/go.sum b/tools/go.sum index 3799d69844..2e722f5cfb 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -753,8 +753,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -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.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -844,8 +844,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= 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= @@ -873,8 +873,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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -935,16 +935,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= 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= @@ -957,8 +957,8 @@ 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.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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= @@ -1023,8 +1023,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.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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 a343a2bcec944de25499fdfc4ff78cd3dba0ba73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:23:06 +0000 Subject: [PATCH 40/70] Bump golang.org/x/sys from 0.21.0 to 0.23.0 (#3134) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.21.0 to 0.23.0. - [Commits](https://github.com/golang/sys/compare/v0.21.0...v0.23.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@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 339c1c23bd..913ef60ce9 100644 --- a/go.mod +++ b/go.mod @@ -79,7 +79,7 @@ require ( go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.24.0 golang.org/x/sync v0.7.0 - golang.org/x/sys v0.21.0 + golang.org/x/sys v0.23.0 golang.org/x/text v0.16.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a diff --git a/go.sum b/go.sum index bb86010e6a..0fddbaf986 100644 --- a/go.sum +++ b/go.sum @@ -1009,8 +1009,8 @@ golang.org/x/sys v0.5.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/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= From a694aa9d9903abdea2b111db6a8307dc500e08da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:32:55 +0000 Subject: [PATCH 41/70] Bump go.mongodb.org/mongo-driver from 1.15.0 to 1.16.0 (#3108) Bumps [go.mongodb.org/mongo-driver](https://github.com/mongodb/mongo-go-driver) from 1.15.0 to 1.16.0. - [Release notes](https://github.com/mongodb/mongo-go-driver/releases) - [Commits](https://github.com/mongodb/mongo-go-driver/compare/v1.15.0...v1.16.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 | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 913ef60ce9..4c8957bb93 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/stretchr/objx v0.5.2 github.com/stretchr/testify v1.9.0 - go.mongodb.org/mongo-driver v1.15.0 + go.mongodb.org/mongo-driver v1.16.0 go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.24.0 golang.org/x/sync v0.7.0 @@ -226,7 +226,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/montanaflynn/stats v0.7.0 // indirect + github.com/montanaflynn/stats v0.7.1 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect diff --git a/go.sum b/go.sum index 0fddbaf986..6f1f774e5c 100644 --- a/go.sum +++ b/go.sum @@ -593,8 +593,8 @@ github.com/mongodb/mongo-tools v0.0.0-20210723181737-9fcadb98cca5/go.mod h1:ABxj github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= -github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= +github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= @@ -804,8 +804,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t go.mongodb.org/mongo-driver v1.6.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.7.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= -go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc= -go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= +go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4= +go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= 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= From afe7af085145461c5c0f9a7553aebb849517effe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:44:02 +0000 Subject: [PATCH 42/70] Bump luxon and @types/luxon in /cli-tests (#3127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [luxon](https://github.com/moment/luxon) and [@types/luxon](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/luxon). These dependencies needed to be updated together. Updates `luxon` from 3.4.4 to 3.5.0 - [Changelog](https://github.com/moment/luxon/blob/master/CHANGELOG.md) - [Commits](https://github.com/moment/luxon/compare/3.4.4...3.5.0) Updates `@types/luxon` from 3.4.0 to 3.4.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/luxon) --- updated-dependencies: - dependency-name: luxon dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: "@types/luxon" 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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- cli-tests/package-lock.json | 16 ++++++++-------- cli-tests/package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 9f9a2b1175..c5c4e0df95 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -9,9 +9,9 @@ "version": "1.0.0", "dependencies": { "@playwright/test": "^1.34.2", - "@types/luxon": "^3.4.0", + "@types/luxon": "^3.4.2", "dotenv": "^16.4.0", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "playwright": "^1.41.2", "promise-retry": "^2.0.1", "shelljs": "^0.8.5", @@ -210,9 +210,9 @@ "dev": true }, "node_modules/@types/luxon": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.0.tgz", - "integrity": "sha512-PEVoA4MOfSsFNaPrZjIUGUZujBDxnO/tj2A2N9KfzlR+pNgpBdDuk0TmRvSMAVUP5q4q8IkMEZ8UOp3MIr+QgA==" + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==" }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -2300,9 +2300,9 @@ } }, "node_modules/luxon": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", "engines": { "node": ">=12" } diff --git a/cli-tests/package.json b/cli-tests/package.json index dd13a35acb..8fb66b60b4 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -13,9 +13,9 @@ }, "dependencies": { "@playwright/test": "^1.34.2", - "@types/luxon": "^3.4.0", + "@types/luxon": "^3.4.2", "dotenv": "^16.4.0", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "playwright": "^1.41.2", "promise-retry": "^2.0.1", "shelljs": "^0.8.5", From 69818b1e47e108da8bd7af69044a5b541a6c90d0 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Wed, 7 Aug 2024 13:24:34 +0300 Subject: [PATCH 43/70] PMM-13246 Add to release notes (#3114) * Add PMM-13246 to release notes * Update docs/release-notes/2.43.0.md Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> * Update 2.43.0.md --------- Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> --- docs/release-notes/2.43.0.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 2097be5b29..a8cd62d187 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -45,4 +45,12 @@ If you're looking to upgrade, you can easily [install the latest version of Perc ### Fixed issues -- [PMM-xxxxx](https://perconadev.atlassian.net/browse/PMM-xxxx) - Fixed an issue in the +- [PMM-13246](https://perconadev.atlassian.net/browse/PMM-13246) - Addressed four security vulnerabilities (CVEs) related to the GNU C Library (Glibc), specifically affecting the Name Service Cache Daemon (nscd): + + - [CVE-2024-33599](https://nvd.nist.gov/vuln/detail/CVE-2024-33599) + - [CVE-2024-33600](https://nvd.nist.gov/vuln/detail/CVE-2024-33600) + - [CVE-2024-33601](https://nvd.nist.gov/vuln/detail/CVE-2024-33601) + - [CVE-2024-33602](https://nvd.nist.gov/vuln/detail/CVE-2024-33602) + + While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. + From 63433fdbb12e8787c969b1ed73f36c7e5f3b4b26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:55:05 +0000 Subject: [PATCH 44/70] Bump google.golang.org/grpc/cmd/protoc-gen-go-grpc from 1.4.0 to 1.5.1 in /tools (#3102) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Bump google.golang.org/grpc/cmd/protoc-gen-go-grpc in /tools Bumps [google.golang.org/grpc/cmd/protoc-gen-go-grpc](https://github.com/grpc/grpc-go) from 1.4.0 to 1.5.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.4.0...v1.5.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc/cmd/protoc-gen-go-grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: regenerate the code --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> Co-authored-by: Alex Demidoff --- api/agentlocalpb/agentlocal_grpc.pb.go | 22 +++-- api/agentpb/agent_grpc.pb.go | 80 +++++++------------ api/inventorypb/agents_grpc.pb.go | 22 +++-- api/inventorypb/nodes_grpc.pb.go | 22 +++-- api/inventorypb/services_grpc.pb.go | 22 +++-- api/managementpb/actions_grpc.pb.go | 22 +++-- api/managementpb/agent/agent_grpc.pb.go | 22 +++-- api/managementpb/alerting/alerting_grpc.pb.go | 22 +++-- api/managementpb/annotation_grpc.pb.go | 22 +++-- api/managementpb/azure/azure_grpc.pb.go | 22 +++-- api/managementpb/backup/artifacts_grpc.pb.go | 22 +++-- api/managementpb/backup/backups_grpc.pb.go | 22 +++-- api/managementpb/backup/locations_grpc.pb.go | 22 +++-- api/managementpb/backup/restores_grpc.pb.go | 22 +++-- api/managementpb/checks_grpc.pb.go | 22 +++-- api/managementpb/dbaas/components_grpc.pb.go | 22 +++-- api/managementpb/dbaas/db_clusters_grpc.pb.go | 22 +++-- api/managementpb/dbaas/kubernetes_grpc.pb.go | 22 +++-- api/managementpb/dbaas/logs_grpc.pb.go | 22 +++-- .../dbaas/psmdb_clusters_grpc.pb.go | 22 +++-- .../dbaas/pxc_clusters_grpc.pb.go | 22 +++-- api/managementpb/dbaas/templates_grpc.pb.go | 22 +++-- api/managementpb/dump/dump_grpc.pb.go | 22 +++-- api/managementpb/external_grpc.pb.go | 22 +++-- api/managementpb/haproxy_grpc.pb.go | 22 +++-- api/managementpb/ia/alerts_grpc.pb.go | 22 +++-- api/managementpb/ia/channels_grpc.pb.go | 22 +++-- api/managementpb/ia/rules_grpc.pb.go | 22 +++-- api/managementpb/mongodb_grpc.pb.go | 22 +++-- api/managementpb/mysql_grpc.pb.go | 22 +++-- api/managementpb/node/node_grpc.pb.go | 22 +++-- api/managementpb/node_grpc.pb.go | 22 +++-- api/managementpb/postgresql_grpc.pb.go | 22 +++-- api/managementpb/proxysql_grpc.pb.go | 22 +++-- api/managementpb/rds_grpc.pb.go | 22 +++-- api/managementpb/role/role_grpc.pb.go | 22 +++-- api/managementpb/service/service_grpc.pb.go | 22 +++-- api/managementpb/service_grpc.pb.go | 22 +++-- api/platformpb/platform_grpc.pb.go | 22 +++-- api/qanpb/collector_grpc.pb.go | 22 +++-- api/qanpb/filters_grpc.pb.go | 22 +++-- api/qanpb/metrics_names_grpc.pb.go | 22 +++-- api/qanpb/object_details_grpc.pb.go | 22 +++-- api/qanpb/profile_grpc.pb.go | 22 +++-- api/serverpb/server_grpc.pb.go | 22 +++-- api/uieventspb/server_grpc.pb.go | 22 +++-- api/userpb/user_grpc.pb.go | 22 +++-- tools/go.mod | 2 +- tools/go.sum | 4 +- 49 files changed, 812 insertions(+), 286 deletions(-) diff --git a/api/agentlocalpb/agentlocal_grpc.pb.go b/api/agentlocalpb/agentlocal_grpc.pb.go index d0906208b5..efe5828509 100644 --- a/api/agentlocalpb/agentlocal_grpc.pb.go +++ b/api/agentlocalpb/agentlocal_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: agentlocalpb/agentlocal.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AgentLocal_Status_FullMethodName = "/agentlocal.AgentLocal/Status" @@ -66,7 +66,7 @@ func (c *agentLocalClient) Reload(ctx context.Context, in *ReloadRequest, opts . // AgentLocalServer is the server API for AgentLocal service. // All implementations must embed UnimplementedAgentLocalServer -// for forward compatibility +// for forward compatibility. // // AgentLocal service provides public methods for checking pmm-agent status locally. type AgentLocalServer interface { @@ -77,7 +77,11 @@ type AgentLocalServer interface { mustEmbedUnimplementedAgentLocalServer() } -// UnimplementedAgentLocalServer must be embedded to have forward compatible implementations. +// UnimplementedAgentLocalServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentLocalServer struct{} func (UnimplementedAgentLocalServer) Status(context.Context, *StatusRequest) (*StatusResponse, error) { @@ -88,6 +92,7 @@ func (UnimplementedAgentLocalServer) Reload(context.Context, *ReloadRequest) (*R return nil, status.Errorf(codes.Unimplemented, "method Reload not implemented") } func (UnimplementedAgentLocalServer) mustEmbedUnimplementedAgentLocalServer() {} +func (UnimplementedAgentLocalServer) testEmbeddedByValue() {} // UnsafeAgentLocalServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentLocalServer will @@ -97,6 +102,13 @@ type UnsafeAgentLocalServer interface { } func RegisterAgentLocalServer(s grpc.ServiceRegistrar, srv AgentLocalServer) { + // If the following call pancis, it indicates UnimplementedAgentLocalServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AgentLocal_ServiceDesc, srv) } diff --git a/api/agentpb/agent_grpc.pb.go b/api/agentpb/agent_grpc.pb.go index 7426d93ba8..7fdd0f54e8 100644 --- a/api/agentpb/agent_grpc.pb.go +++ b/api/agentpb/agent_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: agentpb/agent.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Agent_Connect_FullMethodName = "/agent.Agent/Connect" @@ -30,7 +30,7 @@ const ( // Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentClient interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. - Connect(ctx context.Context, opts ...grpc.CallOption) (Agent_ConnectClient, error) + Connect(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[AgentMessage, ServerMessage], error) } type agentClient struct { @@ -41,56 +41,42 @@ func NewAgentClient(cc grpc.ClientConnInterface) AgentClient { return &agentClient{cc} } -func (c *agentClient) Connect(ctx context.Context, opts ...grpc.CallOption) (Agent_ConnectClient, error) { +func (c *agentClient) Connect(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[AgentMessage, ServerMessage], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &Agent_ServiceDesc.Streams[0], Agent_Connect_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &agentConnectClient{ClientStream: stream} + x := &grpc.GenericClientStream[AgentMessage, ServerMessage]{ClientStream: stream} return x, nil } -type Agent_ConnectClient interface { - Send(*AgentMessage) error - Recv() (*ServerMessage, error) - grpc.ClientStream -} - -type agentConnectClient struct { - grpc.ClientStream -} - -func (x *agentConnectClient) Send(m *AgentMessage) error { - return x.ClientStream.SendMsg(m) -} - -func (x *agentConnectClient) Recv() (*ServerMessage, error) { - m := new(ServerMessage) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Agent_ConnectClient = grpc.BidiStreamingClient[AgentMessage, ServerMessage] // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer -// for forward compatibility +// for forward compatibility. // // Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentServer interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. - Connect(Agent_ConnectServer) error + Connect(grpc.BidiStreamingServer[AgentMessage, ServerMessage]) error mustEmbedUnimplementedAgentServer() } -// UnimplementedAgentServer must be embedded to have forward compatible implementations. +// UnimplementedAgentServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentServer struct{} -func (UnimplementedAgentServer) Connect(Agent_ConnectServer) error { +func (UnimplementedAgentServer) Connect(grpc.BidiStreamingServer[AgentMessage, ServerMessage]) error { return status.Errorf(codes.Unimplemented, "method Connect not implemented") } func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} +func (UnimplementedAgentServer) testEmbeddedByValue() {} // UnsafeAgentServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentServer will @@ -100,34 +86,22 @@ type UnsafeAgentServer interface { } func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { + // If the following call pancis, it indicates UnimplementedAgentServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Agent_ServiceDesc, srv) } func _Agent_Connect_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(AgentServer).Connect(&agentConnectServer{ServerStream: stream}) -} - -type Agent_ConnectServer interface { - Send(*ServerMessage) error - Recv() (*AgentMessage, error) - grpc.ServerStream -} - -type agentConnectServer struct { - grpc.ServerStream + return srv.(AgentServer).Connect(&grpc.GenericServerStream[AgentMessage, ServerMessage]{ServerStream: stream}) } -func (x *agentConnectServer) Send(m *ServerMessage) error { - return x.ServerStream.SendMsg(m) -} - -func (x *agentConnectServer) Recv() (*AgentMessage, error) { - m := new(AgentMessage) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Agent_ConnectServer = grpc.BidiStreamingServer[AgentMessage, ServerMessage] // Agent_ServiceDesc is the grpc.ServiceDesc for Agent service. // It's only intended for direct use with grpc.RegisterService, diff --git a/api/inventorypb/agents_grpc.pb.go b/api/inventorypb/agents_grpc.pb.go index 6e523a5e4d..7d1748c5e7 100644 --- a/api/inventorypb/agents_grpc.pb.go +++ b/api/inventorypb/agents_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventorypb/agents.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Agents_ListAgents_FullMethodName = "/inventory.Agents/ListAgents" @@ -443,7 +443,7 @@ func (c *agentsClient) RemoveAgent(ctx context.Context, in *RemoveAgentRequest, // AgentsServer is the server API for Agents service. // All implementations must embed UnimplementedAgentsServer -// for forward compatibility +// for forward compatibility. // // Agents service provides public methods for managing Agents. type AgentsServer interface { @@ -512,7 +512,11 @@ type AgentsServer interface { mustEmbedUnimplementedAgentsServer() } -// UnimplementedAgentsServer must be embedded to have forward compatible implementations. +// UnimplementedAgentsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentsServer struct{} func (UnimplementedAgentsServer) ListAgents(context.Context, *ListAgentsRequest) (*ListAgentsResponse, error) { @@ -639,6 +643,7 @@ func (UnimplementedAgentsServer) RemoveAgent(context.Context, *RemoveAgentReques return nil, status.Errorf(codes.Unimplemented, "method RemoveAgent not implemented") } func (UnimplementedAgentsServer) mustEmbedUnimplementedAgentsServer() {} +func (UnimplementedAgentsServer) testEmbeddedByValue() {} // UnsafeAgentsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentsServer will @@ -648,6 +653,13 @@ type UnsafeAgentsServer interface { } func RegisterAgentsServer(s grpc.ServiceRegistrar, srv AgentsServer) { + // If the following call pancis, it indicates UnimplementedAgentsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Agents_ServiceDesc, srv) } diff --git a/api/inventorypb/nodes_grpc.pb.go b/api/inventorypb/nodes_grpc.pb.go index d4270b9477..c50491f4d9 100644 --- a/api/inventorypb/nodes_grpc.pb.go +++ b/api/inventorypb/nodes_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventorypb/nodes.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Nodes_ListNodes_FullMethodName = "/inventory.Nodes/ListNodes" @@ -167,7 +167,7 @@ func (c *nodesClient) RemoveNode(ctx context.Context, in *RemoveNodeRequest, opt // NodesServer is the server API for Nodes service. // All implementations must embed UnimplementedNodesServer -// for forward compatibility +// for forward compatibility. // // Nodes service provides public methods for managing Nodes. type NodesServer interface { @@ -197,7 +197,11 @@ type NodesServer interface { mustEmbedUnimplementedNodesServer() } -// UnimplementedNodesServer must be embedded to have forward compatible implementations. +// UnimplementedNodesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedNodesServer struct{} func (UnimplementedNodesServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { @@ -236,6 +240,7 @@ func (UnimplementedNodesServer) RemoveNode(context.Context, *RemoveNodeRequest) return nil, status.Errorf(codes.Unimplemented, "method RemoveNode not implemented") } func (UnimplementedNodesServer) mustEmbedUnimplementedNodesServer() {} +func (UnimplementedNodesServer) testEmbeddedByValue() {} // UnsafeNodesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to NodesServer will @@ -245,6 +250,13 @@ type UnsafeNodesServer interface { } func RegisterNodesServer(s grpc.ServiceRegistrar, srv NodesServer) { + // If the following call pancis, it indicates UnimplementedNodesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Nodes_ServiceDesc, srv) } diff --git a/api/inventorypb/services_grpc.pb.go b/api/inventorypb/services_grpc.pb.go index e43403789c..7b8936488b 100644 --- a/api/inventorypb/services_grpc.pb.go +++ b/api/inventorypb/services_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventorypb/services.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Services_ListServices_FullMethodName = "/inventory.Services/ListServices" @@ -209,7 +209,7 @@ func (c *servicesClient) ChangeService(ctx context.Context, in *ChangeServiceReq // ServicesServer is the server API for Services service. // All implementations must embed UnimplementedServicesServer -// for forward compatibility +// for forward compatibility. // // Services service provides public methods for managing Services. type ServicesServer interface { @@ -242,7 +242,11 @@ type ServicesServer interface { mustEmbedUnimplementedServicesServer() } -// UnimplementedServicesServer must be embedded to have forward compatible implementations. +// UnimplementedServicesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedServicesServer struct{} func (UnimplementedServicesServer) ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) { @@ -297,6 +301,7 @@ func (UnimplementedServicesServer) ChangeService(context.Context, *ChangeService return nil, status.Errorf(codes.Unimplemented, "method ChangeService not implemented") } func (UnimplementedServicesServer) mustEmbedUnimplementedServicesServer() {} +func (UnimplementedServicesServer) testEmbeddedByValue() {} // UnsafeServicesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServicesServer will @@ -306,6 +311,13 @@ type UnsafeServicesServer interface { } func RegisterServicesServer(s grpc.ServiceRegistrar, srv ServicesServer) { + // If the following call pancis, it indicates UnimplementedServicesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Services_ServiceDesc, srv) } diff --git a/api/managementpb/actions_grpc.pb.go b/api/managementpb/actions_grpc.pb.go index c92448c49b..13af2906da 100644 --- a/api/managementpb/actions_grpc.pb.go +++ b/api/managementpb/actions_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/actions.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Actions_GetAction_FullMethodName = "/management.Actions/GetAction" @@ -235,7 +235,7 @@ func (c *actionsClient) CancelAction(ctx context.Context, in *CancelActionReques // ActionsServer is the server API for Actions service. // All implementations must embed UnimplementedActionsServer -// for forward compatibility +// for forward compatibility. // // Actions service provides public Management API methods for Actions. type ActionsServer interface { @@ -272,7 +272,11 @@ type ActionsServer interface { mustEmbedUnimplementedActionsServer() } -// UnimplementedActionsServer must be embedded to have forward compatible implementations. +// UnimplementedActionsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedActionsServer struct{} func (UnimplementedActionsServer) GetAction(context.Context, *GetActionRequest) (*GetActionResponse, error) { @@ -335,6 +339,7 @@ func (UnimplementedActionsServer) CancelAction(context.Context, *CancelActionReq return nil, status.Errorf(codes.Unimplemented, "method CancelAction not implemented") } func (UnimplementedActionsServer) mustEmbedUnimplementedActionsServer() {} +func (UnimplementedActionsServer) testEmbeddedByValue() {} // UnsafeActionsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ActionsServer will @@ -344,6 +349,13 @@ type UnsafeActionsServer interface { } func RegisterActionsServer(s grpc.ServiceRegistrar, srv ActionsServer) { + // If the following call pancis, it indicates UnimplementedActionsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Actions_ServiceDesc, srv) } diff --git a/api/managementpb/agent/agent_grpc.pb.go b/api/managementpb/agent/agent_grpc.pb.go index 28e61a02bf..39c3284812 100644 --- a/api/managementpb/agent/agent_grpc.pb.go +++ b/api/managementpb/agent/agent_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/agent/agent.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Agent_ListAgents_FullMethodName = "/agent.v1beta1.Agent/ListAgents" @@ -53,7 +53,7 @@ func (c *agentClient) ListAgents(ctx context.Context, in *ListAgentRequest, opts // AgentServer is the server API for Agent service. // All implementations must embed UnimplementedAgentServer -// for forward compatibility +// for forward compatibility. // // Agent service provides public methods for managing and querying Agents. type AgentServer interface { @@ -62,13 +62,18 @@ type AgentServer interface { mustEmbedUnimplementedAgentServer() } -// UnimplementedAgentServer must be embedded to have forward compatible implementations. +// UnimplementedAgentServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentServer struct{} func (UnimplementedAgentServer) ListAgents(context.Context, *ListAgentRequest) (*ListAgentResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListAgents not implemented") } func (UnimplementedAgentServer) mustEmbedUnimplementedAgentServer() {} +func (UnimplementedAgentServer) testEmbeddedByValue() {} // UnsafeAgentServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentServer will @@ -78,6 +83,13 @@ type UnsafeAgentServer interface { } func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) { + // If the following call pancis, it indicates UnimplementedAgentServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Agent_ServiceDesc, srv) } diff --git a/api/managementpb/alerting/alerting_grpc.pb.go b/api/managementpb/alerting/alerting_grpc.pb.go index 3fb26223b4..2a7adf8ee2 100644 --- a/api/managementpb/alerting/alerting_grpc.pb.go +++ b/api/managementpb/alerting/alerting_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/alerting/alerting.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Alerting_ListTemplates_FullMethodName = "/alerting.v1.Alerting/ListTemplates" @@ -105,7 +105,7 @@ func (c *alertingClient) CreateRule(ctx context.Context, in *CreateRuleRequest, // AlertingServer is the server API for Alerting service. // All implementations must embed UnimplementedAlertingServer -// for forward compatibility +// for forward compatibility. // // Alerting service lets to manage alerting templates and create alerting rules from them. type AlertingServer interface { @@ -122,7 +122,11 @@ type AlertingServer interface { mustEmbedUnimplementedAlertingServer() } -// UnimplementedAlertingServer must be embedded to have forward compatible implementations. +// UnimplementedAlertingServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAlertingServer struct{} func (UnimplementedAlertingServer) ListTemplates(context.Context, *ListTemplatesRequest) (*ListTemplatesResponse, error) { @@ -145,6 +149,7 @@ func (UnimplementedAlertingServer) CreateRule(context.Context, *CreateRuleReques return nil, status.Errorf(codes.Unimplemented, "method CreateRule not implemented") } func (UnimplementedAlertingServer) mustEmbedUnimplementedAlertingServer() {} +func (UnimplementedAlertingServer) testEmbeddedByValue() {} // UnsafeAlertingServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AlertingServer will @@ -154,6 +159,13 @@ type UnsafeAlertingServer interface { } func RegisterAlertingServer(s grpc.ServiceRegistrar, srv AlertingServer) { + // If the following call pancis, it indicates UnimplementedAlertingServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Alerting_ServiceDesc, srv) } diff --git a/api/managementpb/annotation_grpc.pb.go b/api/managementpb/annotation_grpc.pb.go index f195fca8bb..85a7ba02ad 100644 --- a/api/managementpb/annotation_grpc.pb.go +++ b/api/managementpb/annotation_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/annotation.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Annotation_AddAnnotation_FullMethodName = "/management.Annotation/AddAnnotation" @@ -53,7 +53,7 @@ func (c *annotationClient) AddAnnotation(ctx context.Context, in *AddAnnotationR // AnnotationServer is the server API for Annotation service. // All implementations must embed UnimplementedAnnotationServer -// for forward compatibility +// for forward compatibility. // // Annotation service provides public methods for managing Annotations. type AnnotationServer interface { @@ -62,13 +62,18 @@ type AnnotationServer interface { mustEmbedUnimplementedAnnotationServer() } -// UnimplementedAnnotationServer must be embedded to have forward compatible implementations. +// UnimplementedAnnotationServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAnnotationServer struct{} func (UnimplementedAnnotationServer) AddAnnotation(context.Context, *AddAnnotationRequest) (*AddAnnotationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddAnnotation not implemented") } func (UnimplementedAnnotationServer) mustEmbedUnimplementedAnnotationServer() {} +func (UnimplementedAnnotationServer) testEmbeddedByValue() {} // UnsafeAnnotationServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AnnotationServer will @@ -78,6 +83,13 @@ type UnsafeAnnotationServer interface { } func RegisterAnnotationServer(s grpc.ServiceRegistrar, srv AnnotationServer) { + // If the following call pancis, it indicates UnimplementedAnnotationServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Annotation_ServiceDesc, srv) } diff --git a/api/managementpb/azure/azure_grpc.pb.go b/api/managementpb/azure/azure_grpc.pb.go index cbc784a7ad..4265102277 100644 --- a/api/managementpb/azure/azure_grpc.pb.go +++ b/api/managementpb/azure/azure_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/azure/azure.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AzureDatabase_DiscoverAzureDatabase_FullMethodName = "/azure.v1beta1.AzureDatabase/DiscoverAzureDatabase" @@ -66,7 +66,7 @@ func (c *azureDatabaseClient) AddAzureDatabase(ctx context.Context, in *AddAzure // AzureDatabaseServer is the server API for AzureDatabase service. // All implementations must embed UnimplementedAzureDatabaseServer -// for forward compatibility +// for forward compatibility. // // AzureDatabase service provides Service Discovery APIs. type AzureDatabaseServer interface { @@ -77,7 +77,11 @@ type AzureDatabaseServer interface { mustEmbedUnimplementedAzureDatabaseServer() } -// UnimplementedAzureDatabaseServer must be embedded to have forward compatible implementations. +// UnimplementedAzureDatabaseServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAzureDatabaseServer struct{} func (UnimplementedAzureDatabaseServer) DiscoverAzureDatabase(context.Context, *DiscoverAzureDatabaseRequest) (*DiscoverAzureDatabaseResponse, error) { @@ -88,6 +92,7 @@ func (UnimplementedAzureDatabaseServer) AddAzureDatabase(context.Context, *AddAz return nil, status.Errorf(codes.Unimplemented, "method AddAzureDatabase not implemented") } func (UnimplementedAzureDatabaseServer) mustEmbedUnimplementedAzureDatabaseServer() {} +func (UnimplementedAzureDatabaseServer) testEmbeddedByValue() {} // UnsafeAzureDatabaseServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AzureDatabaseServer will @@ -97,6 +102,13 @@ type UnsafeAzureDatabaseServer interface { } func RegisterAzureDatabaseServer(s grpc.ServiceRegistrar, srv AzureDatabaseServer) { + // If the following call pancis, it indicates UnimplementedAzureDatabaseServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AzureDatabase_ServiceDesc, srv) } diff --git a/api/managementpb/backup/artifacts_grpc.pb.go b/api/managementpb/backup/artifacts_grpc.pb.go index c113911459..ad595542bd 100644 --- a/api/managementpb/backup/artifacts_grpc.pb.go +++ b/api/managementpb/backup/artifacts_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/backup/artifacts.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Artifacts_ListArtifacts_FullMethodName = "/backup.v1.Artifacts/ListArtifacts" @@ -79,7 +79,7 @@ func (c *artifactsClient) ListPitrTimeranges(ctx context.Context, in *ListPitrTi // ArtifactsServer is the server API for Artifacts service. // All implementations must embed UnimplementedArtifactsServer -// for forward compatibility +// for forward compatibility. // // Artifacts service provides public methods for managing backup artifacts. type ArtifactsServer interface { @@ -92,7 +92,11 @@ type ArtifactsServer interface { mustEmbedUnimplementedArtifactsServer() } -// UnimplementedArtifactsServer must be embedded to have forward compatible implementations. +// UnimplementedArtifactsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedArtifactsServer struct{} func (UnimplementedArtifactsServer) ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error) { @@ -107,6 +111,7 @@ func (UnimplementedArtifactsServer) ListPitrTimeranges(context.Context, *ListPit return nil, status.Errorf(codes.Unimplemented, "method ListPitrTimeranges not implemented") } func (UnimplementedArtifactsServer) mustEmbedUnimplementedArtifactsServer() {} +func (UnimplementedArtifactsServer) testEmbeddedByValue() {} // UnsafeArtifactsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ArtifactsServer will @@ -116,6 +121,13 @@ type UnsafeArtifactsServer interface { } func RegisterArtifactsServer(s grpc.ServiceRegistrar, srv ArtifactsServer) { + // If the following call pancis, it indicates UnimplementedArtifactsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Artifacts_ServiceDesc, srv) } diff --git a/api/managementpb/backup/backups_grpc.pb.go b/api/managementpb/backup/backups_grpc.pb.go index 53923c3429..69c84e94a6 100644 --- a/api/managementpb/backup/backups_grpc.pb.go +++ b/api/managementpb/backup/backups_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/backup/backups.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Backups_StartBackup_FullMethodName = "/backup.v1.Backups/StartBackup" @@ -144,7 +144,7 @@ func (c *backupsClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts .. // BackupsServer is the server API for Backups service. // All implementations must embed UnimplementedBackupsServer -// for forward compatibility +// for forward compatibility. // // Backups service handles backup operations to DB. type BackupsServer interface { @@ -167,7 +167,11 @@ type BackupsServer interface { mustEmbedUnimplementedBackupsServer() } -// UnimplementedBackupsServer must be embedded to have forward compatible implementations. +// UnimplementedBackupsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedBackupsServer struct{} func (UnimplementedBackupsServer) StartBackup(context.Context, *StartBackupRequest) (*StartBackupResponse, error) { @@ -202,6 +206,7 @@ func (UnimplementedBackupsServer) GetLogs(context.Context, *GetLogsRequest) (*Ge return nil, status.Errorf(codes.Unimplemented, "method GetLogs not implemented") } func (UnimplementedBackupsServer) mustEmbedUnimplementedBackupsServer() {} +func (UnimplementedBackupsServer) testEmbeddedByValue() {} // UnsafeBackupsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to BackupsServer will @@ -211,6 +216,13 @@ type UnsafeBackupsServer interface { } func RegisterBackupsServer(s grpc.ServiceRegistrar, srv BackupsServer) { + // If the following call pancis, it indicates UnimplementedBackupsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Backups_ServiceDesc, srv) } diff --git a/api/managementpb/backup/locations_grpc.pb.go b/api/managementpb/backup/locations_grpc.pb.go index a1fafdf358..4464ec5316 100644 --- a/api/managementpb/backup/locations_grpc.pb.go +++ b/api/managementpb/backup/locations_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/backup/locations.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Locations_ListLocations_FullMethodName = "/backup.v1.Locations/ListLocations" @@ -105,7 +105,7 @@ func (c *locationsClient) TestLocationConfig(ctx context.Context, in *TestLocati // LocationsServer is the server API for Locations service. // All implementations must embed UnimplementedLocationsServer -// for forward compatibility +// for forward compatibility. // // Locations service provides access to Backup Locations. type LocationsServer interface { @@ -122,7 +122,11 @@ type LocationsServer interface { mustEmbedUnimplementedLocationsServer() } -// UnimplementedLocationsServer must be embedded to have forward compatible implementations. +// UnimplementedLocationsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedLocationsServer struct{} func (UnimplementedLocationsServer) ListLocations(context.Context, *ListLocationsRequest) (*ListLocationsResponse, error) { @@ -145,6 +149,7 @@ func (UnimplementedLocationsServer) TestLocationConfig(context.Context, *TestLoc return nil, status.Errorf(codes.Unimplemented, "method TestLocationConfig not implemented") } func (UnimplementedLocationsServer) mustEmbedUnimplementedLocationsServer() {} +func (UnimplementedLocationsServer) testEmbeddedByValue() {} // UnsafeLocationsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to LocationsServer will @@ -154,6 +159,13 @@ type UnsafeLocationsServer interface { } func RegisterLocationsServer(s grpc.ServiceRegistrar, srv LocationsServer) { + // If the following call pancis, it indicates UnimplementedLocationsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Locations_ServiceDesc, srv) } diff --git a/api/managementpb/backup/restores_grpc.pb.go b/api/managementpb/backup/restores_grpc.pb.go index 7eaa752a44..7fa085165f 100644 --- a/api/managementpb/backup/restores_grpc.pb.go +++ b/api/managementpb/backup/restores_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/backup/restores.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( RestoreHistory_ListRestoreHistory_FullMethodName = "/backup.v1.RestoreHistory/ListRestoreHistory" @@ -53,7 +53,7 @@ func (c *restoreHistoryClient) ListRestoreHistory(ctx context.Context, in *ListR // RestoreHistoryServer is the server API for RestoreHistory service. // All implementations must embed UnimplementedRestoreHistoryServer -// for forward compatibility +// for forward compatibility. // // RestoreHistory service provides public methods for managing backup restore history. type RestoreHistoryServer interface { @@ -62,13 +62,18 @@ type RestoreHistoryServer interface { mustEmbedUnimplementedRestoreHistoryServer() } -// UnimplementedRestoreHistoryServer must be embedded to have forward compatible implementations. +// UnimplementedRestoreHistoryServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedRestoreHistoryServer struct{} func (UnimplementedRestoreHistoryServer) ListRestoreHistory(context.Context, *ListRestoreHistoryRequest) (*ListRestoreHistoryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListRestoreHistory not implemented") } func (UnimplementedRestoreHistoryServer) mustEmbedUnimplementedRestoreHistoryServer() {} +func (UnimplementedRestoreHistoryServer) testEmbeddedByValue() {} // UnsafeRestoreHistoryServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RestoreHistoryServer will @@ -78,6 +83,13 @@ type UnsafeRestoreHistoryServer interface { } func RegisterRestoreHistoryServer(s grpc.ServiceRegistrar, srv RestoreHistoryServer) { + // If the following call pancis, it indicates UnimplementedRestoreHistoryServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&RestoreHistory_ServiceDesc, srv) } diff --git a/api/managementpb/checks_grpc.pb.go b/api/managementpb/checks_grpc.pb.go index 706e457c46..a47d6fc4c3 100644 --- a/api/managementpb/checks_grpc.pb.go +++ b/api/managementpb/checks_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/checks.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( SecurityChecks_ListFailedServices_FullMethodName = "/management.SecurityChecks/ListFailedServices" @@ -148,7 +148,7 @@ func (c *securityChecksClient) ChangeSecurityChecks(ctx context.Context, in *Cha // SecurityChecksServer is the server API for SecurityChecks service. // All implementations must embed UnimplementedSecurityChecksServer -// for forward compatibility +// for forward compatibility. // // SecurityChecks service provides public Management API methods for Security Checks Service. type SecurityChecksServer interface { @@ -173,7 +173,11 @@ type SecurityChecksServer interface { mustEmbedUnimplementedSecurityChecksServer() } -// UnimplementedSecurityChecksServer must be embedded to have forward compatible implementations. +// UnimplementedSecurityChecksServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedSecurityChecksServer struct{} func (UnimplementedSecurityChecksServer) ListFailedServices(context.Context, *ListFailedServicesRequest) (*ListFailedServicesResponse, error) { @@ -208,6 +212,7 @@ func (UnimplementedSecurityChecksServer) ChangeSecurityChecks(context.Context, * return nil, status.Errorf(codes.Unimplemented, "method ChangeSecurityChecks not implemented") } func (UnimplementedSecurityChecksServer) mustEmbedUnimplementedSecurityChecksServer() {} +func (UnimplementedSecurityChecksServer) testEmbeddedByValue() {} // UnsafeSecurityChecksServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to SecurityChecksServer will @@ -217,6 +222,13 @@ type UnsafeSecurityChecksServer interface { } func RegisterSecurityChecksServer(s grpc.ServiceRegistrar, srv SecurityChecksServer) { + // If the following call pancis, it indicates UnimplementedSecurityChecksServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&SecurityChecks_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/components_grpc.pb.go b/api/managementpb/dbaas/components_grpc.pb.go index a14f8dcc90..344c541666 100644 --- a/api/managementpb/dbaas/components_grpc.pb.go +++ b/api/managementpb/dbaas/components_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/components.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Components_GetPSMDBComponents_FullMethodName = "/dbaas.v1beta1.Components/GetPSMDBComponents" @@ -118,7 +118,7 @@ func (c *componentsClient) CheckForOperatorUpdate(ctx context.Context, in *Check // ComponentsServer is the server API for Components service. // All implementations must embed UnimplementedComponentsServer -// for forward compatibility +// for forward compatibility. // // Components service provides public methods for managing components. type ComponentsServer interface { @@ -137,7 +137,11 @@ type ComponentsServer interface { mustEmbedUnimplementedComponentsServer() } -// UnimplementedComponentsServer must be embedded to have forward compatible implementations. +// UnimplementedComponentsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedComponentsServer struct{} func (UnimplementedComponentsServer) GetPSMDBComponents(context.Context, *GetPSMDBComponentsRequest) (*GetPSMDBComponentsResponse, error) { @@ -164,6 +168,7 @@ func (UnimplementedComponentsServer) CheckForOperatorUpdate(context.Context, *Ch return nil, status.Errorf(codes.Unimplemented, "method CheckForOperatorUpdate not implemented") } func (UnimplementedComponentsServer) mustEmbedUnimplementedComponentsServer() {} +func (UnimplementedComponentsServer) testEmbeddedByValue() {} // UnsafeComponentsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ComponentsServer will @@ -173,6 +178,13 @@ type UnsafeComponentsServer interface { } func RegisterComponentsServer(s grpc.ServiceRegistrar, srv ComponentsServer) { + // If the following call pancis, it indicates UnimplementedComponentsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Components_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/db_clusters_grpc.pb.go b/api/managementpb/dbaas/db_clusters_grpc.pb.go index b7eac3f22e..4a8a580e59 100644 --- a/api/managementpb/dbaas/db_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/db_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/db_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( DBClusters_ListDBClusters_FullMethodName = "/dbaas.v1beta1.DBClusters/ListDBClusters" @@ -118,7 +118,7 @@ func (c *dBClustersClient) ListSecrets(ctx context.Context, in *ListSecretsReque // DBClustersServer is the server API for DBClusters service. // All implementations must embed UnimplementedDBClustersServer -// for forward compatibility +// for forward compatibility. // // DBClusters service provides public methods for managing db clusters. type DBClustersServer interface { @@ -137,7 +137,11 @@ type DBClustersServer interface { mustEmbedUnimplementedDBClustersServer() } -// UnimplementedDBClustersServer must be embedded to have forward compatible implementations. +// UnimplementedDBClustersServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedDBClustersServer struct{} func (UnimplementedDBClustersServer) ListDBClusters(context.Context, *ListDBClustersRequest) (*ListDBClustersResponse, error) { @@ -164,6 +168,7 @@ func (UnimplementedDBClustersServer) ListSecrets(context.Context, *ListSecretsRe return nil, status.Errorf(codes.Unimplemented, "method ListSecrets not implemented") } func (UnimplementedDBClustersServer) mustEmbedUnimplementedDBClustersServer() {} +func (UnimplementedDBClustersServer) testEmbeddedByValue() {} // UnsafeDBClustersServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to DBClustersServer will @@ -173,6 +178,13 @@ type UnsafeDBClustersServer interface { } func RegisterDBClustersServer(s grpc.ServiceRegistrar, srv DBClustersServer) { + // If the following call pancis, it indicates UnimplementedDBClustersServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&DBClusters_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/kubernetes_grpc.pb.go b/api/managementpb/dbaas/kubernetes_grpc.pb.go index 7bc8fff6a3..2df4d78d66 100644 --- a/api/managementpb/dbaas/kubernetes_grpc.pb.go +++ b/api/managementpb/dbaas/kubernetes_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/kubernetes.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Kubernetes_ListKubernetesClusters_FullMethodName = "/dbaas.v1beta1.Kubernetes/ListKubernetesClusters" @@ -122,7 +122,7 @@ func (c *kubernetesClient) ListStorageClasses(ctx context.Context, in *ListStora // KubernetesServer is the server API for Kubernetes service. // All implementations must embed UnimplementedKubernetesServer -// for forward compatibility +// for forward compatibility. // // Kubernetes service provides public methods for managing Kubernetes clusters. type KubernetesServer interface { @@ -145,7 +145,11 @@ type KubernetesServer interface { mustEmbedUnimplementedKubernetesServer() } -// UnimplementedKubernetesServer must be embedded to have forward compatible implementations. +// UnimplementedKubernetesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedKubernetesServer struct{} func (UnimplementedKubernetesServer) ListKubernetesClusters(context.Context, *ListKubernetesClustersRequest) (*ListKubernetesClustersResponse, error) { @@ -172,6 +176,7 @@ func (UnimplementedKubernetesServer) ListStorageClasses(context.Context, *ListSt return nil, status.Errorf(codes.Unimplemented, "method ListStorageClasses not implemented") } func (UnimplementedKubernetesServer) mustEmbedUnimplementedKubernetesServer() {} +func (UnimplementedKubernetesServer) testEmbeddedByValue() {} // UnsafeKubernetesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to KubernetesServer will @@ -181,6 +186,13 @@ type UnsafeKubernetesServer interface { } func RegisterKubernetesServer(s grpc.ServiceRegistrar, srv KubernetesServer) { + // If the following call pancis, it indicates UnimplementedKubernetesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Kubernetes_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/logs_grpc.pb.go b/api/managementpb/dbaas/logs_grpc.pb.go index e29bf50cc5..5009342889 100644 --- a/api/managementpb/dbaas/logs_grpc.pb.go +++ b/api/managementpb/dbaas/logs_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/logs.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( LogsAPI_GetLogs_FullMethodName = "/dbaas.v1beta1.LogsAPI/GetLogs" @@ -53,7 +53,7 @@ func (c *logsAPIClient) GetLogs(ctx context.Context, in *GetLogsRequest, opts .. // LogsAPIServer is the server API for LogsAPI service. // All implementations must embed UnimplementedLogsAPIServer -// for forward compatibility +// for forward compatibility. // // LogsAPI provides APIs for reading logs. type LogsAPIServer interface { @@ -62,13 +62,18 @@ type LogsAPIServer interface { mustEmbedUnimplementedLogsAPIServer() } -// UnimplementedLogsAPIServer must be embedded to have forward compatible implementations. +// UnimplementedLogsAPIServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedLogsAPIServer struct{} func (UnimplementedLogsAPIServer) GetLogs(context.Context, *GetLogsRequest) (*GetLogsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLogs not implemented") } func (UnimplementedLogsAPIServer) mustEmbedUnimplementedLogsAPIServer() {} +func (UnimplementedLogsAPIServer) testEmbeddedByValue() {} // UnsafeLogsAPIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to LogsAPIServer will @@ -78,6 +83,13 @@ type UnsafeLogsAPIServer interface { } func RegisterLogsAPIServer(s grpc.ServiceRegistrar, srv LogsAPIServer) { + // If the following call pancis, it indicates UnimplementedLogsAPIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&LogsAPI_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go b/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go index a32022dd34..c60ef47498 100644 --- a/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/psmdb_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/psmdb_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( PSMDBClusters_GetPSMDBClusterCredentials_FullMethodName = "/dbaas.v1beta1.PSMDBClusters/GetPSMDBClusterCredentials" @@ -92,7 +92,7 @@ func (c *pSMDBClustersClient) GetPSMDBClusterResources(ctx context.Context, in * // PSMDBClustersServer is the server API for PSMDBClusters service. // All implementations must embed UnimplementedPSMDBClustersServer -// for forward compatibility +// for forward compatibility. // // PSMDBClusters service provides public methods for managing PSMDB clusters. type PSMDBClustersServer interface { @@ -107,7 +107,11 @@ type PSMDBClustersServer interface { mustEmbedUnimplementedPSMDBClustersServer() } -// UnimplementedPSMDBClustersServer must be embedded to have forward compatible implementations. +// UnimplementedPSMDBClustersServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedPSMDBClustersServer struct{} func (UnimplementedPSMDBClustersServer) GetPSMDBClusterCredentials(context.Context, *GetPSMDBClusterCredentialsRequest) (*GetPSMDBClusterCredentialsResponse, error) { @@ -126,6 +130,7 @@ func (UnimplementedPSMDBClustersServer) GetPSMDBClusterResources(context.Context return nil, status.Errorf(codes.Unimplemented, "method GetPSMDBClusterResources not implemented") } func (UnimplementedPSMDBClustersServer) mustEmbedUnimplementedPSMDBClustersServer() {} +func (UnimplementedPSMDBClustersServer) testEmbeddedByValue() {} // UnsafePSMDBClustersServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to PSMDBClustersServer will @@ -135,6 +140,13 @@ type UnsafePSMDBClustersServer interface { } func RegisterPSMDBClustersServer(s grpc.ServiceRegistrar, srv PSMDBClustersServer) { + // If the following call pancis, it indicates UnimplementedPSMDBClustersServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&PSMDBClusters_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/pxc_clusters_grpc.pb.go b/api/managementpb/dbaas/pxc_clusters_grpc.pb.go index 46f599daf4..4dd4fc50ee 100644 --- a/api/managementpb/dbaas/pxc_clusters_grpc.pb.go +++ b/api/managementpb/dbaas/pxc_clusters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/pxc_clusters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( PXCClusters_GetPXCClusterCredentials_FullMethodName = "/dbaas.v1beta1.PXCClusters/GetPXCClusterCredentials" @@ -92,7 +92,7 @@ func (c *pXCClustersClient) GetPXCClusterResources(ctx context.Context, in *GetP // PXCClustersServer is the server API for PXCClusters service. // All implementations must embed UnimplementedPXCClustersServer -// for forward compatibility +// for forward compatibility. // // PXCClusters service provides public methods for managing PXC clusters. type PXCClustersServer interface { @@ -107,7 +107,11 @@ type PXCClustersServer interface { mustEmbedUnimplementedPXCClustersServer() } -// UnimplementedPXCClustersServer must be embedded to have forward compatible implementations. +// UnimplementedPXCClustersServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedPXCClustersServer struct{} func (UnimplementedPXCClustersServer) GetPXCClusterCredentials(context.Context, *GetPXCClusterCredentialsRequest) (*GetPXCClusterCredentialsResponse, error) { @@ -126,6 +130,7 @@ func (UnimplementedPXCClustersServer) GetPXCClusterResources(context.Context, *G return nil, status.Errorf(codes.Unimplemented, "method GetPXCClusterResources not implemented") } func (UnimplementedPXCClustersServer) mustEmbedUnimplementedPXCClustersServer() {} +func (UnimplementedPXCClustersServer) testEmbeddedByValue() {} // UnsafePXCClustersServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to PXCClustersServer will @@ -135,6 +140,13 @@ type UnsafePXCClustersServer interface { } func RegisterPXCClustersServer(s grpc.ServiceRegistrar, srv PXCClustersServer) { + // If the following call pancis, it indicates UnimplementedPXCClustersServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&PXCClusters_ServiceDesc, srv) } diff --git a/api/managementpb/dbaas/templates_grpc.pb.go b/api/managementpb/dbaas/templates_grpc.pb.go index d4c68fb203..cf0da93e4f 100644 --- a/api/managementpb/dbaas/templates_grpc.pb.go +++ b/api/managementpb/dbaas/templates_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dbaas/templates.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Templates_ListTemplates_FullMethodName = "/dbaas.v1beta1.Templates/ListTemplates" @@ -53,7 +53,7 @@ func (c *templatesClient) ListTemplates(ctx context.Context, in *ListTemplatesRe // TemplatesServer is the server API for Templates service. // All implementations must embed UnimplementedTemplatesServer -// for forward compatibility +// for forward compatibility. // // Templates service provides public methods for managing templates. type TemplatesServer interface { @@ -62,13 +62,18 @@ type TemplatesServer interface { mustEmbedUnimplementedTemplatesServer() } -// UnimplementedTemplatesServer must be embedded to have forward compatible implementations. +// UnimplementedTemplatesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedTemplatesServer struct{} func (UnimplementedTemplatesServer) ListTemplates(context.Context, *ListTemplatesRequest) (*ListTemplatesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTemplates not implemented") } func (UnimplementedTemplatesServer) mustEmbedUnimplementedTemplatesServer() {} +func (UnimplementedTemplatesServer) testEmbeddedByValue() {} // UnsafeTemplatesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to TemplatesServer will @@ -78,6 +83,13 @@ type UnsafeTemplatesServer interface { } func RegisterTemplatesServer(s grpc.ServiceRegistrar, srv TemplatesServer) { + // If the following call pancis, it indicates UnimplementedTemplatesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Templates_ServiceDesc, srv) } diff --git a/api/managementpb/dump/dump_grpc.pb.go b/api/managementpb/dump/dump_grpc.pb.go index 90d808c78b..1062595f85 100644 --- a/api/managementpb/dump/dump_grpc.pb.go +++ b/api/managementpb/dump/dump_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/dump/dump.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Dumps_StartDump_FullMethodName = "/dump.v1beta1.Dumps/StartDump" @@ -103,7 +103,7 @@ func (c *dumpsClient) UploadDump(ctx context.Context, in *UploadDumpRequest, opt // DumpsServer is the server API for Dumps service. // All implementations must embed UnimplementedDumpsServer -// for forward compatibility +// for forward compatibility. type DumpsServer interface { // StartDump request creates pmm dump. StartDump(context.Context, *StartDumpRequest) (*StartDumpResponse, error) @@ -118,7 +118,11 @@ type DumpsServer interface { mustEmbedUnimplementedDumpsServer() } -// UnimplementedDumpsServer must be embedded to have forward compatible implementations. +// UnimplementedDumpsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedDumpsServer struct{} func (UnimplementedDumpsServer) StartDump(context.Context, *StartDumpRequest) (*StartDumpResponse, error) { @@ -141,6 +145,7 @@ func (UnimplementedDumpsServer) UploadDump(context.Context, *UploadDumpRequest) return nil, status.Errorf(codes.Unimplemented, "method UploadDump not implemented") } func (UnimplementedDumpsServer) mustEmbedUnimplementedDumpsServer() {} +func (UnimplementedDumpsServer) testEmbeddedByValue() {} // UnsafeDumpsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to DumpsServer will @@ -150,6 +155,13 @@ type UnsafeDumpsServer interface { } func RegisterDumpsServer(s grpc.ServiceRegistrar, srv DumpsServer) { + // If the following call pancis, it indicates UnimplementedDumpsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Dumps_ServiceDesc, srv) } diff --git a/api/managementpb/external_grpc.pb.go b/api/managementpb/external_grpc.pb.go index f34f26d1a4..2671b449f2 100644 --- a/api/managementpb/external_grpc.pb.go +++ b/api/managementpb/external_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/external.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( External_AddExternal_FullMethodName = "/management.External/AddExternal" @@ -55,7 +55,7 @@ func (c *externalClient) AddExternal(ctx context.Context, in *AddExternalRequest // ExternalServer is the server API for External service. // All implementations must embed UnimplementedExternalServer -// for forward compatibility +// for forward compatibility. // // External service provides public Management API methods for External Service. type ExternalServer interface { @@ -66,13 +66,18 @@ type ExternalServer interface { mustEmbedUnimplementedExternalServer() } -// UnimplementedExternalServer must be embedded to have forward compatible implementations. +// UnimplementedExternalServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedExternalServer struct{} func (UnimplementedExternalServer) AddExternal(context.Context, *AddExternalRequest) (*AddExternalResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddExternal not implemented") } func (UnimplementedExternalServer) mustEmbedUnimplementedExternalServer() {} +func (UnimplementedExternalServer) testEmbeddedByValue() {} // UnsafeExternalServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ExternalServer will @@ -82,6 +87,13 @@ type UnsafeExternalServer interface { } func RegisterExternalServer(s grpc.ServiceRegistrar, srv ExternalServer) { + // If the following call pancis, it indicates UnimplementedExternalServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&External_ServiceDesc, srv) } diff --git a/api/managementpb/haproxy_grpc.pb.go b/api/managementpb/haproxy_grpc.pb.go index 8523d74b26..6f1f90a472 100644 --- a/api/managementpb/haproxy_grpc.pb.go +++ b/api/managementpb/haproxy_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/haproxy.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( HAProxy_AddHAProxy_FullMethodName = "/management.HAProxy/AddHAProxy" @@ -55,7 +55,7 @@ func (c *hAProxyClient) AddHAProxy(ctx context.Context, in *AddHAProxyRequest, o // HAProxyServer is the server API for HAProxy service. // All implementations must embed UnimplementedHAProxyServer -// for forward compatibility +// for forward compatibility. // // HAProxy service provides public Management API methods for HAProxy Service. type HAProxyServer interface { @@ -66,13 +66,18 @@ type HAProxyServer interface { mustEmbedUnimplementedHAProxyServer() } -// UnimplementedHAProxyServer must be embedded to have forward compatible implementations. +// UnimplementedHAProxyServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedHAProxyServer struct{} func (UnimplementedHAProxyServer) AddHAProxy(context.Context, *AddHAProxyRequest) (*AddHAProxyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddHAProxy not implemented") } func (UnimplementedHAProxyServer) mustEmbedUnimplementedHAProxyServer() {} +func (UnimplementedHAProxyServer) testEmbeddedByValue() {} // UnsafeHAProxyServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to HAProxyServer will @@ -82,6 +87,13 @@ type UnsafeHAProxyServer interface { } func RegisterHAProxyServer(s grpc.ServiceRegistrar, srv HAProxyServer) { + // If the following call pancis, it indicates UnimplementedHAProxyServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&HAProxy_ServiceDesc, srv) } diff --git a/api/managementpb/ia/alerts_grpc.pb.go b/api/managementpb/ia/alerts_grpc.pb.go index 0c4b7eb8f2..bb462d3820 100644 --- a/api/managementpb/ia/alerts_grpc.pb.go +++ b/api/managementpb/ia/alerts_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/ia/alerts.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Alerts_ListAlerts_FullMethodName = "/ia.v1beta1.Alerts/ListAlerts" @@ -70,7 +70,7 @@ func (c *alertsClient) ToggleAlerts(ctx context.Context, in *ToggleAlertsRequest // AlertsServer is the server API for Alerts service. // All implementations must embed UnimplementedAlertsServer -// for forward compatibility +// for forward compatibility. // // Alerts service provides public methods for managing Alerting Alerts. type AlertsServer interface { @@ -83,7 +83,11 @@ type AlertsServer interface { mustEmbedUnimplementedAlertsServer() } -// UnimplementedAlertsServer must be embedded to have forward compatible implementations. +// UnimplementedAlertsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAlertsServer struct{} func (UnimplementedAlertsServer) ListAlerts(context.Context, *ListAlertsRequest) (*ListAlertsResponse, error) { @@ -94,6 +98,7 @@ func (UnimplementedAlertsServer) ToggleAlerts(context.Context, *ToggleAlertsRequ return nil, status.Errorf(codes.Unimplemented, "method ToggleAlerts not implemented") } func (UnimplementedAlertsServer) mustEmbedUnimplementedAlertsServer() {} +func (UnimplementedAlertsServer) testEmbeddedByValue() {} // UnsafeAlertsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AlertsServer will @@ -103,6 +108,13 @@ type UnsafeAlertsServer interface { } func RegisterAlertsServer(s grpc.ServiceRegistrar, srv AlertsServer) { + // If the following call pancis, it indicates UnimplementedAlertsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Alerts_ServiceDesc, srv) } diff --git a/api/managementpb/ia/channels_grpc.pb.go b/api/managementpb/ia/channels_grpc.pb.go index 3e27e95717..5012ec4da3 100644 --- a/api/managementpb/ia/channels_grpc.pb.go +++ b/api/managementpb/ia/channels_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/ia/channels.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Channels_ListChannels_FullMethodName = "/ia.v1beta1.Channels/ListChannels" @@ -100,7 +100,7 @@ func (c *channelsClient) RemoveChannel(ctx context.Context, in *RemoveChannelReq // ChannelsServer is the server API for Channels service. // All implementations must embed UnimplementedChannelsServer -// for forward compatibility +// for forward compatibility. // // Channels service provides access to Notification Channels. type ChannelsServer interface { @@ -119,7 +119,11 @@ type ChannelsServer interface { mustEmbedUnimplementedChannelsServer() } -// UnimplementedChannelsServer must be embedded to have forward compatible implementations. +// UnimplementedChannelsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedChannelsServer struct{} func (UnimplementedChannelsServer) ListChannels(context.Context, *ListChannelsRequest) (*ListChannelsResponse, error) { @@ -138,6 +142,7 @@ func (UnimplementedChannelsServer) RemoveChannel(context.Context, *RemoveChannel return nil, status.Errorf(codes.Unimplemented, "method RemoveChannel not implemented") } func (UnimplementedChannelsServer) mustEmbedUnimplementedChannelsServer() {} +func (UnimplementedChannelsServer) testEmbeddedByValue() {} // UnsafeChannelsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ChannelsServer will @@ -147,6 +152,13 @@ type UnsafeChannelsServer interface { } func RegisterChannelsServer(s grpc.ServiceRegistrar, srv ChannelsServer) { + // If the following call pancis, it indicates UnimplementedChannelsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Channels_ServiceDesc, srv) } diff --git a/api/managementpb/ia/rules_grpc.pb.go b/api/managementpb/ia/rules_grpc.pb.go index f1f49ad97d..e13e7c546e 100644 --- a/api/managementpb/ia/rules_grpc.pb.go +++ b/api/managementpb/ia/rules_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/ia/rules.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Rules_ListAlertRules_FullMethodName = "/ia.v1beta1.Rules/ListAlertRules" @@ -115,7 +115,7 @@ func (c *rulesClient) DeleteAlertRule(ctx context.Context, in *DeleteAlertRuleRe // RulesServer is the server API for Rules service. // All implementations must embed UnimplementedRulesServer -// for forward compatibility +// for forward compatibility. // // Rules service provides public methods for managing Alerting rules. type RulesServer interface { @@ -137,7 +137,11 @@ type RulesServer interface { mustEmbedUnimplementedRulesServer() } -// UnimplementedRulesServer must be embedded to have forward compatible implementations. +// UnimplementedRulesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedRulesServer struct{} func (UnimplementedRulesServer) ListAlertRules(context.Context, *ListAlertRulesRequest) (*ListAlertRulesResponse, error) { @@ -160,6 +164,7 @@ func (UnimplementedRulesServer) DeleteAlertRule(context.Context, *DeleteAlertRul return nil, status.Errorf(codes.Unimplemented, "method DeleteAlertRule not implemented") } func (UnimplementedRulesServer) mustEmbedUnimplementedRulesServer() {} +func (UnimplementedRulesServer) testEmbeddedByValue() {} // UnsafeRulesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RulesServer will @@ -169,6 +174,13 @@ type UnsafeRulesServer interface { } func RegisterRulesServer(s grpc.ServiceRegistrar, srv RulesServer) { + // If the following call pancis, it indicates UnimplementedRulesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Rules_ServiceDesc, srv) } diff --git a/api/managementpb/mongodb_grpc.pb.go b/api/managementpb/mongodb_grpc.pb.go index e8b0a1d623..13c58dc87f 100644 --- a/api/managementpb/mongodb_grpc.pb.go +++ b/api/managementpb/mongodb_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/mongodb.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( MongoDB_AddMongoDB_FullMethodName = "/management.MongoDB/AddMongoDB" @@ -56,7 +56,7 @@ func (c *mongoDBClient) AddMongoDB(ctx context.Context, in *AddMongoDBRequest, o // MongoDBServer is the server API for MongoDB service. // All implementations must embed UnimplementedMongoDBServer -// for forward compatibility +// for forward compatibility. // // MongoDB service provides public Management API methods for MongoDB Service. type MongoDBServer interface { @@ -68,13 +68,18 @@ type MongoDBServer interface { mustEmbedUnimplementedMongoDBServer() } -// UnimplementedMongoDBServer must be embedded to have forward compatible implementations. +// UnimplementedMongoDBServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedMongoDBServer struct{} func (UnimplementedMongoDBServer) AddMongoDB(context.Context, *AddMongoDBRequest) (*AddMongoDBResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddMongoDB not implemented") } func (UnimplementedMongoDBServer) mustEmbedUnimplementedMongoDBServer() {} +func (UnimplementedMongoDBServer) testEmbeddedByValue() {} // UnsafeMongoDBServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MongoDBServer will @@ -84,6 +89,13 @@ type UnsafeMongoDBServer interface { } func RegisterMongoDBServer(s grpc.ServiceRegistrar, srv MongoDBServer) { + // If the following call pancis, it indicates UnimplementedMongoDBServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&MongoDB_ServiceDesc, srv) } diff --git a/api/managementpb/mysql_grpc.pb.go b/api/managementpb/mysql_grpc.pb.go index e3b3e6e32a..8708811d19 100644 --- a/api/managementpb/mysql_grpc.pb.go +++ b/api/managementpb/mysql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/mysql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( MySQL_AddMySQL_FullMethodName = "/management.MySQL/AddMySQL" @@ -56,7 +56,7 @@ func (c *mySQLClient) AddMySQL(ctx context.Context, in *AddMySQLRequest, opts .. // MySQLServer is the server API for MySQL service. // All implementations must embed UnimplementedMySQLServer -// for forward compatibility +// for forward compatibility. // // MySQL service provides public Management API methods for MySQL Service. type MySQLServer interface { @@ -68,13 +68,18 @@ type MySQLServer interface { mustEmbedUnimplementedMySQLServer() } -// UnimplementedMySQLServer must be embedded to have forward compatible implementations. +// UnimplementedMySQLServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedMySQLServer struct{} func (UnimplementedMySQLServer) AddMySQL(context.Context, *AddMySQLRequest) (*AddMySQLResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddMySQL not implemented") } func (UnimplementedMySQLServer) mustEmbedUnimplementedMySQLServer() {} +func (UnimplementedMySQLServer) testEmbeddedByValue() {} // UnsafeMySQLServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MySQLServer will @@ -84,6 +89,13 @@ type UnsafeMySQLServer interface { } func RegisterMySQLServer(s grpc.ServiceRegistrar, srv MySQLServer) { + // If the following call pancis, it indicates UnimplementedMySQLServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&MySQL_ServiceDesc, srv) } diff --git a/api/managementpb/node/node_grpc.pb.go b/api/managementpb/node/node_grpc.pb.go index bdc454c595..1ce0ae8025 100644 --- a/api/managementpb/node/node_grpc.pb.go +++ b/api/managementpb/node/node_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/node/node.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( MgmtNode_ListNodes_FullMethodName = "/node.v1beta1.MgmtNode/ListNodes" @@ -66,7 +66,7 @@ func (c *mgmtNodeClient) GetNode(ctx context.Context, in *GetNodeRequest, opts . // MgmtNodeServer is the server API for MgmtNode service. // All implementations must embed UnimplementedMgmtNodeServer -// for forward compatibility +// for forward compatibility. // // MgmtNode service provides public Management API methods for Nodes. type MgmtNodeServer interface { @@ -77,7 +77,11 @@ type MgmtNodeServer interface { mustEmbedUnimplementedMgmtNodeServer() } -// UnimplementedMgmtNodeServer must be embedded to have forward compatible implementations. +// UnimplementedMgmtNodeServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedMgmtNodeServer struct{} func (UnimplementedMgmtNodeServer) ListNodes(context.Context, *ListNodeRequest) (*ListNodeResponse, error) { @@ -88,6 +92,7 @@ func (UnimplementedMgmtNodeServer) GetNode(context.Context, *GetNodeRequest) (*G return nil, status.Errorf(codes.Unimplemented, "method GetNode not implemented") } func (UnimplementedMgmtNodeServer) mustEmbedUnimplementedMgmtNodeServer() {} +func (UnimplementedMgmtNodeServer) testEmbeddedByValue() {} // UnsafeMgmtNodeServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MgmtNodeServer will @@ -97,6 +102,13 @@ type UnsafeMgmtNodeServer interface { } func RegisterMgmtNodeServer(s grpc.ServiceRegistrar, srv MgmtNodeServer) { + // If the following call pancis, it indicates UnimplementedMgmtNodeServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&MgmtNode_ServiceDesc, srv) } diff --git a/api/managementpb/node_grpc.pb.go b/api/managementpb/node_grpc.pb.go index 9d4db4e3c6..bedbed3d1a 100644 --- a/api/managementpb/node_grpc.pb.go +++ b/api/managementpb/node_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/node.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Node_RegisterNode_FullMethodName = "/management.Node/RegisterNode" @@ -53,7 +53,7 @@ func (c *nodeClient) RegisterNode(ctx context.Context, in *RegisterNodeRequest, // NodeServer is the server API for Node service. // All implementations must embed UnimplementedNodeServer -// for forward compatibility +// for forward compatibility. // // Node service provides public Management API methods for Nodes. type NodeServer interface { @@ -62,13 +62,18 @@ type NodeServer interface { mustEmbedUnimplementedNodeServer() } -// UnimplementedNodeServer must be embedded to have forward compatible implementations. +// UnimplementedNodeServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedNodeServer struct{} func (UnimplementedNodeServer) RegisterNode(context.Context, *RegisterNodeRequest) (*RegisterNodeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterNode not implemented") } func (UnimplementedNodeServer) mustEmbedUnimplementedNodeServer() {} +func (UnimplementedNodeServer) testEmbeddedByValue() {} // UnsafeNodeServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to NodeServer will @@ -78,6 +83,13 @@ type UnsafeNodeServer interface { } func RegisterNodeServer(s grpc.ServiceRegistrar, srv NodeServer) { + // If the following call pancis, it indicates UnimplementedNodeServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Node_ServiceDesc, srv) } diff --git a/api/managementpb/postgresql_grpc.pb.go b/api/managementpb/postgresql_grpc.pb.go index e360dace7f..ca436e0cd7 100644 --- a/api/managementpb/postgresql_grpc.pb.go +++ b/api/managementpb/postgresql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/postgresql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( PostgreSQL_AddPostgreSQL_FullMethodName = "/management.PostgreSQL/AddPostgreSQL" @@ -55,7 +55,7 @@ func (c *postgreSQLClient) AddPostgreSQL(ctx context.Context, in *AddPostgreSQLR // PostgreSQLServer is the server API for PostgreSQL service. // All implementations must embed UnimplementedPostgreSQLServer -// for forward compatibility +// for forward compatibility. // // PostgreSQL service provides public Management API methods for PostgreSQL Service. type PostgreSQLServer interface { @@ -66,13 +66,18 @@ type PostgreSQLServer interface { mustEmbedUnimplementedPostgreSQLServer() } -// UnimplementedPostgreSQLServer must be embedded to have forward compatible implementations. +// UnimplementedPostgreSQLServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedPostgreSQLServer struct{} func (UnimplementedPostgreSQLServer) AddPostgreSQL(context.Context, *AddPostgreSQLRequest) (*AddPostgreSQLResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddPostgreSQL not implemented") } func (UnimplementedPostgreSQLServer) mustEmbedUnimplementedPostgreSQLServer() {} +func (UnimplementedPostgreSQLServer) testEmbeddedByValue() {} // UnsafePostgreSQLServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to PostgreSQLServer will @@ -82,6 +87,13 @@ type UnsafePostgreSQLServer interface { } func RegisterPostgreSQLServer(s grpc.ServiceRegistrar, srv PostgreSQLServer) { + // If the following call pancis, it indicates UnimplementedPostgreSQLServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&PostgreSQL_ServiceDesc, srv) } diff --git a/api/managementpb/proxysql_grpc.pb.go b/api/managementpb/proxysql_grpc.pb.go index df19da1083..774a227714 100644 --- a/api/managementpb/proxysql_grpc.pb.go +++ b/api/managementpb/proxysql_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/proxysql.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ProxySQL_AddProxySQL_FullMethodName = "/management.ProxySQL/AddProxySQL" @@ -55,7 +55,7 @@ func (c *proxySQLClient) AddProxySQL(ctx context.Context, in *AddProxySQLRequest // ProxySQLServer is the server API for ProxySQL service. // All implementations must embed UnimplementedProxySQLServer -// for forward compatibility +// for forward compatibility. // // ProxySQL service provides public Management API methods for ProxySQL Service. type ProxySQLServer interface { @@ -66,13 +66,18 @@ type ProxySQLServer interface { mustEmbedUnimplementedProxySQLServer() } -// UnimplementedProxySQLServer must be embedded to have forward compatible implementations. +// UnimplementedProxySQLServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedProxySQLServer struct{} func (UnimplementedProxySQLServer) AddProxySQL(context.Context, *AddProxySQLRequest) (*AddProxySQLResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddProxySQL not implemented") } func (UnimplementedProxySQLServer) mustEmbedUnimplementedProxySQLServer() {} +func (UnimplementedProxySQLServer) testEmbeddedByValue() {} // UnsafeProxySQLServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ProxySQLServer will @@ -82,6 +87,13 @@ type UnsafeProxySQLServer interface { } func RegisterProxySQLServer(s grpc.ServiceRegistrar, srv ProxySQLServer) { + // If the following call pancis, it indicates UnimplementedProxySQLServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ProxySQL_ServiceDesc, srv) } diff --git a/api/managementpb/rds_grpc.pb.go b/api/managementpb/rds_grpc.pb.go index 3b9b1d041b..18af78c982 100644 --- a/api/managementpb/rds_grpc.pb.go +++ b/api/managementpb/rds_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/rds.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( RDS_DiscoverRDS_FullMethodName = "/management.RDS/DiscoverRDS" @@ -66,7 +66,7 @@ func (c *rDSClient) AddRDS(ctx context.Context, in *AddRDSRequest, opts ...grpc. // RDSServer is the server API for RDS service. // All implementations must embed UnimplementedRDSServer -// for forward compatibility +// for forward compatibility. // // RDS service provides Node and Service Discovery APIs. type RDSServer interface { @@ -77,7 +77,11 @@ type RDSServer interface { mustEmbedUnimplementedRDSServer() } -// UnimplementedRDSServer must be embedded to have forward compatible implementations. +// UnimplementedRDSServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedRDSServer struct{} func (UnimplementedRDSServer) DiscoverRDS(context.Context, *DiscoverRDSRequest) (*DiscoverRDSResponse, error) { @@ -88,6 +92,7 @@ func (UnimplementedRDSServer) AddRDS(context.Context, *AddRDSRequest) (*AddRDSRe return nil, status.Errorf(codes.Unimplemented, "method AddRDS not implemented") } func (UnimplementedRDSServer) mustEmbedUnimplementedRDSServer() {} +func (UnimplementedRDSServer) testEmbeddedByValue() {} // UnsafeRDSServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RDSServer will @@ -97,6 +102,13 @@ type UnsafeRDSServer interface { } func RegisterRDSServer(s grpc.ServiceRegistrar, srv RDSServer) { + // If the following call pancis, it indicates UnimplementedRDSServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&RDS_ServiceDesc, srv) } diff --git a/api/managementpb/role/role_grpc.pb.go b/api/managementpb/role/role_grpc.pb.go index 546964a840..ee27dad394 100644 --- a/api/managementpb/role/role_grpc.pb.go +++ b/api/managementpb/role/role_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/role/role.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Role_CreateRole_FullMethodName = "/role.v1beta1.Role/CreateRole" @@ -131,7 +131,7 @@ func (c *roleClient) SetDefaultRole(ctx context.Context, in *SetDefaultRoleReque // RoleServer is the server API for Role service. // All implementations must embed UnimplementedRoleServer -// for forward compatibility +// for forward compatibility. // // Service Role provides public methods for managing Roles. type RoleServer interface { @@ -152,7 +152,11 @@ type RoleServer interface { mustEmbedUnimplementedRoleServer() } -// UnimplementedRoleServer must be embedded to have forward compatible implementations. +// UnimplementedRoleServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedRoleServer struct{} func (UnimplementedRoleServer) CreateRole(context.Context, *CreateRoleRequest) (*CreateRoleResponse, error) { @@ -183,6 +187,7 @@ func (UnimplementedRoleServer) SetDefaultRole(context.Context, *SetDefaultRoleRe return nil, status.Errorf(codes.Unimplemented, "method SetDefaultRole not implemented") } func (UnimplementedRoleServer) mustEmbedUnimplementedRoleServer() {} +func (UnimplementedRoleServer) testEmbeddedByValue() {} // UnsafeRoleServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RoleServer will @@ -192,6 +197,13 @@ type UnsafeRoleServer interface { } func RegisterRoleServer(s grpc.ServiceRegistrar, srv RoleServer) { + // If the following call pancis, it indicates UnimplementedRoleServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Role_ServiceDesc, srv) } diff --git a/api/managementpb/service/service_grpc.pb.go b/api/managementpb/service/service_grpc.pb.go index 02e2d181c5..99b2b1daca 100644 --- a/api/managementpb/service/service_grpc.pb.go +++ b/api/managementpb/service/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/service/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( MgmtService_ListServices_FullMethodName = "/service.v1beta1.MgmtService/ListServices" @@ -53,7 +53,7 @@ func (c *mgmtServiceClient) ListServices(ctx context.Context, in *ListServiceReq // MgmtServiceServer is the server API for MgmtService service. // All implementations must embed UnimplementedMgmtServiceServer -// for forward compatibility +// for forward compatibility. // // MgmtService service provides public methods for managing and querying Services. type MgmtServiceServer interface { @@ -62,13 +62,18 @@ type MgmtServiceServer interface { mustEmbedUnimplementedMgmtServiceServer() } -// UnimplementedMgmtServiceServer must be embedded to have forward compatible implementations. +// UnimplementedMgmtServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedMgmtServiceServer struct{} func (UnimplementedMgmtServiceServer) ListServices(context.Context, *ListServiceRequest) (*ListServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListServices not implemented") } func (UnimplementedMgmtServiceServer) mustEmbedUnimplementedMgmtServiceServer() {} +func (UnimplementedMgmtServiceServer) testEmbeddedByValue() {} // UnsafeMgmtServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MgmtServiceServer will @@ -78,6 +83,13 @@ type UnsafeMgmtServiceServer interface { } func RegisterMgmtServiceServer(s grpc.ServiceRegistrar, srv MgmtServiceServer) { + // If the following call pancis, it indicates UnimplementedMgmtServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&MgmtService_ServiceDesc, srv) } diff --git a/api/managementpb/service_grpc.pb.go b/api/managementpb/service_grpc.pb.go index 3228b70d46..ee06ec0132 100644 --- a/api/managementpb/service_grpc.pb.go +++ b/api/managementpb/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: managementpb/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Service_RemoveService_FullMethodName = "/management.Service/RemoveService" @@ -53,7 +53,7 @@ func (c *serviceClient) RemoveService(ctx context.Context, in *RemoveServiceRequ // ServiceServer is the server API for Service service. // All implementations must embed UnimplementedServiceServer -// for forward compatibility +// for forward compatibility. // // Service service provides public methods for managing and querying Services. type ServiceServer interface { @@ -62,13 +62,18 @@ type ServiceServer interface { mustEmbedUnimplementedServiceServer() } -// UnimplementedServiceServer must be embedded to have forward compatible implementations. +// UnimplementedServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedServiceServer struct{} func (UnimplementedServiceServer) RemoveService(context.Context, *RemoveServiceRequest) (*RemoveServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveService not implemented") } func (UnimplementedServiceServer) mustEmbedUnimplementedServiceServer() {} +func (UnimplementedServiceServer) testEmbeddedByValue() {} // UnsafeServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServiceServer will @@ -78,6 +83,13 @@ type UnsafeServiceServer interface { } func RegisterServiceServer(s grpc.ServiceRegistrar, srv ServiceServer) { + // If the following call pancis, it indicates UnimplementedServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Service_ServiceDesc, srv) } diff --git a/api/platformpb/platform_grpc.pb.go b/api/platformpb/platform_grpc.pb.go index 589a3b2c70..74fdaf4140 100644 --- a/api/platformpb/platform_grpc.pb.go +++ b/api/platformpb/platform_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: platformpb/platform.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Platform_Connect_FullMethodName = "/platform.Platform/Connect" @@ -131,7 +131,7 @@ func (c *platformClient) UserStatus(ctx context.Context, in *UserStatusRequest, // PlatformServer is the server API for Platform service. // All implementations must embed UnimplementedPlatformServer -// for forward compatibility +// for forward compatibility. // // Platform contains rpcs related to Percona Platform. type PlatformServer interface { @@ -152,7 +152,11 @@ type PlatformServer interface { mustEmbedUnimplementedPlatformServer() } -// UnimplementedPlatformServer must be embedded to have forward compatible implementations. +// UnimplementedPlatformServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedPlatformServer struct{} func (UnimplementedPlatformServer) Connect(context.Context, *ConnectRequest) (*ConnectResponse, error) { @@ -183,6 +187,7 @@ func (UnimplementedPlatformServer) UserStatus(context.Context, *UserStatusReques return nil, status.Errorf(codes.Unimplemented, "method UserStatus not implemented") } func (UnimplementedPlatformServer) mustEmbedUnimplementedPlatformServer() {} +func (UnimplementedPlatformServer) testEmbeddedByValue() {} // UnsafePlatformServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to PlatformServer will @@ -192,6 +197,13 @@ type UnsafePlatformServer interface { } func RegisterPlatformServer(s grpc.ServiceRegistrar, srv PlatformServer) { + // If the following call pancis, it indicates UnimplementedPlatformServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Platform_ServiceDesc, srv) } diff --git a/api/qanpb/collector_grpc.pb.go b/api/qanpb/collector_grpc.pb.go index 1aa53524f3..95831af8ad 100644 --- a/api/qanpb/collector_grpc.pb.go +++ b/api/qanpb/collector_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qanpb/collector.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Collector_Collect_FullMethodName = "/qan.v1beta1.Collector/Collect" @@ -53,7 +53,7 @@ func (c *collectorClient) Collect(ctx context.Context, in *CollectRequest, opts // CollectorServer is the server API for Collector service. // All implementations must embed UnimplementedCollectorServer -// for forward compatibility +// for forward compatibility. // // Collector service accepts data from pmm-agent (via pmm-managed). type CollectorServer interface { @@ -62,13 +62,18 @@ type CollectorServer interface { mustEmbedUnimplementedCollectorServer() } -// UnimplementedCollectorServer must be embedded to have forward compatible implementations. +// UnimplementedCollectorServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedCollectorServer struct{} func (UnimplementedCollectorServer) Collect(context.Context, *CollectRequest) (*CollectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Collect not implemented") } func (UnimplementedCollectorServer) mustEmbedUnimplementedCollectorServer() {} +func (UnimplementedCollectorServer) testEmbeddedByValue() {} // UnsafeCollectorServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to CollectorServer will @@ -78,6 +83,13 @@ type UnsafeCollectorServer interface { } func RegisterCollectorServer(s grpc.ServiceRegistrar, srv CollectorServer) { + // If the following call pancis, it indicates UnimplementedCollectorServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Collector_ServiceDesc, srv) } diff --git a/api/qanpb/filters_grpc.pb.go b/api/qanpb/filters_grpc.pb.go index 543055fa96..dcff3c212e 100644 --- a/api/qanpb/filters_grpc.pb.go +++ b/api/qanpb/filters_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qanpb/filters.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Filters_Get_FullMethodName = "/qan.v1beta1.Filters/Get" @@ -53,7 +53,7 @@ func (c *filtersClient) Get(ctx context.Context, in *FiltersRequest, opts ...grp // FiltersServer is the server API for Filters service. // All implementations must embed UnimplementedFiltersServer -// for forward compatibility +// for forward compatibility. // // Filters serves list of names of metrics. type FiltersServer interface { @@ -62,13 +62,18 @@ type FiltersServer interface { mustEmbedUnimplementedFiltersServer() } -// UnimplementedFiltersServer must be embedded to have forward compatible implementations. +// UnimplementedFiltersServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedFiltersServer struct{} func (UnimplementedFiltersServer) Get(context.Context, *FiltersRequest) (*FiltersReply, error) { return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") } func (UnimplementedFiltersServer) mustEmbedUnimplementedFiltersServer() {} +func (UnimplementedFiltersServer) testEmbeddedByValue() {} // UnsafeFiltersServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to FiltersServer will @@ -78,6 +83,13 @@ type UnsafeFiltersServer interface { } func RegisterFiltersServer(s grpc.ServiceRegistrar, srv FiltersServer) { + // If the following call pancis, it indicates UnimplementedFiltersServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Filters_ServiceDesc, srv) } diff --git a/api/qanpb/metrics_names_grpc.pb.go b/api/qanpb/metrics_names_grpc.pb.go index 7b93e4aede..e12424181d 100644 --- a/api/qanpb/metrics_names_grpc.pb.go +++ b/api/qanpb/metrics_names_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qanpb/metrics_names.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( MetricsNames_GetMetricsNames_FullMethodName = "/qan.v1beta1.MetricsNames/GetMetricsNames" @@ -53,7 +53,7 @@ func (c *metricsNamesClient) GetMetricsNames(ctx context.Context, in *MetricsNam // MetricsNamesServer is the server API for MetricsNames service. // All implementations must embed UnimplementedMetricsNamesServer -// for forward compatibility +// for forward compatibility. // // MetricsNames serves list of names of metrics. type MetricsNamesServer interface { @@ -62,13 +62,18 @@ type MetricsNamesServer interface { mustEmbedUnimplementedMetricsNamesServer() } -// UnimplementedMetricsNamesServer must be embedded to have forward compatible implementations. +// UnimplementedMetricsNamesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedMetricsNamesServer struct{} func (UnimplementedMetricsNamesServer) GetMetricsNames(context.Context, *MetricsNamesRequest) (*MetricsNamesReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMetricsNames not implemented") } func (UnimplementedMetricsNamesServer) mustEmbedUnimplementedMetricsNamesServer() {} +func (UnimplementedMetricsNamesServer) testEmbeddedByValue() {} // UnsafeMetricsNamesServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to MetricsNamesServer will @@ -78,6 +83,13 @@ type UnsafeMetricsNamesServer interface { } func RegisterMetricsNamesServer(s grpc.ServiceRegistrar, srv MetricsNamesServer) { + // If the following call pancis, it indicates UnimplementedMetricsNamesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&MetricsNames_ServiceDesc, srv) } diff --git a/api/qanpb/object_details_grpc.pb.go b/api/qanpb/object_details_grpc.pb.go index 5f3b9ffc52..6d646ceeb0 100644 --- a/api/qanpb/object_details_grpc.pb.go +++ b/api/qanpb/object_details_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qanpb/object_details.proto @@ -17,8 +17,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ObjectDetails_GetMetrics_FullMethodName = "/qan.v1beta1.ObjectDetails/GetMetrics" @@ -145,7 +145,7 @@ func (c *objectDetailsClient) SchemaByQueryID(ctx context.Context, in *SchemaByQ // ObjectDetailsServer is the server API for ObjectDetails service. // All implementations must embed UnimplementedObjectDetailsServer -// for forward compatibility +// for forward compatibility. // // ObjectDetails serves agregated metrics filtered by given dimension value and period. type ObjectDetailsServer interface { @@ -168,7 +168,11 @@ type ObjectDetailsServer interface { mustEmbedUnimplementedObjectDetailsServer() } -// UnimplementedObjectDetailsServer must be embedded to have forward compatible implementations. +// UnimplementedObjectDetailsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedObjectDetailsServer struct{} func (UnimplementedObjectDetailsServer) GetMetrics(context.Context, *MetricsRequest) (*MetricsReply, error) { @@ -203,6 +207,7 @@ func (UnimplementedObjectDetailsServer) SchemaByQueryID(context.Context, *Schema return nil, status.Errorf(codes.Unimplemented, "method SchemaByQueryID not implemented") } func (UnimplementedObjectDetailsServer) mustEmbedUnimplementedObjectDetailsServer() {} +func (UnimplementedObjectDetailsServer) testEmbeddedByValue() {} // UnsafeObjectDetailsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ObjectDetailsServer will @@ -212,6 +217,13 @@ type UnsafeObjectDetailsServer interface { } func RegisterObjectDetailsServer(s grpc.ServiceRegistrar, srv ObjectDetailsServer) { + // If the following call pancis, it indicates UnimplementedObjectDetailsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ObjectDetails_ServiceDesc, srv) } diff --git a/api/qanpb/profile_grpc.pb.go b/api/qanpb/profile_grpc.pb.go index dd4b81ef4a..08412bfd02 100644 --- a/api/qanpb/profile_grpc.pb.go +++ b/api/qanpb/profile_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qanpb/profile.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Profile_GetReport_FullMethodName = "/qan.v1beta1.Profile/GetReport" @@ -53,7 +53,7 @@ func (c *profileClient) GetReport(ctx context.Context, in *ReportRequest, opts . // ProfileServer is the server API for Profile service. // All implementations must embed UnimplementedProfileServer -// for forward compatibility +// for forward compatibility. // // Profile of metrics by QueryID, Host etc. type ProfileServer interface { @@ -62,13 +62,18 @@ type ProfileServer interface { mustEmbedUnimplementedProfileServer() } -// UnimplementedProfileServer must be embedded to have forward compatible implementations. +// UnimplementedProfileServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedProfileServer struct{} func (UnimplementedProfileServer) GetReport(context.Context, *ReportRequest) (*ReportReply, error) { return nil, status.Errorf(codes.Unimplemented, "method GetReport not implemented") } func (UnimplementedProfileServer) mustEmbedUnimplementedProfileServer() {} +func (UnimplementedProfileServer) testEmbeddedByValue() {} // UnsafeProfileServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ProfileServer will @@ -78,6 +83,13 @@ type UnsafeProfileServer interface { } func RegisterProfileServer(s grpc.ServiceRegistrar, srv ProfileServer) { + // If the following call pancis, it indicates UnimplementedProfileServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Profile_ServiceDesc, srv) } diff --git a/api/serverpb/server_grpc.pb.go b/api/serverpb/server_grpc.pb.go index 17cd6efc9f..9f71a714b3 100644 --- a/api/serverpb/server_grpc.pb.go +++ b/api/serverpb/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: serverpb/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Server_Version_FullMethodName = "/server.Server/Version" @@ -171,7 +171,7 @@ func (c *serverClient) AWSInstanceCheck(ctx context.Context, in *AWSInstanceChec // ServerServer is the server API for Server service. // All implementations must embed UnimplementedServerServer -// for forward compatibility +// for forward compatibility. // // Server service provides generic PMM Server public APIs. type ServerServer interface { @@ -199,7 +199,11 @@ type ServerServer interface { mustEmbedUnimplementedServerServer() } -// UnimplementedServerServer must be embedded to have forward compatible implementations. +// UnimplementedServerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedServerServer struct{} func (UnimplementedServerServer) Version(context.Context, *VersionRequest) (*VersionResponse, error) { @@ -242,6 +246,7 @@ func (UnimplementedServerServer) AWSInstanceCheck(context.Context, *AWSInstanceC return nil, status.Errorf(codes.Unimplemented, "method AWSInstanceCheck not implemented") } func (UnimplementedServerServer) mustEmbedUnimplementedServerServer() {} +func (UnimplementedServerServer) testEmbeddedByValue() {} // UnsafeServerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServerServer will @@ -251,6 +256,13 @@ type UnsafeServerServer interface { } func RegisterServerServer(s grpc.ServiceRegistrar, srv ServerServer) { + // If the following call pancis, it indicates UnimplementedServerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Server_ServiceDesc, srv) } diff --git a/api/uieventspb/server_grpc.pb.go b/api/uieventspb/server_grpc.pb.go index 9bcc0a0b87..30f0cfe703 100644 --- a/api/uieventspb/server_grpc.pb.go +++ b/api/uieventspb/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: uieventspb/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( UIEvents_Store_FullMethodName = "/uievents.UIEvents/Store" @@ -53,7 +53,7 @@ func (c *uIEventsClient) Store(ctx context.Context, in *StoreRequest, opts ...gr // UIEventsServer is the server API for UIEvents service. // All implementations must embed UnimplementedUIEventsServer -// for forward compatibility +// for forward compatibility. // // UIEvents collects UI related events. type UIEventsServer interface { @@ -62,13 +62,18 @@ type UIEventsServer interface { mustEmbedUnimplementedUIEventsServer() } -// UnimplementedUIEventsServer must be embedded to have forward compatible implementations. +// UnimplementedUIEventsServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedUIEventsServer struct{} func (UnimplementedUIEventsServer) Store(context.Context, *StoreRequest) (*StoreResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Store not implemented") } func (UnimplementedUIEventsServer) mustEmbedUnimplementedUIEventsServer() {} +func (UnimplementedUIEventsServer) testEmbeddedByValue() {} // UnsafeUIEventsServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to UIEventsServer will @@ -78,6 +83,13 @@ type UnsafeUIEventsServer interface { } func RegisterUIEventsServer(s grpc.ServiceRegistrar, srv UIEventsServer) { + // If the following call pancis, it indicates UnimplementedUIEventsServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&UIEvents_ServiceDesc, srv) } diff --git a/api/userpb/user_grpc.pb.go b/api/userpb/user_grpc.pb.go index 8f23808bec..22774bdc3b 100644 --- a/api/userpb/user_grpc.pb.go +++ b/api/userpb/user_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: userpb/user.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( User_GetUser_FullMethodName = "/user.User/GetUser" @@ -76,7 +76,7 @@ func (c *userClient) ListUsers(ctx context.Context, in *ListUsersRequest, opts . // UserServer is the server API for User service. // All implementations must embed UnimplementedUserServer -// for forward compatibility +// for forward compatibility. // // UserService contains rpcs related to user data type UserServer interface { @@ -86,7 +86,11 @@ type UserServer interface { mustEmbedUnimplementedUserServer() } -// UnimplementedUserServer must be embedded to have forward compatible implementations. +// UnimplementedUserServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedUserServer struct{} func (UnimplementedUserServer) GetUser(context.Context, *UserDetailsRequest) (*UserDetailsResponse, error) { @@ -101,6 +105,7 @@ func (UnimplementedUserServer) ListUsers(context.Context, *ListUsersRequest) (*L return nil, status.Errorf(codes.Unimplemented, "method ListUsers not implemented") } func (UnimplementedUserServer) mustEmbedUnimplementedUserServer() {} +func (UnimplementedUserServer) testEmbeddedByValue() {} // UnsafeUserServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to UserServer will @@ -110,6 +115,13 @@ type UnsafeUserServer interface { } func RegisterUserServer(s grpc.ServiceRegistrar, srv UserServer) { + // If the following call pancis, it indicates UnimplementedUserServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&User_ServiceDesc, srv) } diff --git a/tools/go.mod b/tools/go.mod index 146f2c14b3..ced0cc8631 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -25,7 +25,7 @@ require ( github.com/vektra/mockery/v2 v2.44.1 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 golang.org/x/tools v0.24.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 google.golang.org/protobuf v1.34.2 gopkg.in/reform.v1 v1.5.1 mvdan.cc/gofumpt v0.6.0 diff --git a/tools/go.sum b/tools/go.sum index 2e722f5cfb..178a3f9bb4 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1122,8 +1122,8 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0 h1:9SxA29VM43MF5Z9dQu694wmY5t8E/Gxr7s+RSxiIDmc= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.4.0/go.mod h1:yZOK5zhQMiALmuweVdIVoQPa6eIJyXn2B9g5dJDhqX4= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= 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 797bed98880d99a4a197e3a4ff49dbc098b6895b Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Wed, 7 Aug 2024 15:11:50 +0300 Subject: [PATCH 45/70] PMM-13250 Fix backup restore endpoint (#3082) * PMM-13250 Fix backup restore endpoint * PMM-13250 format the code * PMM-13250 move restore test to own service * PMM-13250 remove a duplicate RestoreBackup method --- managed/cmd/pmm-managed/main.go | 2 +- managed/models/artifact_helpers.go | 4 +- managed/services/agents/deps.go | 6 +- .../{backups_service.go => backup_service.go} | 30 -------- ...service_test.go => backup_service_test.go} | 60 --------------- .../management/backup/restore_service.go | 77 +++++++++++++++++-- .../management/backup/restore_service_test.go | 69 ++++++++++++++++- managed/services/scheduler/scheduler.go | 2 +- 8 files changed, 147 insertions(+), 103 deletions(-) rename managed/services/management/backup/{backups_service.go => backup_service.go} (97%) rename managed/services/management/backup/{backups_service_test.go => backup_service_test.go} (91%) diff --git a/managed/cmd/pmm-managed/main.go b/managed/cmd/pmm-managed/main.go index 6b102c046f..fcd396f0bd 100644 --- a/managed/cmd/pmm-managed/main.go +++ b/managed/cmd/pmm-managed/main.go @@ -268,7 +268,7 @@ func runGRPCServer(ctx context.Context, deps *gRPCServerDeps) { deps.vmdb, deps.connectionCheck, deps.serviceInfoBroker, deps.agentService) mgmtBackupService := managementbackup.NewBackupsService(deps.db, deps.backupService, deps.compatibilityService, deps.schedulerService, deps.backupRemovalService, deps.pbmPITRService) - mgmtRestoreService := managementbackup.NewRestoreService(deps.db) + mgmtRestoreService := managementbackup.NewRestoreService(deps.db, deps.backupService, deps.schedulerService) mgmtServices := common.NewMgmtServices(mgmtBackupService, mgmtRestoreService) servicesSvc := inventory.NewServicesService(deps.db, deps.agentsRegistry, deps.agentsStateUpdater, deps.vmdb, deps.versionCache, mgmtServices) diff --git a/managed/models/artifact_helpers.go b/managed/models/artifact_helpers.go index 4c4bdc7acc..1cf76d1dd6 100644 --- a/managed/models/artifact_helpers.go +++ b/managed/models/artifact_helpers.go @@ -124,14 +124,14 @@ func FindArtifactsByIDs(q *reform.Querier, ids []string) (map[string]*Artifact, // FindArtifactByID returns artifact by given ID if found, ErrNotFound if not. func FindArtifactByID(q *reform.Querier, id string) (*Artifact, error) { if id == "" { - return nil, errors.New("provided artifact id is empty") + return nil, errors.New("provided backup artifact id is empty") } artifact := &Artifact{ID: id} err := q.Reload(artifact) if err != nil { if errors.Is(err, reform.ErrNoRows) { - return nil, errors.Wrapf(ErrNotFound, "artifact by id '%s'", id) + return nil, errors.Wrapf(ErrNotFound, "artifact with id '%s'", id) } return nil, errors.WithStack(err) } diff --git a/managed/services/agents/deps.go b/managed/services/agents/deps.go index 7701164266..a0d4f45804 100644 --- a/managed/services/agents/deps.go +++ b/managed/services/agents/deps.go @@ -22,7 +22,7 @@ import ( "github.com/sirupsen/logrus" agentv1 "github.com/percona/pmm/api/agent/v1" - qanpb "github.com/percona/pmm/api/qan/v1" + qanv1 "github.com/percona/pmm/api/qan/v1" ) // prometheusService is a subset of methods of victoriametrics.Service used by this package. @@ -39,8 +39,8 @@ type prometheusService interface { type qanClient interface { Collect(ctx context.Context, metricsBuckets []*agentv1.MetricsBucket) error QueryExists(ctx context.Context, serviceID, query string) error - ExplainFingerprintByQueryID(ctx context.Context, serviceID, queryID string) (*qanpb.ExplainFingerprintByQueryIDResponse, error) - SchemaByQueryID(ctx context.Context, serviceID, queryID string) (*qanpb.SchemaByQueryIDResponse, error) + ExplainFingerprintByQueryID(ctx context.Context, serviceID, queryID string) (*qanv1.ExplainFingerprintByQueryIDResponse, error) + SchemaByQueryID(ctx context.Context, serviceID, queryID string) (*qanv1.SchemaByQueryIDResponse, error) } // retentionService is a subset of methods of backup.Client used by this package. diff --git a/managed/services/management/backup/backups_service.go b/managed/services/management/backup/backup_service.go similarity index 97% rename from managed/services/management/backup/backups_service.go rename to managed/services/management/backup/backup_service.go index 12f4785793..a1c783f203 100644 --- a/managed/services/management/backup/backups_service.go +++ b/managed/services/management/backup/backup_service.go @@ -136,36 +136,6 @@ func (s *BackupService) StartBackup(ctx context.Context, req *backupv1.StartBack }, nil } -// RestoreBackup starts restore backup job. -func (s *BackupService) RestoreBackup( - ctx context.Context, - req *backupv1.RestoreBackupRequest, -) (*backupv1.RestoreBackupResponse, error) { - // Disable all related scheduled backups before restoring - tasks, err := models.FindScheduledTasks(s.db.Querier, models.ScheduledTasksFilter{ServiceID: req.ServiceId}) - if err != nil { - return nil, err - } - - for _, t := range tasks { - if _, err := s.ChangeScheduledBackup(ctx, &backupv1.ChangeScheduledBackupRequest{ - ScheduledBackupId: t.ID, - Enabled: pointer.ToBool(false), - }); err != nil { - return nil, err - } - } - - id, err := s.backupService.RestoreBackup(ctx, req.ServiceId, req.ArtifactId, req.PitrTimestamp.AsTime()) - if err != nil { - return nil, convertError(err) - } - - return &backupv1.RestoreBackupResponse{ - RestoreId: id, - }, nil -} - // ScheduleBackup add new backup task to scheduler. func (s *BackupService) ScheduleBackup(ctx context.Context, req *backupv1.ScheduleBackupRequest) (*backupv1.ScheduleBackupResponse, error) { var id string diff --git a/managed/services/management/backup/backups_service_test.go b/managed/services/management/backup/backup_service_test.go similarity index 91% rename from managed/services/management/backup/backups_service_test.go rename to managed/services/management/backup/backup_service_test.go index 458cb59965..a15ff5e855 100644 --- a/managed/services/management/backup/backups_service_test.go +++ b/managed/services/management/backup/backup_service_test.go @@ -250,66 +250,6 @@ func TestStartBackup(t *testing.T) { }) } -func TestRestoreBackupErrors(t *testing.T) { - sqlDB := testdb.Open(t, models.SkipFixtures, nil) - db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) - backupService := &mockBackupService{} - mockedPbmPITRService := &mockPbmPITRService{} - backupSvc := NewBackupsService(db, backupService, nil, nil, nil, mockedPbmPITRService) - - for _, tc := range []struct { - testName string - backupError error - code backupv1.ErrorCode - }{ - { - testName: "xtrabackup not installed", - backupError: backup.ErrXtrabackupNotInstalled, - code: backupv1.ErrorCode_ERROR_CODE_XTRABACKUP_NOT_INSTALLED, - }, - { - testName: "invalid xtrabackup", - backupError: backup.ErrInvalidXtrabackup, - code: backupv1.ErrorCode_ERROR_CODE_INVALID_XTRABACKUP, - }, - { - testName: "incompatible xtrabackup", - backupError: backup.ErrIncompatibleXtrabackup, - code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_XTRABACKUP, - }, - { - testName: "target MySQL is not compatible", - backupError: backup.ErrIncompatibleTargetMySQL, - code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MYSQL, - }, - { - testName: "target MongoDB is not compatible", - backupError: backup.ErrIncompatibleTargetMongoDB, - code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MONGODB, - }, - } { - t.Run(tc.testName, func(t *testing.T) { - backupError := fmt.Errorf("error: %w", tc.backupError) - backupService.On("RestoreBackup", mock.Anything, "serviceID1", "artifactID1", mock.Anything). - Return("", backupError).Once() - ctx := context.Background() - resp, err := backupSvc.RestoreBackup(ctx, &backupv1.RestoreBackupRequest{ - ServiceId: "serviceID1", - ArtifactId: "artifactID1", - }) - assert.Nil(t, resp) - st, ok := status.FromError(err) - require.True(t, ok) - assert.Equal(t, codes.FailedPrecondition, st.Code()) - assert.Equal(t, backupError.Error(), st.Message()) - require.Len(t, st.Details(), 1) - detailedError, ok := st.Details()[0].(*backupv1.Error) - require.True(t, ok) - assert.Equal(t, tc.code, detailedError.Code) - }) - } -} - func TestScheduledBackups(t *testing.T) { ctx := context.Background() sqlDB := testdb.Open(t, models.SkipFixtures, nil) diff --git a/managed/services/management/backup/restore_service.go b/managed/services/management/backup/restore_service.go index 96aada7581..6d75311440 100644 --- a/managed/services/management/backup/restore_service.go +++ b/managed/services/management/backup/restore_service.go @@ -33,17 +33,21 @@ import ( // RestoreService represents backup restore API. type RestoreService struct { - l *logrus.Entry - db *reform.DB + l *logrus.Entry + db *reform.DB + backupService backupService + scheduleService scheduleService backupv1.UnimplementedRestoreServiceServer } // NewRestoreService creates new restore API service. -func NewRestoreService(db *reform.DB) *RestoreService { +func NewRestoreService(db *reform.DB, backupService backupService, scheduleService scheduleService) *RestoreService { return &RestoreService{ - l: logrus.WithField("component", "management/backup/restore_history"), - db: db, + l: logrus.WithField("component", "management/backup/restore"), + db: db, + backupService: backupService, + scheduleService: scheduleService, } } @@ -171,6 +175,69 @@ func (s *RestoreService) GetLogs(_ context.Context, req *backupv1.RestoreService return res, nil } +// RestoreBackup starts restore backup job. +func (s *RestoreService) RestoreBackup(ctx context.Context, req *backupv1.RestoreBackupRequest) (*backupv1.RestoreBackupResponse, error) { + // Disable all related scheduled backups before restoring + tasks, err := models.FindScheduledTasks(s.db.Querier, models.ScheduledTasksFilter{ServiceID: req.ServiceId}) + if err != nil { + return nil, err + } + + for _, task := range tasks { + var disablePITR bool + var serviceID string + + errTx := s.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { + scheduledTask, err := models.FindScheduledTaskByID(tx.Querier, task.ID) + if err != nil { + return convertError(err) + } + + var data *models.CommonBackupTaskData + switch scheduledTask.Type { + case models.ScheduledMySQLBackupTask: + data = &scheduledTask.Data.MySQLBackupTask.CommonBackupTaskData + case models.ScheduledMongoDBBackupTask: + data = &scheduledTask.Data.MongoDBBackupTask.CommonBackupTaskData + default: + return status.Errorf(codes.InvalidArgument, "Unknown type: %s", scheduledTask.Type) + } + + serviceID = data.ServiceID + params := models.ChangeScheduledTaskParams{ + Data: scheduledTask.Data, + Disable: pointer.ToBool(true), + } + + if scheduledTask.Type == models.ScheduledMongoDBBackupTask { + disablePITR = data.Mode == models.PITR + } + + err = s.scheduleService.Update(task.ID, params) + + return convertError(err) + }) + if errTx != nil { + return nil, errTx + } + + if disablePITR { + if err := s.backupService.SwitchMongoPITR(ctx, serviceID, false); err != nil { + s.l.WithError(err).Error("failed to disable PITR") + } + } + } + + id, err := s.backupService.RestoreBackup(ctx, req.ServiceId, req.ArtifactId, req.PitrTimestamp.AsTime()) + if err != nil { + return nil, convertError(err) + } + + return &backupv1.RestoreBackupResponse{ + RestoreId: id, + }, nil +} + func convertRestoreStatus(status models.RestoreStatus) (*backupv1.RestoreStatus, error) { var s backupv1.RestoreStatus switch status { diff --git a/managed/services/management/backup/restore_service_test.go b/managed/services/management/backup/restore_service_test.go index 12543c38b2..b4ab8d5c21 100644 --- a/managed/services/management/backup/restore_service_test.go +++ b/managed/services/management/backup/restore_service_test.go @@ -17,16 +17,21 @@ package backup import ( "context" + "fmt" "testing" "github.com/google/uuid" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "gopkg.in/reform.v1" "gopkg.in/reform.v1/dialects/postgresql" backupv1 "github.com/percona/pmm/api/backup/v1" "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/managed/services/backup" "github.com/percona/pmm/managed/utils/testdb" ) @@ -35,7 +40,9 @@ func TestRestoreServiceGetLogs(t *testing.T) { sqlDB := testdb.Open(t, models.SkipFixtures, nil) db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) - restoreSvc := NewRestoreService(db) + backupService := &mockBackupService{} + scheduleService := &mockScheduleService{} + restoreSvc := NewRestoreService(db, backupService, scheduleService) t.Cleanup(func() { _ = sqlDB.Close() @@ -144,3 +151,63 @@ func TestRestoreServiceGetLogs(t *testing.T) { } }) } + +func TestRestoreBackupErrors(t *testing.T) { + sqlDB := testdb.Open(t, models.SkipFixtures, nil) + db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) + backupService := &mockBackupService{} + scheduleService := &mockScheduleService{} + restoreSvc := NewRestoreService(db, backupService, scheduleService) + + for _, tc := range []struct { + testName string + backupError error + code backupv1.ErrorCode + }{ + { + testName: "xtrabackup not installed", + backupError: backup.ErrXtrabackupNotInstalled, + code: backupv1.ErrorCode_ERROR_CODE_XTRABACKUP_NOT_INSTALLED, + }, + { + testName: "invalid xtrabackup", + backupError: backup.ErrInvalidXtrabackup, + code: backupv1.ErrorCode_ERROR_CODE_INVALID_XTRABACKUP, + }, + { + testName: "incompatible xtrabackup", + backupError: backup.ErrIncompatibleXtrabackup, + code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_XTRABACKUP, + }, + { + testName: "target MySQL is not compatible", + backupError: backup.ErrIncompatibleTargetMySQL, + code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MYSQL, + }, + { + testName: "target MongoDB is not compatible", + backupError: backup.ErrIncompatibleTargetMongoDB, + code: backupv1.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MONGODB, + }, + } { + t.Run(tc.testName, func(t *testing.T) { + backupError := fmt.Errorf("error: %w", tc.backupError) + backupService.On("RestoreBackup", mock.Anything, "serviceID1", "artifactID1", mock.Anything). + Return("", backupError).Once() + ctx := context.Background() + resp, err := restoreSvc.RestoreBackup(ctx, &backupv1.RestoreBackupRequest{ + ServiceId: "serviceID1", + ArtifactId: "artifactID1", + }) + assert.Nil(t, resp) + st, ok := status.FromError(err) + require.True(t, ok) + assert.Equal(t, codes.FailedPrecondition, st.Code()) + assert.Equal(t, backupError.Error(), st.Message()) + require.Len(t, st.Details(), 1) + detailedError, ok := st.Details()[0].(*backupv1.Error) + require.True(t, ok) + assert.Equal(t, tc.code, detailedError.Code) + }) + } +} diff --git a/managed/services/scheduler/scheduler.go b/managed/services/scheduler/scheduler.go index 829dc0ab33..842987bbfb 100644 --- a/managed/services/scheduler/scheduler.go +++ b/managed/services/scheduler/scheduler.go @@ -168,7 +168,7 @@ func (s *Service) Update(id string, params models.ChangeScheduledTaskParams) err } s.mx.Lock() - // TODO if addDBTask will fail, then scheduler state will be not restored by the transaction rollback + // TODO if addDBTask fails, then scheduler state will be not restored by the transaction rollback _ = s.scheduler.RemoveByTag(id) s.mx.Unlock() From 54d6b7699520f2bf3223c079fcb9e6fce6fc4ac9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 19:34:05 +0300 Subject: [PATCH 46/70] Bump golang.org/x/text from 0.16.0 to 0.17.0 (#3141) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.16.0 to 0.17.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.16.0...v0.17.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 | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4c8957bb93..bf0f5abfd0 100644 --- a/go.mod +++ b/go.mod @@ -78,9 +78,9 @@ require ( go.mongodb.org/mongo-driver v1.16.0 go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.24.0 - golang.org/x/sync v0.7.0 + golang.org/x/sync v0.8.0 golang.org/x/sys v0.23.0 - golang.org/x/text v0.16.0 + golang.org/x/text v0.17.0 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a diff --git a/go.sum b/go.sum index 6f1f774e5c..cbc615c73d 100644 --- a/go.sum +++ b/go.sum @@ -945,8 +945,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ 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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1032,8 +1032,8 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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 1782250319bca53e18eb1a863180466e7c724ae2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 16:42:47 +0000 Subject: [PATCH 47/70] Bump golang.org/x/tools (#3139) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.21.1-0.20240508182429-e35e4ccd0d2d to 0.24.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/commits/v0.24.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 bf0f5abfd0..8859589f17 100644 --- a/go.mod +++ b/go.mod @@ -77,11 +77,11 @@ require ( github.com/stretchr/testify v1.9.0 go.mongodb.org/mongo-driver v1.16.0 go.starlark.net v0.0.0-20230717150657-8a3343210976 - golang.org/x/crypto v0.24.0 + golang.org/x/crypto v0.26.0 golang.org/x/sync v0.8.0 golang.org/x/sys v0.23.0 golang.org/x/text v0.17.0 - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d + golang.org/x/tools v0.24.0 google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a google.golang.org/grpc v1.65.0 @@ -257,10 +257,10 @@ require ( github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect + golang.org/x/term v0.23.0 // 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 cbc615c73d..9735fa6fe1 100644 --- a/go.sum +++ b/go.sum @@ -880,8 +880,8 @@ 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.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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= @@ -921,8 +921,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= 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= @@ -1017,8 +1017,8 @@ golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= 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= @@ -1096,8 +1096,8 @@ 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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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 6a42b21b66fe5bf89a2fbfcd15ed45509e8987b3 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Fri, 9 Aug 2024 10:28:15 +0300 Subject: [PATCH 48/70] Merge branch 'main' into v3 --- .../v1beta1/accesscontrol.pb.gw.go | 3 +- .../v1beta1/accesscontrol_grpc.pb.go | 22 +++-- api/actions/v1/actions.pb.gw.go | 3 +- api/actions/v1/actions_grpc.pb.go | 22 +++-- api/advisors/v1/advisors.pb.gw.go | 3 +- api/advisors/v1/advisors_grpc.pb.go | 22 +++-- api/agent/v1/agent_grpc.pb.go | 80 +++++++------------ api/agentlocal/v1/agentlocal.pb.gw.go | 3 +- api/agentlocal/v1/agentlocal_grpc.pb.go | 22 +++-- api/alerting/v1/alerting.pb.gw.go | 3 +- api/alerting/v1/alerting_grpc.pb.go | 22 +++-- api/backup/v1/backup.pb.gw.go | 3 +- api/backup/v1/backup_grpc.pb.go | 22 +++-- api/backup/v1/locations.pb.gw.go | 3 +- api/backup/v1/locations_grpc.pb.go | 22 +++-- api/backup/v1/restores.pb.gw.go | 3 +- api/backup/v1/restores_grpc.pb.go | 22 +++-- api/dump/v1beta1/dump.pb.gw.go | 3 +- api/dump/v1beta1/dump_grpc.pb.go | 22 +++-- api/inventory/v1/agents.pb.gw.go | 3 +- api/inventory/v1/agents_grpc.pb.go | 22 +++-- api/inventory/v1/nodes.pb.gw.go | 3 +- api/inventory/v1/nodes_grpc.pb.go | 22 +++-- api/inventory/v1/services.pb.gw.go | 3 +- api/inventory/v1/services_grpc.pb.go | 22 +++-- api/management/v1/service.pb.gw.go | 3 +- api/management/v1/service_grpc.pb.go | 22 +++-- api/platform/v1/platform.pb.gw.go | 3 +- api/platform/v1/platform_grpc.pb.go | 22 +++-- api/qan/v1/collector_grpc.pb.go | 22 +++-- api/qan/v1/service.pb.gw.go | 3 +- api/qan/v1/service_grpc.pb.go | 22 +++-- api/server/v1/server.pb.gw.go | 3 +- api/server/v1/server_grpc.pb.go | 22 +++-- api/uievents/v1/server.pb.gw.go | 3 +- api/uievents/v1/server_grpc.pb.go | 22 +++-- api/user/v1/user.pb.gw.go | 3 +- api/user/v1/user_grpc.pb.go | 22 +++-- 38 files changed, 386 insertions(+), 166 deletions(-) diff --git a/api/accesscontrol/v1beta1/accesscontrol.pb.gw.go b/api/accesscontrol/v1beta1/accesscontrol.pb.gw.go index 0eb838b049..8f10784f9d 100644 --- a/api/accesscontrol/v1beta1/accesscontrol.pb.gw.go +++ b/api/accesscontrol/v1beta1/accesscontrol.pb.gw.go @@ -299,6 +299,7 @@ func local_request_AccessControlService_SetDefaultRole_0(ctx context.Context, ma // UnaryRPC :call AccessControlServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAccessControlServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAccessControlServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AccessControlServiceServer) error { mux.Handle("POST", pattern_AccessControlService_CreateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -506,7 +507,7 @@ func RegisterAccessControlServiceHandler(ctx context.Context, mux *runtime.Serve // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AccessControlServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AccessControlServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AccessControlServiceClient" to call the correct interceptors. +// "AccessControlServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAccessControlServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AccessControlServiceClient) error { mux.Handle("POST", pattern_AccessControlService_CreateRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/accesscontrol/v1beta1/accesscontrol_grpc.pb.go b/api/accesscontrol/v1beta1/accesscontrol_grpc.pb.go index def6545fe2..d35749a17e 100644 --- a/api/accesscontrol/v1beta1/accesscontrol_grpc.pb.go +++ b/api/accesscontrol/v1beta1/accesscontrol_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: accesscontrol/v1beta1/accesscontrol.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AccessControlService_CreateRole_FullMethodName = "/accesscontrol.v1beta1.AccessControlService/CreateRole" @@ -131,7 +131,7 @@ func (c *accessControlServiceClient) SetDefaultRole(ctx context.Context, in *Set // AccessControlServiceServer is the server API for AccessControlService service. // All implementations must embed UnimplementedAccessControlServiceServer -// for forward compatibility +// for forward compatibility. // // Service Role provides public methods for managing Roles. type AccessControlServiceServer interface { @@ -152,7 +152,11 @@ type AccessControlServiceServer interface { mustEmbedUnimplementedAccessControlServiceServer() } -// UnimplementedAccessControlServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAccessControlServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAccessControlServiceServer struct{} func (UnimplementedAccessControlServiceServer) CreateRole(context.Context, *CreateRoleRequest) (*CreateRoleResponse, error) { @@ -183,6 +187,7 @@ func (UnimplementedAccessControlServiceServer) SetDefaultRole(context.Context, * return nil, status.Errorf(codes.Unimplemented, "method SetDefaultRole not implemented") } func (UnimplementedAccessControlServiceServer) mustEmbedUnimplementedAccessControlServiceServer() {} +func (UnimplementedAccessControlServiceServer) testEmbeddedByValue() {} // UnsafeAccessControlServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AccessControlServiceServer will @@ -192,6 +197,13 @@ type UnsafeAccessControlServiceServer interface { } func RegisterAccessControlServiceServer(s grpc.ServiceRegistrar, srv AccessControlServiceServer) { + // If the following call pancis, it indicates UnimplementedAccessControlServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AccessControlService_ServiceDesc, srv) } diff --git a/api/actions/v1/actions.pb.gw.go b/api/actions/v1/actions.pb.gw.go index 303a54ea81..c84fd58bf9 100644 --- a/api/actions/v1/actions.pb.gw.go +++ b/api/actions/v1/actions.pb.gw.go @@ -159,6 +159,7 @@ func local_request_ActionsService_CancelAction_0(ctx context.Context, marshaler // UnaryRPC :call ActionsServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterActionsServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterActionsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ActionsServiceServer) error { mux.Handle("GET", pattern_ActionsService_GetAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -294,7 +295,7 @@ func RegisterActionsServiceHandler(ctx context.Context, mux *runtime.ServeMux, c // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ActionsServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ActionsServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ActionsServiceClient" to call the correct interceptors. +// "ActionsServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterActionsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ActionsServiceClient) error { mux.Handle("GET", pattern_ActionsService_GetAction_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/actions/v1/actions_grpc.pb.go b/api/actions/v1/actions_grpc.pb.go index e69432a684..e540a425a3 100644 --- a/api/actions/v1/actions_grpc.pb.go +++ b/api/actions/v1/actions_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: actions/v1/actions.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ActionsService_GetAction_FullMethodName = "/actions.v1.ActionsService/GetAction" @@ -92,7 +92,7 @@ func (c *actionsServiceClient) CancelAction(ctx context.Context, in *CancelActio // ActionsServiceServer is the server API for ActionsService service. // All implementations must embed UnimplementedActionsServiceServer -// for forward compatibility +// for forward compatibility. // // Actions service provides public Management API methods for Actions. type ActionsServiceServer interface { @@ -107,7 +107,11 @@ type ActionsServiceServer interface { mustEmbedUnimplementedActionsServiceServer() } -// UnimplementedActionsServiceServer must be embedded to have forward compatible implementations. +// UnimplementedActionsServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedActionsServiceServer struct{} func (UnimplementedActionsServiceServer) GetAction(context.Context, *GetActionRequest) (*GetActionResponse, error) { @@ -126,6 +130,7 @@ func (UnimplementedActionsServiceServer) CancelAction(context.Context, *CancelAc return nil, status.Errorf(codes.Unimplemented, "method CancelAction not implemented") } func (UnimplementedActionsServiceServer) mustEmbedUnimplementedActionsServiceServer() {} +func (UnimplementedActionsServiceServer) testEmbeddedByValue() {} // UnsafeActionsServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ActionsServiceServer will @@ -135,6 +140,13 @@ type UnsafeActionsServiceServer interface { } func RegisterActionsServiceServer(s grpc.ServiceRegistrar, srv ActionsServiceServer) { + // If the following call pancis, it indicates UnimplementedActionsServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ActionsService_ServiceDesc, srv) } diff --git a/api/advisors/v1/advisors.pb.gw.go b/api/advisors/v1/advisors.pb.gw.go index c93947474b..bff3437706 100644 --- a/api/advisors/v1/advisors.pb.gw.go +++ b/api/advisors/v1/advisors.pb.gw.go @@ -165,6 +165,7 @@ func local_request_AdvisorService_ChangeAdvisorChecks_0(ctx context.Context, mar // UnaryRPC :call AdvisorServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAdvisorServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAdvisorServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AdvisorServiceServer) error { mux.Handle("GET", pattern_AdvisorService_ListFailedServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -348,7 +349,7 @@ func RegisterAdvisorServiceHandler(ctx context.Context, mux *runtime.ServeMux, c // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AdvisorServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AdvisorServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AdvisorServiceClient" to call the correct interceptors. +// "AdvisorServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAdvisorServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AdvisorServiceClient) error { mux.Handle("GET", pattern_AdvisorService_ListFailedServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/advisors/v1/advisors_grpc.pb.go b/api/advisors/v1/advisors_grpc.pb.go index e5ec9b5e74..ad91ee616f 100644 --- a/api/advisors/v1/advisors_grpc.pb.go +++ b/api/advisors/v1/advisors_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: advisors/v1/advisors.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AdvisorService_ListFailedServices_FullMethodName = "/advisors.v1.AdvisorService/ListFailedServices" @@ -118,7 +118,7 @@ func (c *advisorServiceClient) ChangeAdvisorChecks(ctx context.Context, in *Chan // AdvisorServiceServer is the server API for AdvisorService service. // All implementations must embed UnimplementedAdvisorServiceServer -// for forward compatibility +// for forward compatibility. // // AdvisorService service provides public Management API methods for Advisor Service. type AdvisorServiceServer interface { @@ -137,7 +137,11 @@ type AdvisorServiceServer interface { mustEmbedUnimplementedAdvisorServiceServer() } -// UnimplementedAdvisorServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAdvisorServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAdvisorServiceServer struct{} func (UnimplementedAdvisorServiceServer) ListFailedServices(context.Context, *ListFailedServicesRequest) (*ListFailedServicesResponse, error) { @@ -164,6 +168,7 @@ func (UnimplementedAdvisorServiceServer) ChangeAdvisorChecks(context.Context, *C return nil, status.Errorf(codes.Unimplemented, "method ChangeAdvisorChecks not implemented") } func (UnimplementedAdvisorServiceServer) mustEmbedUnimplementedAdvisorServiceServer() {} +func (UnimplementedAdvisorServiceServer) testEmbeddedByValue() {} // UnsafeAdvisorServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AdvisorServiceServer will @@ -173,6 +178,13 @@ type UnsafeAdvisorServiceServer interface { } func RegisterAdvisorServiceServer(s grpc.ServiceRegistrar, srv AdvisorServiceServer) { + // If the following call pancis, it indicates UnimplementedAdvisorServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AdvisorService_ServiceDesc, srv) } diff --git a/api/agent/v1/agent_grpc.pb.go b/api/agent/v1/agent_grpc.pb.go index 78ddba4871..7b0cdc51b8 100644 --- a/api/agent/v1/agent_grpc.pb.go +++ b/api/agent/v1/agent_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: agent/v1/agent.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AgentService_Connect_FullMethodName = "/agent.v1.AgentService/Connect" @@ -30,7 +30,7 @@ const ( // Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentServiceClient interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. - Connect(ctx context.Context, opts ...grpc.CallOption) (AgentService_ConnectClient, error) + Connect(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[AgentMessage, ServerMessage], error) } type agentServiceClient struct { @@ -41,56 +41,42 @@ func NewAgentServiceClient(cc grpc.ClientConnInterface) AgentServiceClient { return &agentServiceClient{cc} } -func (c *agentServiceClient) Connect(ctx context.Context, opts ...grpc.CallOption) (AgentService_ConnectClient, error) { +func (c *agentServiceClient) Connect(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[AgentMessage, ServerMessage], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &AgentService_ServiceDesc.Streams[0], AgentService_Connect_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &agentServiceConnectClient{ClientStream: stream} + x := &grpc.GenericClientStream[AgentMessage, ServerMessage]{ClientStream: stream} return x, nil } -type AgentService_ConnectClient interface { - Send(*AgentMessage) error - Recv() (*ServerMessage, error) - grpc.ClientStream -} - -type agentServiceConnectClient struct { - grpc.ClientStream -} - -func (x *agentServiceConnectClient) Send(m *AgentMessage) error { - return x.ClientStream.SendMsg(m) -} - -func (x *agentServiceConnectClient) Recv() (*ServerMessage, error) { - m := new(ServerMessage) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type AgentService_ConnectClient = grpc.BidiStreamingClient[AgentMessage, ServerMessage] // AgentServiceServer is the server API for AgentService service. // All implementations must embed UnimplementedAgentServiceServer -// for forward compatibility +// for forward compatibility. // // Agent service provides private methods for pmm-agent <-> pmm-managed interactions. type AgentServiceServer interface { // Connect establishes two-way communication channel between pmm-agent and pmm-managed. - Connect(AgentService_ConnectServer) error + Connect(grpc.BidiStreamingServer[AgentMessage, ServerMessage]) error mustEmbedUnimplementedAgentServiceServer() } -// UnimplementedAgentServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAgentServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentServiceServer struct{} -func (UnimplementedAgentServiceServer) Connect(AgentService_ConnectServer) error { +func (UnimplementedAgentServiceServer) Connect(grpc.BidiStreamingServer[AgentMessage, ServerMessage]) error { return status.Errorf(codes.Unimplemented, "method Connect not implemented") } func (UnimplementedAgentServiceServer) mustEmbedUnimplementedAgentServiceServer() {} +func (UnimplementedAgentServiceServer) testEmbeddedByValue() {} // UnsafeAgentServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentServiceServer will @@ -100,34 +86,22 @@ type UnsafeAgentServiceServer interface { } func RegisterAgentServiceServer(s grpc.ServiceRegistrar, srv AgentServiceServer) { + // If the following call pancis, it indicates UnimplementedAgentServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AgentService_ServiceDesc, srv) } func _AgentService_Connect_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(AgentServiceServer).Connect(&agentServiceConnectServer{ServerStream: stream}) -} - -type AgentService_ConnectServer interface { - Send(*ServerMessage) error - Recv() (*AgentMessage, error) - grpc.ServerStream -} - -type agentServiceConnectServer struct { - grpc.ServerStream + return srv.(AgentServiceServer).Connect(&grpc.GenericServerStream[AgentMessage, ServerMessage]{ServerStream: stream}) } -func (x *agentServiceConnectServer) Send(m *ServerMessage) error { - return x.ServerStream.SendMsg(m) -} - -func (x *agentServiceConnectServer) Recv() (*AgentMessage, error) { - m := new(AgentMessage) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type AgentService_ConnectServer = grpc.BidiStreamingServer[AgentMessage, ServerMessage] // AgentService_ServiceDesc is the grpc.ServiceDesc for AgentService service. // It's only intended for direct use with grpc.RegisterService, diff --git a/api/agentlocal/v1/agentlocal.pb.gw.go b/api/agentlocal/v1/agentlocal.pb.gw.go index aa1809ee16..f8795a8ff4 100644 --- a/api/agentlocal/v1/agentlocal.pb.gw.go +++ b/api/agentlocal/v1/agentlocal.pb.gw.go @@ -117,6 +117,7 @@ func local_request_AgentLocalService_Reload_0(ctx context.Context, marshaler run // UnaryRPC :call AgentLocalServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAgentLocalServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAgentLocalServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AgentLocalServiceServer) error { mux.Handle("POST", pattern_AgentLocalService_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -228,7 +229,7 @@ func RegisterAgentLocalServiceHandler(ctx context.Context, mux *runtime.ServeMux // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AgentLocalServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AgentLocalServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AgentLocalServiceClient" to call the correct interceptors. +// "AgentLocalServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAgentLocalServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AgentLocalServiceClient) error { mux.Handle("POST", pattern_AgentLocalService_Status_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/agentlocal/v1/agentlocal_grpc.pb.go b/api/agentlocal/v1/agentlocal_grpc.pb.go index 8575d9db67..caaffdd9ea 100644 --- a/api/agentlocal/v1/agentlocal_grpc.pb.go +++ b/api/agentlocal/v1/agentlocal_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: agentlocal/v1/agentlocal.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AgentLocalService_Status_FullMethodName = "/agentlocal.v1.AgentLocalService/Status" @@ -66,7 +66,7 @@ func (c *agentLocalServiceClient) Reload(ctx context.Context, in *ReloadRequest, // AgentLocalServiceServer is the server API for AgentLocalService service. // All implementations must embed UnimplementedAgentLocalServiceServer -// for forward compatibility +// for forward compatibility. // // AgentLocal service provides public methods for checking pmm-agent status locally. type AgentLocalServiceServer interface { @@ -77,7 +77,11 @@ type AgentLocalServiceServer interface { mustEmbedUnimplementedAgentLocalServiceServer() } -// UnimplementedAgentLocalServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAgentLocalServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentLocalServiceServer struct{} func (UnimplementedAgentLocalServiceServer) Status(context.Context, *StatusRequest) (*StatusResponse, error) { @@ -88,6 +92,7 @@ func (UnimplementedAgentLocalServiceServer) Reload(context.Context, *ReloadReque return nil, status.Errorf(codes.Unimplemented, "method Reload not implemented") } func (UnimplementedAgentLocalServiceServer) mustEmbedUnimplementedAgentLocalServiceServer() {} +func (UnimplementedAgentLocalServiceServer) testEmbeddedByValue() {} // UnsafeAgentLocalServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentLocalServiceServer will @@ -97,6 +102,13 @@ type UnsafeAgentLocalServiceServer interface { } func RegisterAgentLocalServiceServer(s grpc.ServiceRegistrar, srv AgentLocalServiceServer) { + // If the following call pancis, it indicates UnimplementedAgentLocalServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AgentLocalService_ServiceDesc, srv) } diff --git a/api/alerting/v1/alerting.pb.gw.go b/api/alerting/v1/alerting.pb.gw.go index 30d3b577df..8edb3ca048 100644 --- a/api/alerting/v1/alerting.pb.gw.go +++ b/api/alerting/v1/alerting.pb.gw.go @@ -225,6 +225,7 @@ func local_request_AlertingService_CreateRule_0(ctx context.Context, marshaler r // UnaryRPC :call AlertingServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAlertingServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAlertingServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AlertingServiceServer) error { mux.Handle("GET", pattern_AlertingService_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -384,7 +385,7 @@ func RegisterAlertingServiceHandler(ctx context.Context, mux *runtime.ServeMux, // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AlertingServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AlertingServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AlertingServiceClient" to call the correct interceptors. +// "AlertingServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAlertingServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AlertingServiceClient) error { mux.Handle("GET", pattern_AlertingService_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/alerting/v1/alerting_grpc.pb.go b/api/alerting/v1/alerting_grpc.pb.go index e8b95b985f..94c17b63db 100644 --- a/api/alerting/v1/alerting_grpc.pb.go +++ b/api/alerting/v1/alerting_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: alerting/v1/alerting.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AlertingService_ListTemplates_FullMethodName = "/alerting.v1.AlertingService/ListTemplates" @@ -105,7 +105,7 @@ func (c *alertingServiceClient) CreateRule(ctx context.Context, in *CreateRuleRe // AlertingServiceServer is the server API for AlertingService service. // All implementations must embed UnimplementedAlertingServiceServer -// for forward compatibility +// for forward compatibility. // // Alerting service lets to manage alerting templates and create alerting rules from them. type AlertingServiceServer interface { @@ -122,7 +122,11 @@ type AlertingServiceServer interface { mustEmbedUnimplementedAlertingServiceServer() } -// UnimplementedAlertingServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAlertingServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAlertingServiceServer struct{} func (UnimplementedAlertingServiceServer) ListTemplates(context.Context, *ListTemplatesRequest) (*ListTemplatesResponse, error) { @@ -145,6 +149,7 @@ func (UnimplementedAlertingServiceServer) CreateRule(context.Context, *CreateRul return nil, status.Errorf(codes.Unimplemented, "method CreateRule not implemented") } func (UnimplementedAlertingServiceServer) mustEmbedUnimplementedAlertingServiceServer() {} +func (UnimplementedAlertingServiceServer) testEmbeddedByValue() {} // UnsafeAlertingServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AlertingServiceServer will @@ -154,6 +159,13 @@ type UnsafeAlertingServiceServer interface { } func RegisterAlertingServiceServer(s grpc.ServiceRegistrar, srv AlertingServiceServer) { + // If the following call pancis, it indicates UnimplementedAlertingServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AlertingService_ServiceDesc, srv) } diff --git a/api/backup/v1/backup.pb.gw.go b/api/backup/v1/backup.pb.gw.go index e72749708f..65d84b9c88 100644 --- a/api/backup/v1/backup.pb.gw.go +++ b/api/backup/v1/backup.pb.gw.go @@ -423,6 +423,7 @@ func local_request_BackupService_ListPitrTimeranges_0(ctx context.Context, marsh // UnaryRPC :call BackupServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterBackupServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterBackupServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server BackupServiceServer) error { mux.Handle("POST", pattern_BackupService_StartBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -702,7 +703,7 @@ func RegisterBackupServiceHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "BackupServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "BackupServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "BackupServiceClient" to call the correct interceptors. +// "BackupServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterBackupServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client BackupServiceClient) error { mux.Handle("POST", pattern_BackupService_StartBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/backup/v1/backup_grpc.pb.go b/api/backup/v1/backup_grpc.pb.go index 85a46afffa..42c2f58561 100644 --- a/api/backup/v1/backup_grpc.pb.go +++ b/api/backup/v1/backup_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: backup/v1/backup.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( BackupService_StartBackup_FullMethodName = "/backup.v1.BackupService/StartBackup" @@ -170,7 +170,7 @@ func (c *backupServiceClient) ListPitrTimeranges(ctx context.Context, in *ListPi // BackupServiceServer is the server API for BackupService service. // All implementations must embed UnimplementedBackupServiceServer -// for forward compatibility +// for forward compatibility. // // Backups service handles backup operations to DB. type BackupServiceServer interface { @@ -197,7 +197,11 @@ type BackupServiceServer interface { mustEmbedUnimplementedBackupServiceServer() } -// UnimplementedBackupServiceServer must be embedded to have forward compatible implementations. +// UnimplementedBackupServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedBackupServiceServer struct{} func (UnimplementedBackupServiceServer) StartBackup(context.Context, *StartBackupRequest) (*StartBackupResponse, error) { @@ -240,6 +244,7 @@ func (UnimplementedBackupServiceServer) ListPitrTimeranges(context.Context, *Lis return nil, status.Errorf(codes.Unimplemented, "method ListPitrTimeranges not implemented") } func (UnimplementedBackupServiceServer) mustEmbedUnimplementedBackupServiceServer() {} +func (UnimplementedBackupServiceServer) testEmbeddedByValue() {} // UnsafeBackupServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to BackupServiceServer will @@ -249,6 +254,13 @@ type UnsafeBackupServiceServer interface { } func RegisterBackupServiceServer(s grpc.ServiceRegistrar, srv BackupServiceServer) { + // If the following call pancis, it indicates UnimplementedBackupServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&BackupService_ServiceDesc, srv) } diff --git a/api/backup/v1/locations.pb.gw.go b/api/backup/v1/locations.pb.gw.go index 9db00fd1d8..63fe8d8483 100644 --- a/api/backup/v1/locations.pb.gw.go +++ b/api/backup/v1/locations.pb.gw.go @@ -225,6 +225,7 @@ func local_request_LocationsService_TestLocationConfig_0(ctx context.Context, ma // UnaryRPC :call LocationsServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterLocationsServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterLocationsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server LocationsServiceServer) error { mux.Handle("GET", pattern_LocationsService_ListLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -384,7 +385,7 @@ func RegisterLocationsServiceHandler(ctx context.Context, mux *runtime.ServeMux, // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "LocationsServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "LocationsServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "LocationsServiceClient" to call the correct interceptors. +// "LocationsServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterLocationsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client LocationsServiceClient) error { mux.Handle("GET", pattern_LocationsService_ListLocations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/backup/v1/locations_grpc.pb.go b/api/backup/v1/locations_grpc.pb.go index 6ac76578da..748f7a20ad 100644 --- a/api/backup/v1/locations_grpc.pb.go +++ b/api/backup/v1/locations_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: backup/v1/locations.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( LocationsService_ListLocations_FullMethodName = "/backup.v1.LocationsService/ListLocations" @@ -105,7 +105,7 @@ func (c *locationsServiceClient) TestLocationConfig(ctx context.Context, in *Tes // LocationsServiceServer is the server API for LocationsService service. // All implementations must embed UnimplementedLocationsServiceServer -// for forward compatibility +// for forward compatibility. // // Locations service provides access to Backup Locations. type LocationsServiceServer interface { @@ -122,7 +122,11 @@ type LocationsServiceServer interface { mustEmbedUnimplementedLocationsServiceServer() } -// UnimplementedLocationsServiceServer must be embedded to have forward compatible implementations. +// UnimplementedLocationsServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedLocationsServiceServer struct{} func (UnimplementedLocationsServiceServer) ListLocations(context.Context, *ListLocationsRequest) (*ListLocationsResponse, error) { @@ -145,6 +149,7 @@ func (UnimplementedLocationsServiceServer) TestLocationConfig(context.Context, * return nil, status.Errorf(codes.Unimplemented, "method TestLocationConfig not implemented") } func (UnimplementedLocationsServiceServer) mustEmbedUnimplementedLocationsServiceServer() {} +func (UnimplementedLocationsServiceServer) testEmbeddedByValue() {} // UnsafeLocationsServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to LocationsServiceServer will @@ -154,6 +159,13 @@ type UnsafeLocationsServiceServer interface { } func RegisterLocationsServiceServer(s grpc.ServiceRegistrar, srv LocationsServiceServer) { + // If the following call pancis, it indicates UnimplementedLocationsServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&LocationsService_ServiceDesc, srv) } diff --git a/api/backup/v1/restores.pb.gw.go b/api/backup/v1/restores.pb.gw.go index 86fe9e5af2..a23df5f9d3 100644 --- a/api/backup/v1/restores.pb.gw.go +++ b/api/backup/v1/restores.pb.gw.go @@ -143,6 +143,7 @@ func local_request_RestoreService_RestoreBackup_0(ctx context.Context, marshaler // UnaryRPC :call RestoreServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterRestoreServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterRestoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server RestoreServiceServer) error { mux.Handle("GET", pattern_RestoreService_ListRestores_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -254,7 +255,7 @@ func RegisterRestoreServiceHandler(ctx context.Context, mux *runtime.ServeMux, c // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "RestoreServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "RestoreServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "RestoreServiceClient" to call the correct interceptors. +// "RestoreServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterRestoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client RestoreServiceClient) error { mux.Handle("GET", pattern_RestoreService_ListRestores_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/backup/v1/restores_grpc.pb.go b/api/backup/v1/restores_grpc.pb.go index 0b6dd4ea96..e1371c479f 100644 --- a/api/backup/v1/restores_grpc.pb.go +++ b/api/backup/v1/restores_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: backup/v1/restores.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( RestoreService_ListRestores_FullMethodName = "/backup.v1.RestoreService/ListRestores" @@ -79,7 +79,7 @@ func (c *restoreServiceClient) RestoreBackup(ctx context.Context, in *RestoreBac // RestoreServiceServer is the server API for RestoreService service. // All implementations must embed UnimplementedRestoreServiceServer -// for forward compatibility +// for forward compatibility. // // RestoreService provides public methods for managing backup restore history. type RestoreServiceServer interface { @@ -92,7 +92,11 @@ type RestoreServiceServer interface { mustEmbedUnimplementedRestoreServiceServer() } -// UnimplementedRestoreServiceServer must be embedded to have forward compatible implementations. +// UnimplementedRestoreServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedRestoreServiceServer struct{} func (UnimplementedRestoreServiceServer) ListRestores(context.Context, *ListRestoresRequest) (*ListRestoresResponse, error) { @@ -107,6 +111,7 @@ func (UnimplementedRestoreServiceServer) RestoreBackup(context.Context, *Restore return nil, status.Errorf(codes.Unimplemented, "method RestoreBackup not implemented") } func (UnimplementedRestoreServiceServer) mustEmbedUnimplementedRestoreServiceServer() {} +func (UnimplementedRestoreServiceServer) testEmbeddedByValue() {} // UnsafeRestoreServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RestoreServiceServer will @@ -116,6 +121,13 @@ type UnsafeRestoreServiceServer interface { } func RegisterRestoreServiceServer(s grpc.ServiceRegistrar, srv RestoreServiceServer) { + // If the following call pancis, it indicates UnimplementedRestoreServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&RestoreService_ServiceDesc, srv) } diff --git a/api/dump/v1beta1/dump.pb.gw.go b/api/dump/v1beta1/dump.pb.gw.go index 952aa0cad0..3ffa7d594e 100644 --- a/api/dump/v1beta1/dump.pb.gw.go +++ b/api/dump/v1beta1/dump.pb.gw.go @@ -191,6 +191,7 @@ func local_request_DumpService_UploadDump_0(ctx context.Context, marshaler runti // UnaryRPC :call DumpServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterDumpServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterDumpServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server DumpServiceServer) error { mux.Handle("POST", pattern_DumpService_StartDump_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -350,7 +351,7 @@ func RegisterDumpServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "DumpServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "DumpServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "DumpServiceClient" to call the correct interceptors. +// "DumpServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterDumpServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client DumpServiceClient) error { mux.Handle("POST", pattern_DumpService_StartDump_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/dump/v1beta1/dump_grpc.pb.go b/api/dump/v1beta1/dump_grpc.pb.go index 3edb5c395f..5b859aafc6 100644 --- a/api/dump/v1beta1/dump_grpc.pb.go +++ b/api/dump/v1beta1/dump_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: dump/v1beta1/dump.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( DumpService_StartDump_FullMethodName = "/dump.v1beta1.DumpService/StartDump" @@ -103,7 +103,7 @@ func (c *dumpServiceClient) UploadDump(ctx context.Context, in *UploadDumpReques // DumpServiceServer is the server API for DumpService service. // All implementations must embed UnimplementedDumpServiceServer -// for forward compatibility +// for forward compatibility. type DumpServiceServer interface { // StartDump request creates pmm dump. StartDump(context.Context, *StartDumpRequest) (*StartDumpResponse, error) @@ -118,7 +118,11 @@ type DumpServiceServer interface { mustEmbedUnimplementedDumpServiceServer() } -// UnimplementedDumpServiceServer must be embedded to have forward compatible implementations. +// UnimplementedDumpServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedDumpServiceServer struct{} func (UnimplementedDumpServiceServer) StartDump(context.Context, *StartDumpRequest) (*StartDumpResponse, error) { @@ -141,6 +145,7 @@ func (UnimplementedDumpServiceServer) UploadDump(context.Context, *UploadDumpReq return nil, status.Errorf(codes.Unimplemented, "method UploadDump not implemented") } func (UnimplementedDumpServiceServer) mustEmbedUnimplementedDumpServiceServer() {} +func (UnimplementedDumpServiceServer) testEmbeddedByValue() {} // UnsafeDumpServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to DumpServiceServer will @@ -150,6 +155,13 @@ type UnsafeDumpServiceServer interface { } func RegisterDumpServiceServer(s grpc.ServiceRegistrar, srv DumpServiceServer) { + // If the following call pancis, it indicates UnimplementedDumpServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&DumpService_ServiceDesc, srv) } diff --git a/api/inventory/v1/agents.pb.gw.go b/api/inventory/v1/agents.pb.gw.go index 3aa3815845..ea823e5f0f 100644 --- a/api/inventory/v1/agents.pb.gw.go +++ b/api/inventory/v1/agents.pb.gw.go @@ -333,6 +333,7 @@ func local_request_AgentsService_RemoveAgent_0(ctx context.Context, marshaler ru // UnaryRPC :call AgentsServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAgentsServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterAgentsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AgentsServiceServer) error { mux.Handle("GET", pattern_AgentsService_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -516,7 +517,7 @@ func RegisterAgentsServiceHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AgentsServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AgentsServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "AgentsServiceClient" to call the correct interceptors. +// "AgentsServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterAgentsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AgentsServiceClient) error { mux.Handle("GET", pattern_AgentsService_ListAgents_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventory/v1/agents_grpc.pb.go b/api/inventory/v1/agents_grpc.pb.go index 49c5ad1067..5b26504a01 100644 --- a/api/inventory/v1/agents_grpc.pb.go +++ b/api/inventory/v1/agents_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventory/v1/agents.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( AgentsService_ListAgents_FullMethodName = "/inventory.v1.AgentsService/ListAgents" @@ -118,7 +118,7 @@ func (c *agentsServiceClient) RemoveAgent(ctx context.Context, in *RemoveAgentRe // AgentsServiceServer is the server API for AgentsService service. // All implementations must embed UnimplementedAgentsServiceServer -// for forward compatibility +// for forward compatibility. // // Agents service provides public methods for managing Agents. type AgentsServiceServer interface { @@ -137,7 +137,11 @@ type AgentsServiceServer interface { mustEmbedUnimplementedAgentsServiceServer() } -// UnimplementedAgentsServiceServer must be embedded to have forward compatible implementations. +// UnimplementedAgentsServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedAgentsServiceServer struct{} func (UnimplementedAgentsServiceServer) ListAgents(context.Context, *ListAgentsRequest) (*ListAgentsResponse, error) { @@ -164,6 +168,7 @@ func (UnimplementedAgentsServiceServer) RemoveAgent(context.Context, *RemoveAgen return nil, status.Errorf(codes.Unimplemented, "method RemoveAgent not implemented") } func (UnimplementedAgentsServiceServer) mustEmbedUnimplementedAgentsServiceServer() {} +func (UnimplementedAgentsServiceServer) testEmbeddedByValue() {} // UnsafeAgentsServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to AgentsServiceServer will @@ -173,6 +178,13 @@ type UnsafeAgentsServiceServer interface { } func RegisterAgentsServiceServer(s grpc.ServiceRegistrar, srv AgentsServiceServer) { + // If the following call pancis, it indicates UnimplementedAgentsServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&AgentsService_ServiceDesc, srv) } diff --git a/api/inventory/v1/nodes.pb.gw.go b/api/inventory/v1/nodes.pb.gw.go index 1a09054da1..b6ee5b6c38 100644 --- a/api/inventory/v1/nodes.pb.gw.go +++ b/api/inventory/v1/nodes.pb.gw.go @@ -209,6 +209,7 @@ func local_request_NodesService_RemoveNode_0(ctx context.Context, marshaler runt // UnaryRPC :call NodesServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterNodesServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterNodesServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server NodesServiceServer) error { mux.Handle("GET", pattern_NodesService_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -344,7 +345,7 @@ func RegisterNodesServiceHandler(ctx context.Context, mux *runtime.ServeMux, con // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "NodesServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "NodesServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "NodesServiceClient" to call the correct interceptors. +// "NodesServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterNodesServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client NodesServiceClient) error { mux.Handle("GET", pattern_NodesService_ListNodes_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventory/v1/nodes_grpc.pb.go b/api/inventory/v1/nodes_grpc.pb.go index 9f3e952b28..86f5ff2104 100644 --- a/api/inventory/v1/nodes_grpc.pb.go +++ b/api/inventory/v1/nodes_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventory/v1/nodes.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( NodesService_ListNodes_FullMethodName = "/inventory.v1.NodesService/ListNodes" @@ -92,7 +92,7 @@ func (c *nodesServiceClient) RemoveNode(ctx context.Context, in *RemoveNodeReque // NodesServiceServer is the server API for NodesService service. // All implementations must embed UnimplementedNodesServiceServer -// for forward compatibility +// for forward compatibility. // // Nodes service provides public methods for managing Nodes. type NodesServiceServer interface { @@ -107,7 +107,11 @@ type NodesServiceServer interface { mustEmbedUnimplementedNodesServiceServer() } -// UnimplementedNodesServiceServer must be embedded to have forward compatible implementations. +// UnimplementedNodesServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedNodesServiceServer struct{} func (UnimplementedNodesServiceServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { @@ -126,6 +130,7 @@ func (UnimplementedNodesServiceServer) RemoveNode(context.Context, *RemoveNodeRe return nil, status.Errorf(codes.Unimplemented, "method RemoveNode not implemented") } func (UnimplementedNodesServiceServer) mustEmbedUnimplementedNodesServiceServer() {} +func (UnimplementedNodesServiceServer) testEmbeddedByValue() {} // UnsafeNodesServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to NodesServiceServer will @@ -135,6 +140,13 @@ type UnsafeNodesServiceServer interface { } func RegisterNodesServiceServer(s grpc.ServiceRegistrar, srv NodesServiceServer) { + // If the following call pancis, it indicates UnimplementedNodesServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&NodesService_ServiceDesc, srv) } diff --git a/api/inventory/v1/services.pb.gw.go b/api/inventory/v1/services.pb.gw.go index 99b7eba49d..77a826da39 100644 --- a/api/inventory/v1/services.pb.gw.go +++ b/api/inventory/v1/services.pb.gw.go @@ -291,6 +291,7 @@ func local_request_ServicesService_ChangeService_0(ctx context.Context, marshale // UnaryRPC :call ServicesServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServicesServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterServicesServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServicesServiceServer) error { mux.Handle("GET", pattern_ServicesService_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -474,7 +475,7 @@ func RegisterServicesServiceHandler(ctx context.Context, mux *runtime.ServeMux, // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServicesServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServicesServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ServicesServiceClient" to call the correct interceptors. +// "ServicesServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterServicesServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServicesServiceClient) error { mux.Handle("GET", pattern_ServicesService_ListServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/inventory/v1/services_grpc.pb.go b/api/inventory/v1/services_grpc.pb.go index 049c6bbab4..55a382a871 100644 --- a/api/inventory/v1/services_grpc.pb.go +++ b/api/inventory/v1/services_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: inventory/v1/services.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ServicesService_ListServices_FullMethodName = "/inventory.v1.ServicesService/ListServices" @@ -118,7 +118,7 @@ func (c *servicesServiceClient) ChangeService(ctx context.Context, in *ChangeSer // ServicesServiceServer is the server API for ServicesService service. // All implementations must embed UnimplementedServicesServiceServer -// for forward compatibility +// for forward compatibility. // // Services service provides public methods for managing Services. type ServicesServiceServer interface { @@ -137,7 +137,11 @@ type ServicesServiceServer interface { mustEmbedUnimplementedServicesServiceServer() } -// UnimplementedServicesServiceServer must be embedded to have forward compatible implementations. +// UnimplementedServicesServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedServicesServiceServer struct{} func (UnimplementedServicesServiceServer) ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) { @@ -164,6 +168,7 @@ func (UnimplementedServicesServiceServer) ChangeService(context.Context, *Change return nil, status.Errorf(codes.Unimplemented, "method ChangeService not implemented") } func (UnimplementedServicesServiceServer) mustEmbedUnimplementedServicesServiceServer() {} +func (UnimplementedServicesServiceServer) testEmbeddedByValue() {} // UnsafeServicesServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServicesServiceServer will @@ -173,6 +178,13 @@ type UnsafeServicesServiceServer interface { } func RegisterServicesServiceServer(s grpc.ServiceRegistrar, srv ServicesServiceServer) { + // If the following call pancis, it indicates UnimplementedServicesServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ServicesService_ServiceDesc, srv) } diff --git a/api/management/v1/service.pb.gw.go b/api/management/v1/service.pb.gw.go index 70448811f9..b71f27c3f6 100644 --- a/api/management/v1/service.pb.gw.go +++ b/api/management/v1/service.pb.gw.go @@ -475,6 +475,7 @@ func local_request_ManagementService_RemoveService_0(ctx context.Context, marsha // UnaryRPC :call ManagementServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterManagementServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterManagementServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ManagementServiceServer) error { mux.Handle("POST", pattern_ManagementService_AddAnnotation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -826,7 +827,7 @@ func RegisterManagementServiceHandler(ctx context.Context, mux *runtime.ServeMux // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ManagementServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ManagementServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ManagementServiceClient" to call the correct interceptors. +// "ManagementServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ManagementServiceClient) error { mux.Handle("POST", pattern_ManagementService_AddAnnotation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/management/v1/service_grpc.pb.go b/api/management/v1/service_grpc.pb.go index 20cd067916..476fd197e4 100644 --- a/api/management/v1/service_grpc.pb.go +++ b/api/management/v1/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: management/v1/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ManagementService_AddAnnotation_FullMethodName = "/management.v1.ManagementService/AddAnnotation" @@ -209,7 +209,7 @@ func (c *managementServiceClient) RemoveService(ctx context.Context, in *RemoveS // ManagementServiceServer is the server API for ManagementService service. // All implementations must embed UnimplementedManagementServiceServer -// for forward compatibility +// for forward compatibility. // // ManagementService provides public methods for managing and querying Services. type ManagementServiceServer interface { @@ -242,7 +242,11 @@ type ManagementServiceServer interface { mustEmbedUnimplementedManagementServiceServer() } -// UnimplementedManagementServiceServer must be embedded to have forward compatible implementations. +// UnimplementedManagementServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedManagementServiceServer struct{} func (UnimplementedManagementServiceServer) AddAnnotation(context.Context, *AddAnnotationRequest) (*AddAnnotationResponse, error) { @@ -297,6 +301,7 @@ func (UnimplementedManagementServiceServer) RemoveService(context.Context, *Remo return nil, status.Errorf(codes.Unimplemented, "method RemoveService not implemented") } func (UnimplementedManagementServiceServer) mustEmbedUnimplementedManagementServiceServer() {} +func (UnimplementedManagementServiceServer) testEmbeddedByValue() {} // UnsafeManagementServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ManagementServiceServer will @@ -306,6 +311,13 @@ type UnsafeManagementServiceServer interface { } func RegisterManagementServiceServer(s grpc.ServiceRegistrar, srv ManagementServiceServer) { + // If the following call pancis, it indicates UnimplementedManagementServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ManagementService_ServiceDesc, srv) } diff --git a/api/platform/v1/platform.pb.gw.go b/api/platform/v1/platform.pb.gw.go index 5f679e02d2..06cfee4c9e 100644 --- a/api/platform/v1/platform.pb.gw.go +++ b/api/platform/v1/platform.pb.gw.go @@ -165,6 +165,7 @@ func local_request_PlatformService_UserStatus_0(ctx context.Context, marshaler r // UnaryRPC :call PlatformServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPlatformServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterPlatformServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PlatformServiceServer) error { mux.Handle("POST", pattern_PlatformService_Connect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -372,7 +373,7 @@ func RegisterPlatformServiceHandler(ctx context.Context, mux *runtime.ServeMux, // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PlatformServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PlatformServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "PlatformServiceClient" to call the correct interceptors. +// "PlatformServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterPlatformServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PlatformServiceClient) error { mux.Handle("POST", pattern_PlatformService_Connect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/platform/v1/platform_grpc.pb.go b/api/platform/v1/platform_grpc.pb.go index c327764dd0..42cadaab2d 100644 --- a/api/platform/v1/platform_grpc.pb.go +++ b/api/platform/v1/platform_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: platform/v1/platform.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( PlatformService_Connect_FullMethodName = "/platform.v1.PlatformService/Connect" @@ -131,7 +131,7 @@ func (c *platformServiceClient) UserStatus(ctx context.Context, in *UserStatusRe // PlatformServiceServer is the server API for PlatformService service. // All implementations must embed UnimplementedPlatformServiceServer -// for forward compatibility +// for forward compatibility. // // Platform contains rpcs related to Percona Platform. type PlatformServiceServer interface { @@ -152,7 +152,11 @@ type PlatformServiceServer interface { mustEmbedUnimplementedPlatformServiceServer() } -// UnimplementedPlatformServiceServer must be embedded to have forward compatible implementations. +// UnimplementedPlatformServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedPlatformServiceServer struct{} func (UnimplementedPlatformServiceServer) Connect(context.Context, *ConnectRequest) (*ConnectResponse, error) { @@ -183,6 +187,7 @@ func (UnimplementedPlatformServiceServer) UserStatus(context.Context, *UserStatu return nil, status.Errorf(codes.Unimplemented, "method UserStatus not implemented") } func (UnimplementedPlatformServiceServer) mustEmbedUnimplementedPlatformServiceServer() {} +func (UnimplementedPlatformServiceServer) testEmbeddedByValue() {} // UnsafePlatformServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to PlatformServiceServer will @@ -192,6 +197,13 @@ type UnsafePlatformServiceServer interface { } func RegisterPlatformServiceServer(s grpc.ServiceRegistrar, srv PlatformServiceServer) { + // If the following call pancis, it indicates UnimplementedPlatformServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&PlatformService_ServiceDesc, srv) } diff --git a/api/qan/v1/collector_grpc.pb.go b/api/qan/v1/collector_grpc.pb.go index 86985e04aa..27f7ffbcdd 100644 --- a/api/qan/v1/collector_grpc.pb.go +++ b/api/qan/v1/collector_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qan/v1/collector.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( CollectorService_Collect_FullMethodName = "/qan.v1.CollectorService/Collect" @@ -53,7 +53,7 @@ func (c *collectorServiceClient) Collect(ctx context.Context, in *CollectRequest // CollectorServiceServer is the server API for CollectorService service. // All implementations must embed UnimplementedCollectorServiceServer -// for forward compatibility +// for forward compatibility. // // Collector service accepts data from pmm-agent (via pmm-managed). type CollectorServiceServer interface { @@ -62,13 +62,18 @@ type CollectorServiceServer interface { mustEmbedUnimplementedCollectorServiceServer() } -// UnimplementedCollectorServiceServer must be embedded to have forward compatible implementations. +// UnimplementedCollectorServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedCollectorServiceServer struct{} func (UnimplementedCollectorServiceServer) Collect(context.Context, *CollectRequest) (*CollectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Collect not implemented") } func (UnimplementedCollectorServiceServer) mustEmbedUnimplementedCollectorServiceServer() {} +func (UnimplementedCollectorServiceServer) testEmbeddedByValue() {} // UnsafeCollectorServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to CollectorServiceServer will @@ -78,6 +83,13 @@ type UnsafeCollectorServiceServer interface { } func RegisterCollectorServiceServer(s grpc.ServiceRegistrar, srv CollectorServiceServer) { + // If the following call pancis, it indicates UnimplementedCollectorServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&CollectorService_ServiceDesc, srv) } diff --git a/api/qan/v1/service.pb.gw.go b/api/qan/v1/service.pb.gw.go index d6c3596154..7046112486 100644 --- a/api/qan/v1/service.pb.gw.go +++ b/api/qan/v1/service.pb.gw.go @@ -327,6 +327,7 @@ func local_request_QANService_GetQueryExample_0(ctx context.Context, marshaler r // UnaryRPC :call QANServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQANServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterQANServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QANServiceServer) error { mux.Handle("POST", pattern_QANService_GetReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -630,7 +631,7 @@ func RegisterQANServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QANServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QANServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "QANServiceClient" to call the correct interceptors. +// "QANServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterQANServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QANServiceClient) error { mux.Handle("POST", pattern_QANService_GetReport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/qan/v1/service_grpc.pb.go b/api/qan/v1/service_grpc.pb.go index 515e11c5df..75fc7b8118 100644 --- a/api/qan/v1/service_grpc.pb.go +++ b/api/qan/v1/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: qan/v1/service.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( QANService_GetReport_FullMethodName = "/qan.v1.QANService/GetReport" @@ -183,7 +183,7 @@ func (c *qANServiceClient) GetQueryExample(ctx context.Context, in *GetQueryExam // QANServiceServer is the server API for QANService service. // All implementations must embed UnimplementedQANServiceServer -// for forward compatibility +// for forward compatibility. // // QANService provides an API to interact with PMM Query Analytics. type QANServiceServer interface { @@ -212,7 +212,11 @@ type QANServiceServer interface { mustEmbedUnimplementedQANServiceServer() } -// UnimplementedQANServiceServer must be embedded to have forward compatible implementations. +// UnimplementedQANServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedQANServiceServer struct{} func (UnimplementedQANServiceServer) GetReport(context.Context, *GetReportRequest) (*GetReportResponse, error) { @@ -259,6 +263,7 @@ func (UnimplementedQANServiceServer) GetQueryExample(context.Context, *GetQueryE return nil, status.Errorf(codes.Unimplemented, "method GetQueryExample not implemented") } func (UnimplementedQANServiceServer) mustEmbedUnimplementedQANServiceServer() {} +func (UnimplementedQANServiceServer) testEmbeddedByValue() {} // UnsafeQANServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to QANServiceServer will @@ -268,6 +273,13 @@ type UnsafeQANServiceServer interface { } func RegisterQANServiceServer(s grpc.ServiceRegistrar, srv QANServiceServer) { + // If the following call pancis, it indicates UnimplementedQANServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&QANService_ServiceDesc, srv) } diff --git a/api/server/v1/server.pb.gw.go b/api/server/v1/server.pb.gw.go index ba65789293..07e35fb1ec 100644 --- a/api/server/v1/server.pb.gw.go +++ b/api/server/v1/server.pb.gw.go @@ -221,6 +221,7 @@ func local_request_ServerService_ChangeSettings_0(ctx context.Context, marshaler // UnaryRPC :call ServerServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterServerServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterServerServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ServerServiceServer) error { mux.Handle("GET", pattern_ServerService_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -452,7 +453,7 @@ func RegisterServerServiceHandler(ctx context.Context, mux *runtime.ServeMux, co // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ServerServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ServerServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "ServerServiceClient" to call the correct interceptors. +// "ServerServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterServerServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ServerServiceClient) error { mux.Handle("GET", pattern_ServerService_Version_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/server/v1/server_grpc.pb.go b/api/server/v1/server_grpc.pb.go index 528ca59472..708f24cadf 100644 --- a/api/server/v1/server_grpc.pb.go +++ b/api/server/v1/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: server/v1/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ServerService_Version_FullMethodName = "/server.v1.ServerService/Version" @@ -145,7 +145,7 @@ func (c *serverServiceClient) ChangeSettings(ctx context.Context, in *ChangeSett // ServerServiceServer is the server API for ServerService service. // All implementations must embed UnimplementedServerServiceServer -// for forward compatibility +// for forward compatibility. // // Server service provides generic PMM Server public APIs. type ServerServiceServer interface { @@ -169,7 +169,11 @@ type ServerServiceServer interface { mustEmbedUnimplementedServerServiceServer() } -// UnimplementedServerServiceServer must be embedded to have forward compatible implementations. +// UnimplementedServerServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedServerServiceServer struct{} func (UnimplementedServerServiceServer) Version(context.Context, *VersionRequest) (*VersionResponse, error) { @@ -204,6 +208,7 @@ func (UnimplementedServerServiceServer) ChangeSettings(context.Context, *ChangeS return nil, status.Errorf(codes.Unimplemented, "method ChangeSettings not implemented") } func (UnimplementedServerServiceServer) mustEmbedUnimplementedServerServiceServer() {} +func (UnimplementedServerServiceServer) testEmbeddedByValue() {} // UnsafeServerServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServerServiceServer will @@ -213,6 +218,13 @@ type UnsafeServerServiceServer interface { } func RegisterServerServiceServer(s grpc.ServiceRegistrar, srv ServerServiceServer) { + // If the following call pancis, it indicates UnimplementedServerServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ServerService_ServiceDesc, srv) } diff --git a/api/uievents/v1/server.pb.gw.go b/api/uievents/v1/server.pb.gw.go index f2478069f3..784ea0403f 100644 --- a/api/uievents/v1/server.pb.gw.go +++ b/api/uievents/v1/server.pb.gw.go @@ -61,6 +61,7 @@ func local_request_UIEventsService_Store_0(ctx context.Context, marshaler runtim // UnaryRPC :call UIEventsServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterUIEventsServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterUIEventsServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UIEventsServiceServer) error { mux.Handle("POST", pattern_UIEventsService_Store_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -124,7 +125,7 @@ func RegisterUIEventsServiceHandler(ctx context.Context, mux *runtime.ServeMux, // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UIEventsServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UIEventsServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "UIEventsServiceClient" to call the correct interceptors. +// "UIEventsServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterUIEventsServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UIEventsServiceClient) error { mux.Handle("POST", pattern_UIEventsService_Store_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/uievents/v1/server_grpc.pb.go b/api/uievents/v1/server_grpc.pb.go index cc19473033..b763803e1f 100644 --- a/api/uievents/v1/server_grpc.pb.go +++ b/api/uievents/v1/server_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: uievents/v1/server.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( UIEventsService_Store_FullMethodName = "/uievents.v1.UIEventsService/Store" @@ -53,7 +53,7 @@ func (c *uIEventsServiceClient) Store(ctx context.Context, in *StoreRequest, opt // UIEventsServiceServer is the server API for UIEventsService service. // All implementations must embed UnimplementedUIEventsServiceServer -// for forward compatibility +// for forward compatibility. // // UIEvents collects UI related events. type UIEventsServiceServer interface { @@ -62,13 +62,18 @@ type UIEventsServiceServer interface { mustEmbedUnimplementedUIEventsServiceServer() } -// UnimplementedUIEventsServiceServer must be embedded to have forward compatible implementations. +// UnimplementedUIEventsServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedUIEventsServiceServer struct{} func (UnimplementedUIEventsServiceServer) Store(context.Context, *StoreRequest) (*StoreResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Store not implemented") } func (UnimplementedUIEventsServiceServer) mustEmbedUnimplementedUIEventsServiceServer() {} +func (UnimplementedUIEventsServiceServer) testEmbeddedByValue() {} // UnsafeUIEventsServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to UIEventsServiceServer will @@ -78,6 +83,13 @@ type UnsafeUIEventsServiceServer interface { } func RegisterUIEventsServiceServer(s grpc.ServiceRegistrar, srv UIEventsServiceServer) { + // If the following call pancis, it indicates UnimplementedUIEventsServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&UIEventsService_ServiceDesc, srv) } diff --git a/api/user/v1/user.pb.gw.go b/api/user/v1/user.pb.gw.go index 569a694ec4..890714f191 100644 --- a/api/user/v1/user.pb.gw.go +++ b/api/user/v1/user.pb.gw.go @@ -93,6 +93,7 @@ func local_request_UserService_ListUsers_0(ctx context.Context, marshaler runtim // UnaryRPC :call UserServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterUserServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. func RegisterUserServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UserServiceServer) error { mux.Handle("GET", pattern_UserService_GetUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) @@ -204,7 +205,7 @@ func RegisterUserServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UserServiceClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UserServiceClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "UserServiceClient" to call the correct interceptors. +// "UserServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. func RegisterUserServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UserServiceClient) error { mux.Handle("GET", pattern_UserService_GetUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) diff --git a/api/user/v1/user_grpc.pb.go b/api/user/v1/user_grpc.pb.go index 79a5949497..2a74efe6ff 100644 --- a/api/user/v1/user_grpc.pb.go +++ b/api/user/v1/user_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.4.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc (unknown) // source: user/v1/user.proto @@ -16,8 +16,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.62.0 or later. -const _ = grpc.SupportPackageIsVersion8 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( UserService_GetUser_FullMethodName = "/user.v1.UserService/GetUser" @@ -76,7 +76,7 @@ func (c *userServiceClient) ListUsers(ctx context.Context, in *ListUsersRequest, // UserServiceServer is the server API for UserService service. // All implementations must embed UnimplementedUserServiceServer -// for forward compatibility +// for forward compatibility. // // UserService contains rpcs related to user data type UserServiceServer interface { @@ -86,7 +86,11 @@ type UserServiceServer interface { mustEmbedUnimplementedUserServiceServer() } -// UnimplementedUserServiceServer must be embedded to have forward compatible implementations. +// UnimplementedUserServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. type UnimplementedUserServiceServer struct{} func (UnimplementedUserServiceServer) GetUser(context.Context, *GetUserRequest) (*GetUserResponse, error) { @@ -101,6 +105,7 @@ func (UnimplementedUserServiceServer) ListUsers(context.Context, *ListUsersReque return nil, status.Errorf(codes.Unimplemented, "method ListUsers not implemented") } func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServiceServer() {} +func (UnimplementedUserServiceServer) testEmbeddedByValue() {} // UnsafeUserServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to UserServiceServer will @@ -110,6 +115,13 @@ type UnsafeUserServiceServer interface { } func RegisterUserServiceServer(s grpc.ServiceRegistrar, srv UserServiceServer) { + // If the following call pancis, it indicates UnimplementedUserServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&UserService_ServiceDesc, srv) } From 663b79a98662b0a00baecc9e993c8f01c5ee9869 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:27:30 +0200 Subject: [PATCH 49/70] Bump github.com/docker/docker in /tools in the go_modules group (#3146) Bumps the go_modules group in /tools with 1 update: [github.com/docker/docker](https://github.com/docker/docker). Updates `github.com/docker/docker` from 27.1.0+incompatible to 27.1.1+incompatible - [Release notes](https://github.com/docker/docker/releases) - [Commits](https://github.com/docker/docker/compare/v27.1.0...v27.1.1) --- updated-dependencies: - dependency-name: github.com/docker/docker dependency-type: indirect dependency-group: go_modules ... 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 ced0cc8631..9129c3d9dc 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -68,7 +68,7 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v26.1.4+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.0+incompatible // indirect + github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 178a3f9bb4..152c2cc8ce 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -171,8 +171,8 @@ github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwen github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= -github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= +github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= From a75bf90d4a458ed0ca915b337fb99d3eb96a4682 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 07:39:29 +0000 Subject: [PATCH 50/70] Bump github.com/envoyproxy/protoc-gen-validate from 1.0.4 to 1.1.0 (#3145) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/envoyproxy/protoc-gen-validate](https://github.com/envoyproxy/protoc-gen-validate) from 1.0.4 to 1.1.0. - [Release notes](https://github.com/envoyproxy/protoc-gen-validate/releases) - [Changelog](https://github.com/bufbuild/protoc-gen-validate/blob/main/.goreleaser.yaml) - [Commits](https://github.com/envoyproxy/protoc-gen-validate/compare/v1.0.4...v1.1.0) --- updated-dependencies: - dependency-name: github.com/envoyproxy/protoc-gen-validate 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: Jiří Čtvrtka <62988319+JiriCtvrtka@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 8859589f17..3e72751dfb 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/docker/docker v25.0.3+incompatible github.com/docker/go-connections v0.5.0 - github.com/envoyproxy/protoc-gen-validate v1.0.4 + github.com/envoyproxy/protoc-gen-validate v1.1.0 github.com/go-co-op/gocron v1.37.0 github.com/go-openapi/errors v0.22.0 github.com/go-openapi/runtime v0.28.0 diff --git a/go.sum b/go.sum index 9735fa6fe1..861706e8d4 100644 --- a/go.sum +++ b/go.sum @@ -206,8 +206,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= From f78a793e8b44eb2b69f90c70a1acb9a8d433aaf4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 14:02:52 +0300 Subject: [PATCH 51/70] Bump golang.org/x/sys from 0.23.0 to 0.24.0 (#3147) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.23.0 to 0.24.0. - [Commits](https://github.com/golang/sys/compare/v0.23.0...v0.24.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 3e72751dfb..fcf00c0948 100644 --- a/go.mod +++ b/go.mod @@ -79,7 +79,7 @@ require ( go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.26.0 golang.org/x/sync v0.8.0 - golang.org/x/sys v0.23.0 + golang.org/x/sys v0.24.0 golang.org/x/text v0.17.0 golang.org/x/tools v0.24.0 google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a diff --git a/go.sum b/go.sum index 861706e8d4..a10a28b660 100644 --- a/go.sum +++ b/go.sum @@ -1009,8 +1009,8 @@ golang.org/x/sys v0.5.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/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= From c65a43c3c8895e97c942c0ff891b2ddb1a63e06c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Aug 2024 08:22:49 +0000 Subject: [PATCH 52/70] Bump @typescript-eslint/eslint-plugin from 8.0.1 to 8.1.0 in /cli-tests (#3148) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.0.1 to 8.1.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/v8.1.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- cli-tests/package-lock.json | 120 ++++++++++++++++++------------------ cli-tests/package.json | 2 +- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index c5c4e0df95..60f9920b97 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": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^7.18.0", "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", @@ -251,16 +251,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", - "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz", + "integrity": "sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/type-utils": "8.0.1", - "@typescript-eslint/utils": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/type-utils": "8.1.0", + "@typescript-eslint/utils": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -284,13 +284,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", - "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", + "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -301,9 +301,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -314,12 +314,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.1.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -376,13 +376,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", - "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz", + "integrity": "sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/typescript-estree": "8.1.0", + "@typescript-eslint/utils": "8.1.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -400,9 +400,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -413,13 +413,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", - "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -441,12 +441,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.1.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -547,15 +547,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", - "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.1.0.tgz", + "integrity": "sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1" + "@typescript-eslint/scope-manager": "8.1.0", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/typescript-estree": "8.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -569,13 +569,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", - "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz", + "integrity": "sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -586,9 +586,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.1.0.tgz", + "integrity": "sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -599,13 +599,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", - "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz", + "integrity": "sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/types": "8.1.0", + "@typescript-eslint/visitor-keys": "8.1.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -627,12 +627,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz", + "integrity": "sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.1.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { diff --git a/cli-tests/package.json b/cli-tests/package.json index 8fb66b60b4..7e86a6a310 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": "^8.0.1", + "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^7.18.0", "eslint": "8.57", "eslint-config-airbnb-base": "^15.0.0", From 7184dcc211e1d49c878edc0eeca2954c6322f81e Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Fri, 16 Aug 2024 14:19:45 +0300 Subject: [PATCH 53/70] RelNotes entry for New MongoDB collector: CurrentOp (#3155) * Desc for New MongoDB collector: CurrentOp * formatting * feedback from Nurlan --- docs/release-notes/2.43.0.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index a8cd62d187..f9ae4aca04 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -15,10 +15,23 @@ This release introduces this and that ## Release highlights +### New MongoDB collector: CurrentOp +The MongoDB exporter now includes the **CurrentOp** collector, offering visibility into active operations, including the new `mongodb_currentop_query_uptime` metric. +To start the MongoDB exporter with the CurrentOp collector enabled, use the `--enable-all-collectors` flag when adding MongoDB services to your PMM instance: + +```sh +pmm-admin add mongodb --enable-all-collectors ... +``` + +Specifying a limit with `--max-collections` for this collector is not necessary. + +!!! note "Operation collection limitation" + To minimize impact on disk usage, the CurrentOp collector is designed to collect only operations that have been running for longer than 1 minute. This limitation helps focus on potentially problematic long-running operations while keeping data volume manageable. + +For more information on MongoDB collectors and metrics, see the [pmm-admin commands documentation](../use/commamds/pmm-admin.md). -![!image](../_images/.png) ## Improvements From 0be6f3097556b288512f9b143c26881a843b60fb Mon Sep 17 00:00:00 2001 From: Michael Okoko <10512379+idoqo@users.noreply.github.com> Date: Mon, 19 Aug 2024 09:29:04 +0100 Subject: [PATCH 54/70] PMM-12910 snooze updates (#3018) * store snoozed PMM versions * replace type with pointer * use pointer for snoozed versions * revert clickhouse port --- api/swagger/swagger-dev.json | 16 ++ api/swagger/swagger.json | 16 ++ .../client/user_service/get_user_responses.go | 3 + .../user_service/update_user_responses.go | 6 + api/user/v1/json/v1.json | 16 ++ api/user/v1/user.pb.go | 170 +++++++++++------- api/user/v1/user.pb.validate.go | 8 + api/user/v1/user.proto | 6 + managed/models/database.go | 4 + managed/models/user_flags_helpers.go | 11 +- managed/models/user_flags_model.go | 7 +- managed/models/user_flags_model_reform.go | 11 +- managed/services/user/user.go | 5 + 13 files changed, 203 insertions(+), 76 deletions(-) diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index cf32bb6f3a..fa2acd03a6 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -27881,6 +27881,11 @@ "type": "boolean", "title": "Alerting Tour", "x-order": 2 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snoozed PMM version update", + "x-order": 3 } } } @@ -27944,6 +27949,12 @@ "title": "Alerting Tour", "x-nullable": true, "x-order": 1 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-nullable": true, + "x-order": 2 } } } @@ -27970,6 +27981,11 @@ "type": "boolean", "title": "Alerting Tour", "x-order": 2 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-order": 3 } } } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 53ea07bff3..1a8543e12f 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -26923,6 +26923,11 @@ "type": "boolean", "title": "Alerting Tour", "x-order": 2 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snoozed PMM version update", + "x-order": 3 } } } @@ -26986,6 +26991,12 @@ "title": "Alerting Tour", "x-nullable": true, "x-order": 1 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-nullable": true, + "x-order": 2 } } } @@ -27012,6 +27023,11 @@ "type": "boolean", "title": "Alerting Tour", "x-order": 2 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-order": 3 } } } diff --git a/api/user/v1/json/client/user_service/get_user_responses.go b/api/user/v1/json/client/user_service/get_user_responses.go index 99186cdcee..184a1e66b3 100644 --- a/api/user/v1/json/client/user_service/get_user_responses.go +++ b/api/user/v1/json/client/user_service/get_user_responses.go @@ -272,6 +272,9 @@ type GetUserOKBody struct { // Alerting Tour AlertingTourCompleted bool `json:"alerting_tour_completed,omitempty"` + + // Snoozed PMM version update + SnoozedPMMVersion string `json:"snoozed_pmm_version,omitempty"` } // Validate validates this get user OK body diff --git a/api/user/v1/json/client/user_service/update_user_responses.go b/api/user/v1/json/client/user_service/update_user_responses.go index 0dc4d4c957..4a8b209032 100644 --- a/api/user/v1/json/client/user_service/update_user_responses.go +++ b/api/user/v1/json/client/user_service/update_user_responses.go @@ -128,6 +128,9 @@ type UpdateUserBody struct { // Alerting Tour AlertingTourCompleted *bool `json:"alerting_tour_completed,omitempty"` + + // Snooze update alert for a PMM version + SnoozedPMMVersion *string `json:"snoozed_pmm_version,omitempty"` } // Validate validates this update user body @@ -312,6 +315,9 @@ type UpdateUserOKBody struct { // Alerting Tour AlertingTourCompleted bool `json:"alerting_tour_completed,omitempty"` + + // Snooze update alert for a PMM version + SnoozedPMMVersion string `json:"snoozed_pmm_version,omitempty"` } // Validate validates this update user OK body diff --git a/api/user/v1/json/v1.json b/api/user/v1/json/v1.json index 755e1bab5f..b87d4f3a51 100644 --- a/api/user/v1/json/v1.json +++ b/api/user/v1/json/v1.json @@ -113,6 +113,11 @@ "title": "Product Tour", "x-order": 1 }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snoozed PMM version update", + "x-order": 3 + }, "user_id": { "type": "integer", "format": "int64", @@ -181,6 +186,12 @@ "title": "Product Tour", "x-nullable": true, "x-order": 0 + }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-nullable": true, + "x-order": 2 } } } @@ -202,6 +213,11 @@ "title": "Product Tour", "x-order": 1 }, + "snoozed_pmm_version": { + "type": "string", + "title": "Snooze update alert for a PMM version", + "x-order": 3 + }, "user_id": { "type": "integer", "format": "int64", diff --git a/api/user/v1/user.pb.go b/api/user/v1/user.pb.go index a96452105e..dbfb229876 100644 --- a/api/user/v1/user.pb.go +++ b/api/user/v1/user.pb.go @@ -72,6 +72,8 @@ type GetUserResponse struct { ProductTourCompleted bool `protobuf:"varint,2,opt,name=product_tour_completed,json=productTourCompleted,proto3" json:"product_tour_completed,omitempty"` // Alerting Tour AlertingTourCompleted bool `protobuf:"varint,3,opt,name=alerting_tour_completed,json=alertingTourCompleted,proto3" json:"alerting_tour_completed,omitempty"` + // Snoozed PMM version update + SnoozedPmmVersion string `protobuf:"bytes,4,opt,name=snoozed_pmm_version,json=snoozedPmmVersion,proto3" json:"snoozed_pmm_version,omitempty"` } func (x *GetUserResponse) Reset() { @@ -127,6 +129,13 @@ func (x *GetUserResponse) GetAlertingTourCompleted() bool { return false } +func (x *GetUserResponse) GetSnoozedPmmVersion() string { + if x != nil { + return x.SnoozedPmmVersion + } + return "" +} + type UpdateUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -136,6 +145,8 @@ type UpdateUserRequest struct { ProductTourCompleted *bool `protobuf:"varint,2,opt,name=product_tour_completed,json=productTourCompleted,proto3,oneof" json:"product_tour_completed,omitempty"` // Alerting Tour AlertingTourCompleted *bool `protobuf:"varint,3,opt,name=alerting_tour_completed,json=alertingTourCompleted,proto3,oneof" json:"alerting_tour_completed,omitempty"` + // Snooze update alert for a PMM version + SnoozedPmmVersion *string `protobuf:"bytes,4,opt,name=snoozed_pmm_version,json=snoozedPmmVersion,proto3,oneof" json:"snoozed_pmm_version,omitempty"` } func (x *UpdateUserRequest) Reset() { @@ -184,6 +195,13 @@ func (x *UpdateUserRequest) GetAlertingTourCompleted() bool { return false } +func (x *UpdateUserRequest) GetSnoozedPmmVersion() string { + if x != nil && x.SnoozedPmmVersion != nil { + return *x.SnoozedPmmVersion + } + return "" +} + type UpdateUserResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -195,6 +213,8 @@ type UpdateUserResponse struct { ProductTourCompleted bool `protobuf:"varint,2,opt,name=product_tour_completed,json=productTourCompleted,proto3" json:"product_tour_completed,omitempty"` // Alerting Tour AlertingTourCompleted bool `protobuf:"varint,3,opt,name=alerting_tour_completed,json=alertingTourCompleted,proto3" json:"alerting_tour_completed,omitempty"` + // Snooze update alert for a PMM version + SnoozedPmmVersion string `protobuf:"bytes,4,opt,name=snoozed_pmm_version,json=snoozedPmmVersion,proto3" json:"snoozed_pmm_version,omitempty"` } func (x *UpdateUserResponse) Reset() { @@ -250,6 +270,13 @@ func (x *UpdateUserResponse) GetAlertingTourCompleted() bool { return false } +func (x *UpdateUserResponse) GetSnoozedPmmVersion() string { + if x != nil { + return x.SnoozedPmmVersion + } + return "" +} + type ListUsersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -401,7 +428,7 @@ var file_user_v1_user_proto_rawDesc = []byte{ 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x10, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x98, 0x01, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, @@ -411,7 +438,10 @@ var file_user_v1_user_proto_rawDesc = []byte{ 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, 0x72, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6e, 0x6f, 0x6f, + 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x6e, 0x6f, 0x6f, 0x7a, 0x65, 0x64, 0x50, 0x6d, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, @@ -420,70 +450,78 @@ var file_user_v1_user_proto_rawDesc = []byte{ 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x9b, 0x01, - 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, - 0x16, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, - 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x92, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, - 0x65, 0x49, 0x64, 0x73, 0x32, 0xd4, 0x03, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x39, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, - 0x69, 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1b, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x92, - 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, - 0x72, 0x1a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x1a, 0x0c, 0x2f, - 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x12, 0x9d, 0x01, 0x0a, 0x09, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x59, 0x92, 0x41, 0x45, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x33, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, - 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, - 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x42, 0x8f, 0x01, 0x92, 0x41, - 0x0c, 0x12, 0x0a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0b, 0x63, - 0x6f, 0x6d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x55, 0x58, 0x58, 0xaa, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x13, 0x55, - 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x08, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x73, 0x6e, 0x6f, 0x6f, 0x7a, 0x65, + 0x64, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, 0x73, 0x6e, 0x6f, 0x6f, 0x7a, 0x65, 0x64, 0x50, 0x6d, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x7a, 0x65, 0x64, 0x5f, 0x70, + 0x6d, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x12, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, + 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, 0x72, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6e, 0x6f, 0x6f, + 0x7a, 0x65, 0x64, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x6e, 0x6f, 0x6f, 0x7a, 0x65, 0x64, 0x50, 0x6d, + 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x92, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, + 0x40, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x17, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, + 0x73, 0x32, 0xd4, 0x03, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x17, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x50, 0x92, 0x41, 0x39, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x66, + 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, + 0x6d, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x92, 0x41, 0x32, 0x12, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x21, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x1a, 0x0c, 0x2f, 0x76, 0x31, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x12, 0x9d, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x92, + 0x41, 0x45, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x1a, 0x33, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, + 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, + 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, + 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x42, 0x8f, 0x01, 0x92, 0x41, 0x0c, 0x12, 0x0a, + 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x55, 0x58, 0x58, 0xaa, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x13, 0x55, 0x73, 0x65, 0x72, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x08, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/api/user/v1/user.pb.validate.go b/api/user/v1/user.pb.validate.go index aacc93faf4..a35b0f3413 100644 --- a/api/user/v1/user.pb.validate.go +++ b/api/user/v1/user.pb.validate.go @@ -163,6 +163,8 @@ func (m *GetUserResponse) validate(all bool) error { // no validation rules for AlertingTourCompleted + // no validation rules for SnoozedPmmVersion + if len(errors) > 0 { return GetUserResponseMultiError(errors) } @@ -271,6 +273,10 @@ func (m *UpdateUserRequest) validate(all bool) error { // no validation rules for AlertingTourCompleted } + if m.SnoozedPmmVersion != nil { + // no validation rules for SnoozedPmmVersion + } + if len(errors) > 0 { return UpdateUserRequestMultiError(errors) } @@ -379,6 +385,8 @@ func (m *UpdateUserResponse) validate(all bool) error { // no validation rules for AlertingTourCompleted + // no validation rules for SnoozedPmmVersion + if len(errors) > 0 { return UpdateUserResponseMultiError(errors) } diff --git a/api/user/v1/user.proto b/api/user/v1/user.proto index a30b223075..0cbfc1509e 100644 --- a/api/user/v1/user.proto +++ b/api/user/v1/user.proto @@ -18,6 +18,8 @@ message GetUserResponse { bool product_tour_completed = 2; // Alerting Tour bool alerting_tour_completed = 3; + // Snoozed PMM version update + string snoozed_pmm_version = 4; } message UpdateUserRequest { @@ -25,6 +27,8 @@ message UpdateUserRequest { optional bool product_tour_completed = 2; // Alerting Tour optional bool alerting_tour_completed = 3; + // Snooze update alert for a PMM version + optional string snoozed_pmm_version = 4; } message UpdateUserResponse { @@ -34,6 +38,8 @@ message UpdateUserResponse { bool product_tour_completed = 2; // Alerting Tour bool alerting_tour_completed = 3; + // Snooze update alert for a PMM version + string snoozed_pmm_version = 4; } message ListUsersRequest {} diff --git a/managed/models/database.go b/managed/models/database.go index 90d1407a6d..2c2e9e1bef 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -1052,6 +1052,10 @@ var databaseSchema = [][]string{ `ALTER TABLE service_software_versions ADD CONSTRAINT service_software_versions_service_id_fkey FOREIGN KEY (service_id) REFERENCES services (service_id) ON DELETE CASCADE;`, `ALTER TABLE services ADD CONSTRAINT services_node_id_fkey FOREIGN KEY (node_id) REFERENCES nodes (node_id);`, }, + 106: { + `ALTER TABLE user_flags + ADD COLUMN snoozed_pmm_version VARCHAR NOT NULL DEFAULT ''`, + }, } // ^^^ Avoid default values in schema definition. ^^^ diff --git a/managed/models/user_flags_helpers.go b/managed/models/user_flags_helpers.go index 7909153b3d..38cfe3725a 100644 --- a/managed/models/user_flags_helpers.go +++ b/managed/models/user_flags_helpers.go @@ -31,9 +31,10 @@ type CreateUserParams struct { // UpdateUserParams has parameters to update existing user. type UpdateUserParams struct { - UserID int - Tour *bool - AlertingTour *bool + UserID int + Tour *bool + AlertingTour *bool + SnoozedPMMVersion *string } // GetOrCreateUser returns user and optionally creates it, if not in database yet. @@ -100,13 +101,15 @@ func UpdateUser(q *reform.Querier, params *UpdateUserParams) (*UserDetails, erro if err != nil { return nil, err } - if params.Tour != nil { row.Tour = *params.Tour } if params.AlertingTour != nil { row.AlertingTour = *params.AlertingTour } + if params.SnoozedPMMVersion != nil { + row.SnoozedPMMVersion = *params.SnoozedPMMVersion + } if err = q.Update(row); err != nil { return nil, errors.Wrap(err, "failed to update user") diff --git a/managed/models/user_flags_model.go b/managed/models/user_flags_model.go index 5f7e8cff1e..e1a8109006 100644 --- a/managed/models/user_flags_model.go +++ b/managed/models/user_flags_model.go @@ -27,9 +27,10 @@ import ( // //reform:user_flags type UserDetails struct { - ID int `reform:"id,pk"` - Tour bool `reform:"tour_done"` - AlertingTour bool `reform:"alerting_tour_done"` + ID int `reform:"id,pk"` + Tour bool `reform:"tour_done"` + AlertingTour bool `reform:"alerting_tour_done"` + SnoozedPMMVersion string `reform:"snoozed_pmm_version"` CreatedAt time.Time `reform:"created_at"` UpdatedAt time.Time `reform:"updated_at"` diff --git a/managed/models/user_flags_model_reform.go b/managed/models/user_flags_model_reform.go index 6a0d712dd3..940c242e1d 100644 --- a/managed/models/user_flags_model_reform.go +++ b/managed/models/user_flags_model_reform.go @@ -31,6 +31,7 @@ func (v *userDetailsTableType) Columns() []string { "id", "tour_done", "alerting_tour_done", + "snoozed_pmm_version", "created_at", "updated_at", } @@ -60,6 +61,7 @@ var UserDetailsTable = &userDetailsTableType{ {Name: "ID", Type: "int", Column: "id"}, {Name: "Tour", Type: "bool", Column: "tour_done"}, {Name: "AlertingTour", Type: "bool", Column: "alerting_tour_done"}, + {Name: "SnoozedPMMVersion", Type: "string", Column: "snoozed_pmm_version"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}, }, @@ -70,12 +72,13 @@ var UserDetailsTable = &userDetailsTableType{ // String returns a string representation of this struct or record. func (s UserDetails) String() string { - res := make([]string, 5) + res := make([]string, 6) res[0] = "ID: " + reform.Inspect(s.ID, true) res[1] = "Tour: " + reform.Inspect(s.Tour, true) res[2] = "AlertingTour: " + reform.Inspect(s.AlertingTour, true) - res[3] = "CreatedAt: " + reform.Inspect(s.CreatedAt, true) - res[4] = "UpdatedAt: " + reform.Inspect(s.UpdatedAt, true) + res[3] = "SnoozedPMMVersion: " + reform.Inspect(s.SnoozedPMMVersion, true) + res[4] = "CreatedAt: " + reform.Inspect(s.CreatedAt, true) + res[5] = "UpdatedAt: " + reform.Inspect(s.UpdatedAt, true) return strings.Join(res, ", ") } @@ -86,6 +89,7 @@ func (s *UserDetails) Values() []interface{} { s.ID, s.Tour, s.AlertingTour, + s.SnoozedPMMVersion, s.CreatedAt, s.UpdatedAt, } @@ -98,6 +102,7 @@ func (s *UserDetails) Pointers() []interface{} { &s.ID, &s.Tour, &s.AlertingTour, + &s.SnoozedPMMVersion, &s.CreatedAt, &s.UpdatedAt, } diff --git a/managed/services/user/user.go b/managed/services/user/user.go index 14b210d84f..eb0443b90a 100644 --- a/managed/services/user/user.go +++ b/managed/services/user/user.go @@ -71,6 +71,7 @@ func (s *Service) GetUser(ctx context.Context, _ *userv1.GetUserRequest) (*userv UserId: uint32(userInfo.ID), ProductTourCompleted: userInfo.Tour, AlertingTourCompleted: userInfo.AlertingTour, + SnoozedPmmVersion: userInfo.SnoozedPMMVersion, } return resp, nil } @@ -98,6 +99,9 @@ func (s *Service) UpdateUser(ctx context.Context, req *userv1.UpdateUserRequest) Tour: req.ProductTourCompleted, AlertingTour: req.AlertingTourCompleted, } + if req.SnoozedPmmVersion != nil { + params.SnoozedPMMVersion = req.SnoozedPmmVersion + } userInfo, err = models.UpdateUser(tx.Querier, params) if err != nil { @@ -114,6 +118,7 @@ func (s *Service) UpdateUser(ctx context.Context, req *userv1.UpdateUserRequest) UserId: uint32(userInfo.ID), ProductTourCompleted: userInfo.Tour, AlertingTourCompleted: userInfo.AlertingTour, + SnoozedPmmVersion: userInfo.SnoozedPMMVersion, } return resp, nil } From 49a0e81b0c8c99268e5b912752f67af1fa4b1d12 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Mon, 19 Aug 2024 15:39:47 +0600 Subject: [PATCH 55/70] PMM-12848 Enable currentopmetrics collector in mongodb_exporter. (#3118) * PMM-12848 Enable currentopmetrics collector in mongodb_exporter. * PMM-7 fix golint. * PMM-12848 Add currentopmetrics to scrape config. * PMM-12848 collect currentopmetrics in low resolution. * PMM-12848 Fix tests. --- managed/services/agents/mongodb.go | 216 +++++------------- managed/services/agents/mongodb_test.go | 29 +++ .../victoriametrics/scrape_configs.go | 3 + .../victoriametrics/scrape_configs_test.go | 4 +- managed/utils/collectors/collectors.go | 17 ++ 5 files changed, 102 insertions(+), 167 deletions(-) diff --git a/managed/services/agents/mongodb.go b/managed/services/agents/mongodb.go index 0e043e3904..3b1fa5f68d 100644 --- a/managed/services/agents/mongodb.go +++ b/managed/services/agents/mongodb.go @@ -30,17 +30,13 @@ import ( "github.com/percona/pmm/version" ) -type collectorArgs struct { - enabled bool - enableParam string -} - var ( // New MongoDB Exporter will be released with PMM agent v2.10.0. newMongoExporterPMMVersion = version.MustParse("2.9.99") v2_25_0 = version.MustParse("2.25.0-0") v2_26_0 = version.MustParse("2.26.0-0") v2_41_1 = version.MustParse("2.41.1-0") + v2_42_0 = version.MustParse("2.42.0-0") ) // mongodbExporterConfig returns desired configuration of mongodb_exporter process. @@ -50,23 +46,10 @@ func mongodbExporterConfig(node *models.Node, service *models.Service, exporter listenAddress := getExporterListenAddress(node, exporter) tdp := exporter.TemplateDelimiters(service) - var args []string - // Starting with PMM 2.10.0, we are shipping the new mongodb_exporter - // Starting with PMM 2.25.0, we change the discovering-mode making it to discover all databases. - // Until now, discovering mode was not working properly and was enabled only if mongodb.collstats-colls= - // was specified in the command line. - // Starting with PMM 2.26.0, we disabled all collectors by default and added flags to enable them. - // Starting with PMM 2.41.1 we added shards collector. - if pmmAgentVersion.Less(v2_26_0) { - args = oldPMMAgentArgs(exporter, tdp, listenAddress, pmmAgentVersion) - } else { - args = v226Args(exporter, tdp, listenAddress, pmmAgentVersion) - } - - args = collectors.FilterOutCollectors("--collect.", args, exporter.DisabledCollectors) + args := getArgs(exporter, tdp, listenAddress, pmmAgentVersion) if pointer.GetString(exporter.MetricsPath) != "" { - args = append(args, "--web.telemetry-path="+*exporter.MetricsPath) + args = append(args, "--web.telemetry-path="+*exporter.MetricsPath) //nolint:goconst } args = withLogLevel(args, exporter.LogLevel, pmmAgentVersion, true) @@ -101,171 +84,74 @@ func mongodbExporterConfig(node *models.Node, service *models.Service, exporter return res, nil } -func oldPMMAgentArgs(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress string, pmmAgentVersion *version.Parsed) []string { +// getArgs returns the appropriate arguments based on the PMM agent version. +func getArgs(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress string, pmmAgentVersion *version.Parsed) []string { var args []string + switch { - case !pmmAgentVersion.Less(v2_25_0): // >= 2.25 - args = v225Args(exporter, tdp, listenAddress) - case !pmmAgentVersion.Less(newMongoExporterPMMVersion): // >= 2.10 - args = []string{ - "--mongodb.global-conn-pool", - "--compatible-mode", - "--web.listen-address=" + listenAddress + ":" + tdp.Left + " .listen_port " + tdp.Right, //nolint:goconst + case !pmmAgentVersion.Less(v2_25_0): // >= 2.26.0 + args = buildBaseArgs(listenAddress, tdp) + args = append(args, "--discovering-mode") + + defaultEnabledCollectors := []string{"diagnosticdata", "replicasetstatus"} + collectAll := exporter.MongoDBOptions != nil && exporter.MongoDBOptions.EnableAllCollectors + + if !pmmAgentVersion.Less(v2_26_0) { + defaultEnabledCollectors = []string{} + args = append(args, "--collector.diagnosticdata", "--collector.replicasetstatus") + if collectAll { + args = append(args, "--collector.collstats", "--collector.dbstats", "--collector.indexstats", "--collector.topmetrics") + } } - default: - args = []string{ - "--collect.collection", - "--collect.database", - "--collect.topmetrics", - "--no-collect.connpoolstats", - "--no-collect.indexusage", - "--web.listen-address=" + listenAddress + ":" + tdp.Left + " .listen_port " + tdp.Right, + if !pmmAgentVersion.Less(v2_41_1) && collectAll { // >= 2.41.1 + args = append(args, "--collector.shards") + } + if !pmmAgentVersion.Less(v2_42_0) && collectAll { // >= 2.42.0 + args = append(args, "--collector.currentopmetrics") } - } - return args -} - -func v226Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress string, pmmAgentVersion *version.Parsed) []string { - collectAll := false - if exporter.MongoDBOptions != nil { - collectAll = exporter.MongoDBOptions.EnableAllCollectors - } - - collstatsLimit := int32(200) - if exporter.MongoDBOptions != nil && exporter.MongoDBOptions.CollectionsLimit != -1 { - collstatsLimit = exporter.MongoDBOptions.CollectionsLimit - } - collectors := defaultCollectors(collectAll) + args = collectors.FilterOutCollectors("--collector.", args, exporter.DisabledCollectors) + args = append(args, collectors.DisableDefaultEnabledCollectors("--no-collector.", defaultEnabledCollectors, exporter.DisabledCollectors)...) - if !pmmAgentVersion.Less(v2_41_1) { // >= 2.41.1 - collectors["shards"] = collectorArgs{ - enabled: collectAll, - enableParam: "--collector.shards", + if exporter.MongoDBOptions != nil && len(exporter.MongoDBOptions.StatsCollections) != 0 { + args = append(args, "--mongodb.collstats-colls="+strings.Join(exporter.MongoDBOptions.StatsCollections, ",")) + if !pmmAgentVersion.Less(v2_26_0) { + args = append(args, "--mongodb.indexstats-colls="+strings.Join(exporter.MongoDBOptions.StatsCollections, ",")) + } } - } - for _, collector := range exporter.DisabledCollectors { - col, ok := collectors[strings.ToLower(collector)] - if !ok { - continue + if exporter.MongoDBOptions != nil { + collstatsLimit := int32(200) + if exporter.MongoDBOptions.CollectionsLimit != -1 { + collstatsLimit = exporter.MongoDBOptions.CollectionsLimit + } + args = append(args, fmt.Sprintf("--collector.collstats-limit=%d", collstatsLimit)) } - col.enabled = false - collectors[strings.ToLower(collector)] = col - } - - args := []string{ - "--mongodb.global-conn-pool", - "--compatible-mode", - "--web.listen-address=" + listenAddress + ":" + tdp.Left + " .listen_port " + tdp.Right, - "--discovering-mode", - } - if exporter.MongoDBOptions != nil && len(exporter.MongoDBOptions.StatsCollections) != 0 { - args = append(args, "--mongodb.collstats-colls="+strings.Join(exporter.MongoDBOptions.StatsCollections, ",")) - args = append(args, "--mongodb.indexstats-colls="+strings.Join(exporter.MongoDBOptions.StatsCollections, ",")) - } + case !pmmAgentVersion.Less(newMongoExporterPMMVersion): // >= 2.10.0 + args = buildBaseArgs(listenAddress, tdp) - if exporter.MongoDBOptions != nil { - args = append(args, fmt.Sprintf("--collector.collstats-limit=%d", collstatsLimit)) - } - - for _, collector := range collectors { - if collector.enabled && collector.enableParam != "" { - args = append(args, collector.enableParam) + default: // < 2.10.0 + args = []string{ + "--collect.collection", + "--collect.database", + "--collect.topmetrics", + "--no-collect.connpoolstats", + "--no-collect.indexusage", + "--web.listen-address=" + listenAddress + ":" + tdp.Left + " .listen_port " + tdp.Right, //nolint:goconst } + + args = collectors.FilterOutCollectors("--collect.", args, exporter.DisabledCollectors) } return args } -func v225Args(exporter *models.Agent, tdp *models.DelimiterPair, listenAddress string) []string { - type collectorArgs struct { - enabled bool - enableParam string - disableParam string - } - - collectors := map[string]collectorArgs{ - "diagnosticdata": { - enabled: true, - disableParam: "--no-collector.diagnosticdata", - }, - "replicasetstatus": { - enabled: true, - disableParam: "--no-collector.replicasetstatus", - }, - // disabled until we have better information on the resources usage impact - "dbstats": { - enabled: false, - enableParam: "--collector.dbstats", - }, - // disabled until we have better information on the resources usage impact - "topmetrics": { - enabled: false, - enableParam: "--collector.topmetrics", - }, - } - - for _, collector := range exporter.DisabledCollectors { - col := collectors[strings.ToLower(collector)] - col.enabled = false - collectors[strings.ToLower(collector)] = col - } - - args := []string{ +func buildBaseArgs(listenAddress string, tdp *models.DelimiterPair) []string { + return []string{ "--mongodb.global-conn-pool", "--compatible-mode", "--web.listen-address=" + listenAddress + ":" + tdp.Left + " .listen_port " + tdp.Right, - "--discovering-mode", - } - - if exporter.MongoDBOptions != nil && len(exporter.MongoDBOptions.StatsCollections) != 0 { - args = append(args, "--mongodb.collstats-colls="+strings.Join(exporter.MongoDBOptions.StatsCollections, ",")) - } - - if exporter.MongoDBOptions != nil && exporter.MongoDBOptions.CollectionsLimit != 0 { - args = append(args, fmt.Sprintf("--collector.collstats-limit=%d", exporter.MongoDBOptions.CollectionsLimit)) - } - - for _, collector := range collectors { - if collector.enabled && collector.enableParam != "" { - args = append(args, collector.enableParam) - } - if !collector.enabled && collector.disableParam != "" { - args = append(args, collector.disableParam) - } - } - - return args -} - -func defaultCollectors(collectAll bool) map[string]collectorArgs { - return map[string]collectorArgs{ - "diagnosticdata": { - enabled: true, - enableParam: "--collector.diagnosticdata", - }, - "replicasetstatus": { - enabled: true, - enableParam: "--collector.replicasetstatus", - }, - "collstats": { - enabled: collectAll, - enableParam: "--collector.collstats", - }, - "dbstats": { - enabled: collectAll, - enableParam: "--collector.dbstats", - }, - "indexstats": { - enabled: collectAll, - enableParam: "--collector.indexstats", - }, - "topmetrics": { - enabled: collectAll, - enableParam: "--collector.topmetrics", - }, } } diff --git a/managed/services/agents/mongodb_test.go b/managed/services/agents/mongodb_test.go index 8accc04e9e..0864effc51 100644 --- a/managed/services/agents/mongodb_test.go +++ b/managed/services/agents/mongodb_test.go @@ -384,6 +384,35 @@ func TestMongodbExporterConfig2411(t *testing.T) { require.NoError(t, err) require.Equal(t, expected.Args, actual.Args) }) + + t.Run("Enable all collectors and disable some", func(t *testing.T) { + exporter.MongoDBOptions = &models.MongoDBOptions{ + EnableAllCollectors: true, + StatsCollections: []string{"db1.col1.one", "db2.col2", "db3"}, + } + exporter.DisabledCollectors = []string{"dbstats", "topmetrics"} + + expected.Args = []string{ + "--collector.collstats", + "--collector.collstats-limit=0", + "--collector.diagnosticdata", + "--collector.indexstats", + "--collector.replicasetstatus", + "--collector.shards", + "--compatible-mode", + "--discovering-mode", + // this should be here even if limit=0 because it could be used to filter dbstats + // since dbstats is not depending the number of collections present in the db. + "--mongodb.collstats-colls=db1.col1.one,db2.col2,db3", + "--mongodb.global-conn-pool", + "--mongodb.indexstats-colls=db1.col1.one,db2.col2,db3", + "--web.listen-address=0.0.0.0:{{ .listen_port }}", + "--web.config={{ .TextFiles.webConfigPlaceholder }}", + } + actual, err := mongodbExporterConfig(node, mongodb, exporter, exposeSecrets, pmmAgentVersion) + require.NoError(t, err) + require.Equal(t, expected.Args, actual.Args) + }) } func TestMongodbExporterConfig(t *testing.T) { diff --git a/managed/services/victoriametrics/scrape_configs.go b/managed/services/victoriametrics/scrape_configs.go index 9dc595a871..d2a3104fcd 100644 --- a/managed/services/victoriametrics/scrape_configs.go +++ b/managed/services/victoriametrics/scrape_configs.go @@ -422,6 +422,9 @@ func scrapeConfigsForMongoDBExporter(params *scrapeConfigParams) ([]*config.Scra if !params.pmmAgentVersion.Less(version.MustParse("2.41.1-0")) { defaultCollectors = append(defaultCollectors, "shards") } + if !params.pmmAgentVersion.Less(version.MustParse("2.42.0-0")) { + defaultCollectors = append(defaultCollectors, "currentopmetrics") + } lr, err := scrapeConfigForStandardExporter("lr", params.metricsResolution.LR, params, defaultCollectors) if err != nil { diff --git a/managed/services/victoriametrics/scrape_configs_test.go b/managed/services/victoriametrics/scrape_configs_test.go index d09afa1988..c327bbac9d 100644 --- a/managed/services/victoriametrics/scrape_configs_test.go +++ b/managed/services/victoriametrics/scrape_configs_test.go @@ -758,7 +758,7 @@ func TestScrapeConfig(t *testing.T) { ScrapeTimeout: scrapeTimeout(s.LR), MetricsPath: "/metrics", Params: map[string][]string{ - "collect[]": {"collstats", "dbstats", "indexstats", "shards"}, + "collect[]": {"collstats", "currentopmetrics", "dbstats", "indexstats", "shards"}, }, HTTPClientConfig: config.HTTPClientConfig{ BasicAuth: &config.BasicAuth{ @@ -790,7 +790,7 @@ func TestScrapeConfig(t *testing.T) { node: node, service: service, agent: agent, - pmmAgentVersion: version.MustParse("2.41.1"), + pmmAgentVersion: version.MustParse("2.42.0"), metricsResolution: s, }) require.NoError(t, err) diff --git a/managed/utils/collectors/collectors.go b/managed/utils/collectors/collectors.go index 66e464ff40..5286e61518 100644 --- a/managed/utils/collectors/collectors.go +++ b/managed/utils/collectors/collectors.go @@ -42,3 +42,20 @@ func FilterOutCollectors(prefix string, args, disabledCollectors []string) []str } return enabledArgs } + +// DisableDefaultEnabledCollectors returns CLI arguments to disable default enabled collectors based on input. +// DefaultCollectors and disabledCollectors should be collector names without prefix. +// Result will be returned with prefix. +func DisableDefaultEnabledCollectors(prefix string, defaultCollectors []string, disabledCollectors []string) []string { + defaultCollectorsMap := make(map[string]struct{}) + for _, defaultCollector := range defaultCollectors { + defaultCollectorsMap[defaultCollector] = struct{}{} + } + args := []string{} + for _, collector := range disabledCollectors { + if _, ok := defaultCollectorsMap[collector]; ok { + args = append(args, fmt.Sprintf("%s%s", prefix, collector)) + } + } + return args +} From 9f6011705dd261d1dc05d5e73596a5871e20581a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:20:59 +0000 Subject: [PATCH 56/70] Bump github.com/bufbuild/buf from 1.36.0 to 1.37.0 in /tools (#3156) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.36.0 to 1.37.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.36.0...v1.37.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> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@users.noreply.github.com> --- tools/go.mod | 66 ++++++++++++++-------- tools/go.sum | 154 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 140 insertions(+), 80 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 9129c3d9dc..66750c56db 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -10,7 +10,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.6.0 - github.com/bufbuild/buf v1.36.0 + github.com/bufbuild/buf v1.37.0 github.com/daixiang0/gci v0.13.0 github.com/envoyproxy/protoc-gen-validate v1.1.0 github.com/go-delve/delve v1.23.0 @@ -32,18 +32,19 @@ require ( ) require ( - buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2 // indirect - buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1 // indirect - buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2 // indirect + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 // indirect + buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240801134127-09fbc17f7c9e.1 // indirect + buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240801134127-09fbc17f7c9e.2 // indirect code.gitea.io/sdk/gitea v0.18.0 // indirect connectrpc.com/connect v1.16.2 // indirect - connectrpc.com/otelconnect v0.7.0 // indirect + connectrpc.com/otelconnect v0.7.1 // indirect dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/Microsoft/hcsshim v0.12.5 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect @@ -53,12 +54,20 @@ require ( github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect github.com/bufbuild/protocompile v0.14.0 // indirect github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee // indirect - github.com/bufbuild/protovalidate-go v0.6.2 // indirect - github.com/bufbuild/protoyaml-go v0.1.9 // indirect + github.com/bufbuild/protovalidate-go v0.6.3 // indirect + github.com/bufbuild/protoyaml-go v0.1.10 // indirect github.com/chigopher/pathlib v0.19.1 // indirect github.com/cilium/ebpf v0.11.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect + github.com/containerd/cgroups/v3 v3.0.3 // indirect + github.com/containerd/containerd v1.7.20 // indirect + github.com/containerd/continuity v0.4.3 // indirect + github.com/containerd/errdefs v0.1.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect + github.com/containerd/ttrpc v1.2.5 // indirect + github.com/containerd/typeurl/v2 v2.2.0 // indirect github.com/cosiner/argv v0.1.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -66,9 +75,9 @@ require ( github.com/denisenkom/go-mssqldb v0.9.0 // indirect github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v26.1.4+incompatible // indirect + github.com/docker/cli v27.1.2+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.1+incompatible // indirect + github.com/docker/docker v27.1.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -76,7 +85,7 @@ require ( github.com/felixge/fgprof v0.9.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-chi/chi/v5 v5.0.14 // indirect + github.com/go-chi/chi/v5 v5.1.0 // indirect github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 // indirect github.com/go-fed/httpsig v1.1.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -101,19 +110,19 @@ require ( github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 // indirect github.com/go-toolsmith/typep v1.0.2 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect - github.com/gofrs/uuid/v5 v5.2.0 // indirect + github.com/gofrs/uuid/v5 v5.3.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/cel-go v0.20.1 // indirect + github.com/google/cel-go v0.21.0 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/go-containerregistry v0.19.2 // indirect + github.com/google/go-containerregistry v0.20.2 // indirect github.com/google/go-dap v0.12.0 // indirect github.com/google/go-github/v33 v33.0.0 // indirect github.com/google/go-github/v62 v62.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-20240622144329-c177fd99eaa9 // indirect + github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -155,11 +164,19 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/locker v1.0.1 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/mount v0.3.4 // indirect + github.com/moby/sys/mountinfo v0.7.2 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect + github.com/moby/sys/user v0.3.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect github.com/moby/term v0.5.0 // indirect 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 // indirect + github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect @@ -191,12 +208,13 @@ require ( github.com/xanzy/go-gitlab v0.106.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect go.mongodb.org/mongo-driver v1.9.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect go.starlark.net v0.0.0-20231101134539-556fd59b42f6 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -204,17 +222,17 @@ require ( golang.org/x/arch v0.6.0 // indirect golang.org/x/build v0.0.0-20240712162709-0b82a206aadf // indirect golang.org/x/crypto v0.26.0 // indirect - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect golang.org/x/mod v0.20.0 // indirect golang.org/x/net v0.28.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.23.0 // indirect + golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.23.0 // indirect golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 // indirect google.golang.org/grpc v1.65.0 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 152c2cc8ce..9105b9c532 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1,9 +1,9 @@ -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2 h1:cFrEG/pJch6t62+jqndcPXeTNkYcztS4tBRgNkR+drw= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240508200655-46a4cf4ba109.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw= -buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1 h1:PmSlGbLLyhKIAm46ROmzdGVaaYgDdFsQNA+VftjuCLs= -buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240610164129-660609bc46d3.1/go.mod h1:4ptL49VoWyYwajT6j4zu5vmQ/k/om4tGMB9atY2FhEo= -buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2 h1:y1+UxFIWzj/eF2RCPqt9egR7Rt9vgQkXNUzSdmR6iEU= -buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240610164129-660609bc46d3.2/go.mod h1:psseUmlKRo9v5LZJtR/aTpdTLuyp9o3X7rnLT87SZEo= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 h1:SZRVx928rbYZ6hEKUIN+vtGDkl7uotABRWGY4OAg5gM= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240801134127-09fbc17f7c9e.1 h1:IV4si5SvDJSGQ/kpcnmOFKDKh8erG6zPy+NhmxlYdxM= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.16.2-20240801134127-09fbc17f7c9e.1/go.mod h1:4isTSbIhQ6wERY99Kvds0UuOcFMUoPDBPZfaAKrUnSE= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240801134127-09fbc17f7c9e.2 h1:7fUEOBrfNd50BMAls2tLn9RhttbDIfxRXML99YaLqKY= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.34.2-20240801134127-09fbc17f7c9e.2/go.mod h1:psseUmlKRo9v5LZJtR/aTpdTLuyp9o3X7rnLT87SZEo= cloud.google.com/go v0.0.0-20170206221025-ce650573d812/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -46,12 +46,14 @@ code.gitea.io/sdk/gitea v0.18.0 h1:+zZrwVmujIrgobt6wVBWCqITz6bn1aBjnCUHmpZrerI= code.gitea.io/sdk/gitea v0.18.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI= connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE= connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc= -connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY= -connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc= +connectrpc.com/otelconnect v0.7.1 h1:scO5pOb0i4yUE66CnNrHeK1x51yq0bE0ehPg6WvzXJY= +connectrpc.com/otelconnect v0.7.1/go.mod h1:dh3bFgHBTb2bkqGCeVVOtHJreSns7uu9wwL2Tbz17ms= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/AlekSi/pointer v1.1.0 h1:SSDMPcXD9jSl8FPy9cRzoRaMJtm9g9ggGTxecRUbQoI= github.com/AlekSi/pointer v1.1.0/go.mod h1:y7BvfRI3wXPWKXEBhU71nbnIEEZX0QTSB2Bj48UJIZE= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= @@ -68,8 +70,10 @@ github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYr github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.12.5 h1:bpTInLlDy/nDRWFVcefDZZ1+U8tS+rz3MxjKgu9boo0= +github.com/Microsoft/hcsshim v0.12.5/go.mod h1:tIUGego4G1EN5Hb6KC90aDYiUI2dqLSTTOCjVNpOgZ8= github.com/Percona-Lab/spec v0.20.5-percona h1:ViCJVq52QIZxpP8/Nv4/nIed+WnqUirNjPtXvHhset4= github.com/Percona-Lab/spec v0.20.5-percona/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 h1:jvuxsQEuFpoSVw9HCP4kSF52BXYzTvB7CA3eryQXaRc= @@ -104,19 +108,19 @@ github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= 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.36.0 h1:sC/MRgAhwvcbLbUXlTY+zgLUT4PzHm19BnnEsgu/rgU= -github.com/bufbuild/buf v1.36.0/go.mod h1:SM7b5QW3FkQPNkkqIa/9UWzLOoe51la+GGZpEgH9b68= +github.com/bufbuild/buf v1.37.0 h1:lKQ2LahOOMzLFFAg1IMQj12gPhAfLWGr6z6jfP6p7Bw= +github.com/bufbuild/buf v1.37.0/go.mod h1:uFHazPjAiKVpyK9Td/4FeMzQb8v5X7M4fo255kw/W6U= github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU= github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups= github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee h1:E6ET8YUcYJ1lAe6ctR3as7yqzW2BNItDFnaB5zQq/8M= github.com/bufbuild/protoplugin v0.0.0-20240323223605-e2735f6c31ee/go.mod h1:HjGFxsck9RObrTJp2hXQZfWhPgZqnR6sR1U5fCA/Kus= -github.com/bufbuild/protovalidate-go v0.6.2 h1:U/V3CGF0kPlR12v41rjO4DrYZtLcS4ZONLmWN+rJVCQ= -github.com/bufbuild/protovalidate-go v0.6.2/go.mod h1:4BR3rKEJiUiTy+sqsusFn2ladOf0kYmA2Reo6BHSBgQ= -github.com/bufbuild/protoyaml-go v0.1.9 h1:anV5UtF1Mlvkkgp4NWA6U/zOnJFng8Orq4Vf3ZUQHBU= -github.com/bufbuild/protoyaml-go v0.1.9/go.mod h1:KCBItkvZOK/zwGueLdH1Wx1RLyFn5rCH7YjQrdty2Wc= +github.com/bufbuild/protovalidate-go v0.6.3 h1:wxQyzW035zM16Binbaz/nWAzS12dRIXhZdSUWRY7Fv0= +github.com/bufbuild/protovalidate-go v0.6.3/go.mod h1:J4PtwP9Z2YAGgB0+o+tTWEDtLtXvz/gfhFZD8pbzM/U= +github.com/bufbuild/protoyaml-go v0.1.10 h1:gMwDSHNoInt0D6vvTUxAJSWvp87MJraTN7dxsR7C2z4= +github.com/bufbuild/protoyaml-go v0.1.10/go.mod h1:KCBItkvZOK/zwGueLdH1Wx1RLyFn5rCH7YjQrdty2Wc= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chigopher/pathlib v0.19.1 h1:RoLlUJc0CqBGwq239cilyhxPNLXTK+HXoASGyGznx5A= github.com/chigopher/pathlib v0.19.1/go.mod h1:tzC1dZLW8o33UQpWkNkhvPwL5n4yyFRFm/jL1YGWFvY= @@ -140,10 +144,24 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= +github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ= +github.com/containerd/containerd v1.7.20/go.mod h1:52GsS5CwquuqPuLncsXwG0t2CiUce+KsNHJZQJvAgR0= +github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= +github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= +github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= +github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= +github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso= +github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cosiner/argv v0.1.0 h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg= github.com/cosiner/argv v0.1.0/go.mod h1:EusR6TucWKX+zFgtdUsKT2Cvg45K5rtpCcWz4hK06d8= @@ -167,12 +185,12 @@ github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d h1:hUWoLdw5kvo2xC github.com/derekparker/trie v0.0.0-20230829180723-39f4de51ef7d/go.mod h1:C7Es+DLenIpPc9J6IYw4jrK0h7S9bKj4DNl8+KxGEXU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v26.1.4+incompatible h1:I8PHdc0MtxEADqYJZvhBrW9bo8gawKwwenxRM7/rLu8= -github.com/docker/cli v26.1.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.1.2+incompatible h1:nYviRv5Y+YAKx3dFrTvS1ErkyVVunKOhoweCTE1BsnI= +github.com/docker/cli v27.1.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= -github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.2+incompatible h1:AhGzR1xaQIy53qCkxARaFluI00WPGtXn0AJuoQsVYTY= +github.com/docker/docker v27.1.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -207,8 +225,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-chi/chi/v5 v5.0.14 h1:PyEwo2Vudraa0x/Wl6eDRRW2NXBvekgfxyydcM0WGE0= -github.com/go-chi/chi/v5 v5.0.14/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= +github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-delve/delve v1.23.0 h1:jYgZISZ14KAO3ys8kD07kjrowrygE9F9SIwnpz9xXys= github.com/go-delve/delve v1.23.0/go.mod h1:S3SLuEE2mn7wipKilTvk1p9HdTMnXXElcEpiZ+VcuqU= github.com/go-delve/liner v1.2.3-0.20231231155935-4726ab1d7f62 h1:IGtvsNyIuRjl04XAOFGACozgUD7A82UffYxZt4DWbvA= @@ -318,13 +336,13 @@ github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u1 github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= 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= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM= -github.com/gofrs/uuid/v5 v5.2.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gofrs/uuid/v5 v5.3.0 h1:m0mUMr+oVYUdxpMLgSYCZiXe7PuVPnI94+OMeVBNedk= +github.com/gofrs/uuid/v5 v5.3.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= @@ -367,8 +385,8 @@ github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2 github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/cel-go v0.20.1 h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84= -github.com/google/cel-go v0.20.1/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg= +github.com/google/cel-go v0.21.0 h1:cl6uW/gxN+Hy50tNYvI691+sXxioCnstFzLp2WO4GCI= +github.com/google/cel-go v0.21.0/go.mod h1:rHUlWCcBKgyEk+eV03RPdZUekPp6YcJwV0FxuUksYxc= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -377,11 +395,12 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.19.2 h1:TannFKE1QSajsP6hPWb5oJNgKe1IKjHukIKDUmvsV6w= -github.com/google/go-containerregistry v0.19.2/go.mod h1:YCMFNQeeXeLF+dnhhWkqDItx/JSkH01j1Kis4PsjzFI= +github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo= +github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8= github.com/google/go-dap v0.12.0 h1:rVcjv3SyMIrpaOoTAdFDyHs99CwVOItIJGKLQFQhNeM= github.com/google/go-dap v0.12.0/go.mod h1:tNjCASCm5cqePi/RVXXWEVqtnNLV1KTWtYOqu6rZNzc= github.com/google/go-github/v33 v33.0.0 h1:qAf9yP0qc54ufQxzwv+u9H0tiVOnPJxo0lI/JXqw3ZM= @@ -408,8 +427,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe 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-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= -github.com/google/pprof v0.0.0-20240622144329-c177fd99eaa9 h1:ouFdLLCOyCfnxGpQTMZKHLyHr/D1GFbQzEsJxumO16E= -github.com/google/pprof v0.0.0-20240622144329-c177fd99eaa9/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= @@ -556,6 +575,20 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/mount v0.3.4 h1:yn5jq4STPztkkzSKpZkLcmjue+bZJ0u2AuQY1iNI1Ww= +github.com/moby/sys/mount v0.3.4/go.mod h1:KcQJMbQdJHPlq5lcYT+/CjatWM4PuxKe+XLSVS4J6Os= +github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg= +github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= +github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= @@ -570,6 +603,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= +github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= +github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= 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/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= @@ -594,6 +631,8 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= 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= @@ -703,24 +742,26 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= go.opentelemetry.io/otel/sdk/metric v1.19.0 h1:EJoTO5qysMsYCa+w4UghwFV/ptQgqSL/8Ni+hx+8i1k= go.opentelemetry.io/otel/sdk/metric v1.19.0/go.mod h1:XjG0jQyFJrv2PbMvwND7LwCEhsJzCzV5210euduKcKY= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.starlark.net v0.0.0-20231101134539-556fd59b42f6 h1:+eC0F/k4aBLC4szgOcjd7bDTEnpxADJyWJE0yowgM3E= go.starlark.net v0.0.0-20231101134539-556fd59b42f6/go.mod h1:LcLNIzVOMp4oV+uusnpk+VU+SzXaJakUuBjoCSWH5dM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -769,8 +810,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-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= 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= @@ -836,6 +877,7 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -935,8 +977,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 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= @@ -1099,10 +1141,10 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a h1:YIa/rzVqMEokBkPtydCkx1VLmv3An1Uw7w1P1m6EhOY= -google.golang.org/genproto/googleapis/api v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a h1:hqK4+jJZXCU4pW7jsAdGOVFIfLHQeV7LaizZKnZ84HI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240723171418-e6d459c13d2a/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988 h1:+/tmTy5zAieooKIXfzDm9KiA3Bv6JBwriRN9LY+yayk= +google.golang.org/genproto/googleapis/api v0.0.0-20240812133136-8ffd90a71988/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988 h1:V71AcdLZr2p8dC9dbOIMCpqi4EmRl8wUwnJzXXLmbmc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240812133136-8ffd90a71988/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= From b20fe783537ee3b1740d1facb714c00934a26563 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: Wed, 21 Aug 2024 13:52:00 +0200 Subject: [PATCH 57/70] PMM-12451 MongoDB explain. (#3152) * PMM-12451 Todo. * PMM-12451 Changes. * PMM-12451 Version check, refactor. * PMM-12451 Remove Mongo < 4.0.0 compatibility and logic. * PMM-12451 Remove unused annotations. * PMM-12451 Make format. * PMM-12451 Lint. * PMM-12451 Lint. * PMM-12451 Downgrade driver. * PMM-12451 Changes. * PMM-12451 Old tests. * PMM-12451 Test. * Revert "PMM-12451 Old tests." This reverts commit feb3721bbac056d0f0775db9cedacc46a2279a94. * Revert "PMM-12451 Test." This reverts commit acf12a7e18d24f7ac01ec53d74013ea6ef619976. * PMM-12451 Changes. * PMM-12451 Lint. * PMM-12451 Fix wrong version number in comment. * PMM-12451 Remove lsid. * PMM-12451 Test with 1.16.1 driver. * PMM-12451 Unmarshal canonical to false. * Reapply "PMM-12451 Old tests." This reverts commit a5754c877f618dd97f4e8621c1c15914e3079ca1. * Revert "PMM-12451 Test." This reverts commit acf12a7e18d24f7ac01ec53d74013ea6ef619976. * PMM-12451 Return back removeDBField after canonical false. * PMM-12451 Remove rest of lsids in tests. * PMM-12451 Fix comment. * PMM-12451 Handle not supported commands. * PMM-12451 Refactor. * PMM-12451 Fix logic for OriginatingCommand. * PMM-12451 Small test refactor. * Update agent/runner/actions/mongodb_explain_action.go Co-authored-by: Nurlan Moldomurov * PMM-12451 Required changes. * PMM-12451 Adds release notes. * PMM-12451 Add comments to unclear places. * PMM-12451 Changes in comments. * PMM-12451 Add PMM-13017 and PMM-13071 to RN. * Update docs/release-notes/2.43.0.md Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> * Update docs/release-notes/2.43.0.md Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> * Update agent/runner/actions/mongodb_explain_action.go Co-authored-by: Alex Demidoff * PMM-12451 Improvement to handle dbstats command. * PMM-12451 Fix RN after applied suggestion. --------- Co-authored-by: Nurlan Moldomurov Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> Co-authored-by: Alex Demidoff --- .../runner/actions/mongodb_explain_action.go | 170 +++++++++++++- .../actions/mongodb_explain_action_test.go | 218 ++++++++++++++++++ docs/release-notes/2.43.0.md | 3 + go.mod | 2 +- go.sum | 4 +- 5 files changed, 382 insertions(+), 15 deletions(-) diff --git a/agent/runner/actions/mongodb_explain_action.go b/agent/runner/actions/mongodb_explain_action.go index 373b04df9f..6f22345392 100644 --- a/agent/runner/actions/mongodb_explain_action.go +++ b/agent/runner/actions/mongodb_explain_action.go @@ -18,9 +18,9 @@ import ( "context" "fmt" "path/filepath" + "strings" "time" - "github.com/percona/percona-toolkit/src/go/mongolib/proto" "github.com/pkg/errors" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" @@ -39,6 +39,15 @@ type mongodbExplainAction struct { dsn string } +type explain struct { + Ns string `json:"ns"` + Op string `json:"op"` + Query bson.D `json:"query,omitempty"` + Command bson.D `json:"command,omitempty"` + OriginatingCommand bson.D `json:"originatingCommand,omitempty"` + UpdateObj bson.D `json:"updateobj,omitempty"` +} + var errCannotExplain = fmt.Errorf("cannot explain this type of query") // NewMongoDBExplainAction creates a MongoDB EXPLAIN query Action. @@ -89,28 +98,165 @@ func (a *mongodbExplainAction) Run(ctx context.Context) ([]byte, error) { } defer client.Disconnect(ctx) //nolint:errcheck - var eq proto.ExampleQuery + return explainForQuery(ctx, client, a.params.Query) +} + +func (a *mongodbExplainAction) sealed() {} + +func (e explain) prepareCommand() (bson.D, error) { + command := e.Command + + switch e.Op { + case "query": + if len(command) == 0 { + command = e.Query + } + + if len(command) == 0 || command[0].Key != "find" { + return bson.D{ + {Key: "find", Value: e.getCollection()}, + {Key: "filter", Value: command}, + }, nil + } + + if len(command) != 0 && command[0].Key == "query" { + return bson.D{ + {Key: "find", Value: e.getCollection()}, + {Key: "filter", Value: command[0].Value}, + }, nil + } + + return dropDBField(command), nil + case "update": + if len(command) == 0 { + command = bson.D{ + {Key: "q", Value: e.Query}, + {Key: "u", Value: e.UpdateObj}, + } + } + + return bson.D{ + {Key: "update", Value: e.getCollection()}, + {Key: "updates", Value: []any{command}}, + }, nil + case "remove": + if len(command) == 0 { + command = bson.D{{Key: "q", Value: e.Query}} + } + + return bson.D{ + {Key: "delete", Value: e.getCollection()}, + {Key: "deletes", Value: []any{command}}, + }, nil + case "getmore": + if len(e.OriginatingCommand) == 0 { + return bson.D{{Key: "getmore", Value: ""}}, nil + } + + command = e.OriginatingCommand + + return dropDBField(command), nil + case "command": + command = dropDBField(command) + + if len(command) == 0 { + return command, nil + } + + switch command[0].Key { + // Not supported commands. + case "dbStats": + return nil, errors.Errorf("command %s is not supported for explain", command[0].Key) + case "group": + default: + return command, nil + } + + return fixReduceField(command), nil + // Not supported operations. + case "insert", "drop": + return nil, errors.Errorf("operation %s is not supported for explain", e.Op) + } + + return command, nil +} + +func (e explain) getDB() string { + s := strings.SplitN(e.Ns, ".", 2) + if len(s) == 2 { + return s[0] + } + + return "" +} + +func (e explain) getCollection() string { + s := strings.SplitN(e.Ns, ".", 2) + if len(s) == 2 { + return s[1] + } + + return "" +} + +// dropDBField remove DB field to be able run explain on all supported types. +// Otherwise it could end up with BSON field 'xxx.$db' is a duplicate field. +func dropDBField(command bson.D) bson.D { + for i := range command { + if command[i].Key != "$db" { + continue + } + + if len(command)-1 == i { + return command[:i] + } + + return append(command[:i], command[i+1:]...) + } + + return command +} + +// fixReduceField fixing nil/empty values after unmarshalling funcs. +func fixReduceField(command bson.D) bson.D { + var group bson.D + var ok bool + if group, ok = command[0].Value.(bson.D); !ok { + return command + } - err = bson.UnmarshalExtJSON([]byte(a.params.Query), true, &eq) + for i := range group { + if group[i].Key == "$reduce" { + group[i].Value = "{}" + command[0].Value = group + break + } + } + + return command +} + +func explainForQuery(ctx context.Context, client *mongo.Client, query string) ([]byte, error) { + var e explain + err := bson.UnmarshalExtJSON([]byte(query), false, &e) if err != nil { - return nil, errors.Wrapf(err, "Query: %s", a.params.Query) + return nil, errors.Wrapf(err, "Query: %s", query) } - database := "admin" - if eq.Db() != "" { - database = eq.Db() + preparedCommand, err := e.prepareCommand() + if err != nil { + return nil, errors.Wrap(errCannotExplain, err.Error()) } - res := client.Database(database).RunCommand(ctx, eq.ExplainCmd()) + command := bson.D{{Key: "explain", Value: preparedCommand}} + res := client.Database(e.getDB()).RunCommand(ctx, command) if res.Err() != nil { return nil, errors.Wrap(errCannotExplain, res.Err().Error()) } - result, err := res.DecodeBytes() + result, err := res.Raw() if err != nil { return nil, err } - // We need it because result + return []byte(result.String()), nil } - -func (a *mongodbExplainAction) sealed() {} diff --git a/agent/runner/actions/mongodb_explain_action_test.go b/agent/runner/actions/mongodb_explain_action_test.go index 8e927b71ec..41299a5857 100644 --- a/agent/runner/actions/mongodb_explain_action_test.go +++ b/agent/runner/actions/mongodb_explain_action_test.go @@ -16,10 +16,13 @@ package actions import ( "context" + "crypto/rand" "encoding/json" "fmt" + "math/big" "os" "path/filepath" + "strconv" "testing" "github.com/stretchr/testify/assert" @@ -33,6 +36,221 @@ import ( "github.com/percona/pmm/version" ) +func TestQueryExplain(t *testing.T) { + database := "testdb" + ctx := context.TODO() + + dsn := tests.GetTestMongoDBDSN(t) + client := tests.OpenTestMongoDB(t, dsn) + t.Cleanup(func() { + defer client.Disconnect(ctx) //nolint:errcheck + defer client.Database(database).Drop(ctx) //nolint:errcheck + }) + + t.Run("Find", func(t *testing.T) { + query := `{ + "ns": "config.collections", + "op": "query", + "command": { + "find": "collections", + "filter": { + "_id": { + "$regex": "^admin.", + "$options": "i" + } + }, + "$db": "config" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Count", func(t *testing.T) { + query := `{ + "ns": "testdb.collection", + "op": "command", + "command": { + "count": "collection", + "query": { + "a": { + "$numberDouble": "5.0" + }, + "b": { + "$numberDouble": "5.0" + } + }, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Count with aggregate", func(t *testing.T) { + query := `{ + "ns": "testdb.collection", + "op": "command", + "command": { + "aggregate": "collection", + "pipeline": [ + { + "$group": { + "_id": null, + "count": { + "$sum": { + "$numberDouble": "1.0" + } + } + } + }, + { + "$project": { + "_id": { + "$numberDouble": "0.0" + } + } + } + ], + "cursor": {}, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Update", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "update", + "command": { + "q": { + "item": "paper" + }, + "u": { + "$set": { + "size.uom": "cm", + "status": "P" + }, + "$currentDate": { + "lastModified": true + } + }, + "multi": false, + "upsert": false + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Remove", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "remove", + "command": { + "q": { + "_id": { + "id": { + "$binary": { + "base64": "vN9ImShsRBaCIFJ23YkysA==", + "subType": "04" + } + }, + "uid": { + "$binary": { + "base64": "Y5mrDaxi8gv8RmdTsQ+1j7fmkr7JUsabhNmXAheU0fg=", + "subType": "00" + } + } + } + }, + "limit": { + "$numberInt": "0" + } + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Distinct", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "command", + "command": { + "distinct": "inventory", + "key": "dept", + "query": {} + }, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Insert - not supported", func(t *testing.T) { + query := `{ + "ns": "testdb.listingsAndReviews", + "op": "insert", + "command": { + "insert": "listingsAndReviews", + "ordered": true, + "$db": "testdb" + } + }` + runExplainExpectError(ctx, t, prepareParams(t, query)) + }) + + t.Run("Drop - not supported", func(t *testing.T) { + query := `{ + "ns": "testdb.listingsAndReviews", + "op": "command", + "command": { + "drop": "listingsAndReviews", + "$db": "testdb" + } + }` + runExplainExpectError(ctx, t, prepareParams(t, query)) + }) + + t.Run("PMM-12451", func(t *testing.T) { + // Query from customer to prevent wrong date/time, timestamp parsing in future and prevent regression. + query := `{"ns":"testdb.testDoc","op":"query","command":{"find":"testDoc","filter":{"$and":[{"c23":{"$ne":""}},{"c23":{"$ne":null},"delete":{"$ne":true}},{"$and":[{"c23":"985662747"},{"c15":{"$gte":{"$date":"2023-09-19T22:00:00.000Z"}}},{"c15":{"$lte":{"$date":"2023-10-20T21:59:59.000Z"}}},{"c8":{"$in":["X1118630710X","X1118630720X","X1118630730X","X1118630740X","X1118630750X","X1118630760X"]},"c22":{"$in":["X1118630710X","X1118630710XA","X1118630710XB","X1118630710XC","X1118630710XD","X1118630710XE"]},"c34":{"$in":["X1118630710X","X1118630710Y","X1118630710Z","X1118630710U","X1118630710V","X1118630710W"]}},{"c2":"xxxxxxx"},{"c29":{"$in":["X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X"]}}]}]},"lsid":{"id":{"$binary":{"base64":"n/f5RI2jTTCoyt0y+8D9Cw==","subType":"04"}}},"$db":"testdb"}}` + runExplain(ctx, t, prepareParams(t, query)) + }) +} + +func prepareParams(t *testing.T, query string) *agentpb.StartActionRequest_MongoDBExplainParams { + t.Helper() + + return &agentpb.StartActionRequest_MongoDBExplainParams{ + Dsn: tests.GetTestMongoDBDSN(t), + Query: query, + } +} + +func runExplain(ctx context.Context, t *testing.T, params *agentpb.StartActionRequest_MongoDBExplainParams) { + t.Helper() + + big, err := rand.Int(rand.Reader, big.NewInt(27)) + require.NoError(t, err) + id := strconv.FormatUint(big.Uint64(), 10) + ex, err := NewMongoDBExplainAction(id, 0, params, os.TempDir()) + require.NoError(t, err) + res, err := ex.Run(ctx) + require.NoError(t, err) + require.NotEmpty(t, string(res)) +} + +func runExplainExpectError(ctx context.Context, t *testing.T, params *agentpb.StartActionRequest_MongoDBExplainParams) { + t.Helper() + + big, err := rand.Int(rand.Reader, big.NewInt(27)) + require.NoError(t, err) + id := strconv.FormatUint(big.Uint64(), 10) + ex, err := NewMongoDBExplainAction(id, 0, params, os.TempDir()) + require.NoError(t, err) + _, err = ex.Run(ctx) + require.Error(t, err) +} + func TestMongoDBExplain(t *testing.T) { database := "test" collection := "test_col" diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index f9ae4aca04..a931587a5a 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -67,3 +67,6 @@ If you're looking to upgrade, you can easily [install the latest version of Perc While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. +- [PMM-12451](https://perconadev.atlassian.net/browse/PMM-12451) and [PMM-13017](https://perconadev.atlassian.net/browse/PMM-13017) - Resolved an issue with parsing JSON objects into the correct data types and aligned the explain functionality with the official MongoDB client. These updates enhance consistency with MongoDB's native tools and provide improved performance insights. + +- [PMM-13071](https://perconadev.atlassian.net/browse/PMM-13071) - The **Explain** tab on the Query Analytics (QAN) page now properly handles unsupported MongoDB query types. For operations like `INSERT`, which don’t support explain functionality, you will now see a clear message saying that the operation is not explainable. This replaces the previous, confusing error message about duplicate BSON fields, offering more accurate feedback in QAN. diff --git a/go.mod b/go.mod index fcf00c0948..241b5545fd 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/stretchr/objx v0.5.2 github.com/stretchr/testify v1.9.0 - go.mongodb.org/mongo-driver v1.16.0 + go.mongodb.org/mongo-driver v1.16.1 go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.26.0 golang.org/x/sync v0.8.0 diff --git a/go.sum b/go.sum index a10a28b660..046e96af53 100644 --- a/go.sum +++ b/go.sum @@ -804,8 +804,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t go.mongodb.org/mongo-driver v1.6.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.7.0/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8= go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= -go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4= -go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= +go.mongodb.org/mongo-driver v1.16.1 h1:rIVLL3q0IHM39dvE+z2ulZLp9ENZKThVfuvN/IiN4l8= +go.mongodb.org/mongo-driver v1.16.1/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= 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= From 7eeffc0a6d36c6fd2cabe12bcae48bb927740298 Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Wed, 21 Aug 2024 16:14:57 +0300 Subject: [PATCH 58/70] API doc changes for 2.43 (#3056) * PMM-13054 * formatting * Update logs.md --- .../pmm-server-config/troubleshooting/logs.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/api/pmm-server-config/troubleshooting/logs.md b/docs/api/pmm-server-config/troubleshooting/logs.md index 23ad6c2b9d..d1bc6186f0 100644 --- a/docs/api/pmm-server-config/troubleshooting/logs.md +++ b/docs/api/pmm-server-config/troubleshooting/logs.md @@ -3,12 +3,26 @@ title: Logs slug: "logs" category: 626badcabbc59c02acc1a540 --- +Download the logs and components configuration to troubleshoot any issues with the PMM Server. -Sometimes users need to troubleshoot an issue. PMM Server offers an ability to download the logs as well as configuration of its components. +## Accessing logs -You can download the logs either by calling this endpoint or by visiting a dedicated URL (ex: https://pmmdemo.percona.com/logs.zip) or via the **Settings UI** as explained in the [Troubleshooting](https://docs.percona.com/percona-monitoring-and-management/how-to/troubleshoot.html#client-server-connections) section of our docs. +PMM Server offers three ways to access and download logs: + +1. Through direct URL, by visiting `https:///logs.zip`. +2. By calling the Logs endpoint. This method enables you to customize the log content using the `line-count` parameter: For example: + + - Default 50,000 lines: `https:///logs.zip` + - Custom number of lines: `https:///logs.zip?line-count=10000` + - Unlimited, full log: `https:///logs.zip?line-count=-1` +3. Through the UI, by selecting the **Help > PMM Logs** option from the main menu. + If you need to share logs with Percona Support via an SFTP server, you can also use the **PMM Dump** option from the Help menu to generate a compressed tarball file with an export of your PMM metrics and QAN data. + For more information, see [Export PMM data with PMM Dump](https://docs.percona.com/percona-monitoring-and-management/how-to/PMM_dump.html) topic in the product documentation. + +## Log structure + +The downloaded logs package contains the following structure: -The structure of the logs is as follows: [block:code] { "codes": [ From 0a4e9474d02110881a71cf6d27372b41b6a837f0 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: Wed, 21 Aug 2024 15:22:27 +0200 Subject: [PATCH 59/70] PMM-12451 MongoDB explain. (#3152). (#3166) * PMM-12451 Todo. * PMM-12451 Changes. * PMM-12451 Version check, refactor. * PMM-12451 Remove Mongo < 4.0.0 compatibility and logic. * PMM-12451 Remove unused annotations. * PMM-12451 Make format. * PMM-12451 Lint. * PMM-12451 Lint. * PMM-12451 Downgrade driver. * PMM-12451 Changes. * PMM-12451 Old tests. * PMM-12451 Test. * Revert "PMM-12451 Old tests." This reverts commit feb3721bbac056d0f0775db9cedacc46a2279a94. * Revert "PMM-12451 Test." This reverts commit acf12a7e18d24f7ac01ec53d74013ea6ef619976. * PMM-12451 Changes. * PMM-12451 Lint. * PMM-12451 Fix wrong version number in comment. * PMM-12451 Remove lsid. * PMM-12451 Test with 1.16.1 driver. * PMM-12451 Unmarshal canonical to false. * Reapply "PMM-12451 Old tests." This reverts commit a5754c877f618dd97f4e8621c1c15914e3079ca1. * Revert "PMM-12451 Test." This reverts commit acf12a7e18d24f7ac01ec53d74013ea6ef619976. * PMM-12451 Return back removeDBField after canonical false. * PMM-12451 Remove rest of lsids in tests. * PMM-12451 Fix comment. * PMM-12451 Handle not supported commands. * PMM-12451 Refactor. * PMM-12451 Fix logic for OriginatingCommand. * PMM-12451 Small test refactor. * Update agent/runner/actions/mongodb_explain_action.go * PMM-12451 Required changes. * PMM-12451 Adds release notes. * PMM-12451 Add comments to unclear places. * PMM-12451 Changes in comments. * PMM-12451 Add PMM-13017 and PMM-13071 to RN. * Update docs/release-notes/2.43.0.md * Update docs/release-notes/2.43.0.md * Update agent/runner/actions/mongodb_explain_action.go * PMM-12451 Improvement to handle dbstats command. * PMM-12451 Fix RN after applied suggestion. --------- Co-authored-by: Nurlan Moldomurov Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> Co-authored-by: Alex Demidoff --- .../runner/actions/mongodb_explain_action.go | 170 +++++++++++++- .../actions/mongodb_explain_action_test.go | 218 ++++++++++++++++++ docs/release-notes/2.43.0.md | 3 + go.mod | 2 +- go.sum | 4 +- 5 files changed, 382 insertions(+), 15 deletions(-) diff --git a/agent/runner/actions/mongodb_explain_action.go b/agent/runner/actions/mongodb_explain_action.go index 925a530d0e..0d51a01763 100644 --- a/agent/runner/actions/mongodb_explain_action.go +++ b/agent/runner/actions/mongodb_explain_action.go @@ -18,9 +18,9 @@ import ( "context" "fmt" "path/filepath" + "strings" "time" - "github.com/percona/percona-toolkit/src/go/mongolib/proto" "github.com/pkg/errors" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" @@ -39,6 +39,15 @@ type mongodbExplainAction struct { dsn string } +type explain struct { + Ns string `json:"ns"` + Op string `json:"op"` + Query bson.D `json:"query,omitempty"` + Command bson.D `json:"command,omitempty"` + OriginatingCommand bson.D `json:"originatingCommand,omitempty"` + UpdateObj bson.D `json:"updateobj,omitempty"` +} + var errCannotExplain = fmt.Errorf("cannot explain this type of query") // NewMongoDBExplainAction creates a MongoDB EXPLAIN query Action. @@ -89,28 +98,165 @@ func (a *mongodbExplainAction) Run(ctx context.Context) ([]byte, error) { } defer client.Disconnect(ctx) //nolint:errcheck - var eq proto.ExampleQuery + return explainForQuery(ctx, client, a.params.Query) +} + +func (a *mongodbExplainAction) sealed() {} + +func (e explain) prepareCommand() (bson.D, error) { + command := e.Command + + switch e.Op { + case "query": + if len(command) == 0 { + command = e.Query + } + + if len(command) == 0 || command[0].Key != "find" { + return bson.D{ + {Key: "find", Value: e.getCollection()}, + {Key: "filter", Value: command}, + }, nil + } + + if len(command) != 0 && command[0].Key == "query" { + return bson.D{ + {Key: "find", Value: e.getCollection()}, + {Key: "filter", Value: command[0].Value}, + }, nil + } + + return dropDBField(command), nil + case "update": + if len(command) == 0 { + command = bson.D{ + {Key: "q", Value: e.Query}, + {Key: "u", Value: e.UpdateObj}, + } + } + + return bson.D{ + {Key: "update", Value: e.getCollection()}, + {Key: "updates", Value: []any{command}}, + }, nil + case "remove": + if len(command) == 0 { + command = bson.D{{Key: "q", Value: e.Query}} + } + + return bson.D{ + {Key: "delete", Value: e.getCollection()}, + {Key: "deletes", Value: []any{command}}, + }, nil + case "getmore": + if len(e.OriginatingCommand) == 0 { + return bson.D{{Key: "getmore", Value: ""}}, nil + } + + command = e.OriginatingCommand + + return dropDBField(command), nil + case "command": + command = dropDBField(command) + + if len(command) == 0 { + return command, nil + } + + switch command[0].Key { + // Not supported commands. + case "dbStats": + return nil, errors.Errorf("command %s is not supported for explain", command[0].Key) + case "group": + default: + return command, nil + } + + return fixReduceField(command), nil + // Not supported operations. + case "insert", "drop": + return nil, errors.Errorf("operation %s is not supported for explain", e.Op) + } + + return command, nil +} + +func (e explain) getDB() string { + s := strings.SplitN(e.Ns, ".", 2) + if len(s) == 2 { + return s[0] + } + + return "" +} + +func (e explain) getCollection() string { + s := strings.SplitN(e.Ns, ".", 2) + if len(s) == 2 { + return s[1] + } + + return "" +} + +// dropDBField remove DB field to be able run explain on all supported types. +// Otherwise it could end up with BSON field 'xxx.$db' is a duplicate field. +func dropDBField(command bson.D) bson.D { + for i := range command { + if command[i].Key != "$db" { + continue + } + + if len(command)-1 == i { + return command[:i] + } + + return append(command[:i], command[i+1:]...) + } + + return command +} + +// fixReduceField fixing nil/empty values after unmarshalling funcs. +func fixReduceField(command bson.D) bson.D { + var group bson.D + var ok bool + if group, ok = command[0].Value.(bson.D); !ok { + return command + } - err = bson.UnmarshalExtJSON([]byte(a.params.Query), true, &eq) + for i := range group { + if group[i].Key == "$reduce" { + group[i].Value = "{}" + command[0].Value = group + break + } + } + + return command +} + +func explainForQuery(ctx context.Context, client *mongo.Client, query string) ([]byte, error) { + var e explain + err := bson.UnmarshalExtJSON([]byte(query), false, &e) if err != nil { - return nil, errors.Wrapf(err, "Query: %s", a.params.Query) + return nil, errors.Wrapf(err, "Query: %s", query) } - database := "admin" - if eq.Db() != "" { - database = eq.Db() + preparedCommand, err := e.prepareCommand() + if err != nil { + return nil, errors.Wrap(errCannotExplain, err.Error()) } - res := client.Database(database).RunCommand(ctx, eq.ExplainCmd()) + command := bson.D{{Key: "explain", Value: preparedCommand}} + res := client.Database(e.getDB()).RunCommand(ctx, command) if res.Err() != nil { return nil, errors.Wrap(errCannotExplain, res.Err().Error()) } - result, err := res.DecodeBytes() + result, err := res.Raw() if err != nil { return nil, err } - // We need it because result + return []byte(result.String()), nil } - -func (a *mongodbExplainAction) sealed() {} diff --git a/agent/runner/actions/mongodb_explain_action_test.go b/agent/runner/actions/mongodb_explain_action_test.go index 1f2e46c2ed..f8218d9a8d 100644 --- a/agent/runner/actions/mongodb_explain_action_test.go +++ b/agent/runner/actions/mongodb_explain_action_test.go @@ -16,10 +16,13 @@ package actions import ( "context" + "crypto/rand" "encoding/json" "fmt" + "math/big" "os" "path/filepath" + "strconv" "testing" "github.com/stretchr/testify/assert" @@ -33,6 +36,221 @@ import ( "github.com/percona/pmm/version" ) +func TestQueryExplain(t *testing.T) { + database := "testdb" + ctx := context.TODO() + + dsn := tests.GetTestMongoDBDSN(t) + client := tests.OpenTestMongoDB(t, dsn) + t.Cleanup(func() { + defer client.Disconnect(ctx) //nolint:errcheck + defer client.Database(database).Drop(ctx) //nolint:errcheck + }) + + t.Run("Find", func(t *testing.T) { + query := `{ + "ns": "config.collections", + "op": "query", + "command": { + "find": "collections", + "filter": { + "_id": { + "$regex": "^admin.", + "$options": "i" + } + }, + "$db": "config" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Count", func(t *testing.T) { + query := `{ + "ns": "testdb.collection", + "op": "command", + "command": { + "count": "collection", + "query": { + "a": { + "$numberDouble": "5.0" + }, + "b": { + "$numberDouble": "5.0" + } + }, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Count with aggregate", func(t *testing.T) { + query := `{ + "ns": "testdb.collection", + "op": "command", + "command": { + "aggregate": "collection", + "pipeline": [ + { + "$group": { + "_id": null, + "count": { + "$sum": { + "$numberDouble": "1.0" + } + } + } + }, + { + "$project": { + "_id": { + "$numberDouble": "0.0" + } + } + } + ], + "cursor": {}, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Update", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "update", + "command": { + "q": { + "item": "paper" + }, + "u": { + "$set": { + "size.uom": "cm", + "status": "P" + }, + "$currentDate": { + "lastModified": true + } + }, + "multi": false, + "upsert": false + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Remove", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "remove", + "command": { + "q": { + "_id": { + "id": { + "$binary": { + "base64": "vN9ImShsRBaCIFJ23YkysA==", + "subType": "04" + } + }, + "uid": { + "$binary": { + "base64": "Y5mrDaxi8gv8RmdTsQ+1j7fmkr7JUsabhNmXAheU0fg=", + "subType": "00" + } + } + } + }, + "limit": { + "$numberInt": "0" + } + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Distinct", func(t *testing.T) { + query := `{ + "ns": "testdb.inventory", + "op": "command", + "command": { + "distinct": "inventory", + "key": "dept", + "query": {} + }, + "$db": "testdb" + } + }` + runExplain(ctx, t, prepareParams(t, query)) + }) + + t.Run("Insert - not supported", func(t *testing.T) { + query := `{ + "ns": "testdb.listingsAndReviews", + "op": "insert", + "command": { + "insert": "listingsAndReviews", + "ordered": true, + "$db": "testdb" + } + }` + runExplainExpectError(ctx, t, prepareParams(t, query)) + }) + + t.Run("Drop - not supported", func(t *testing.T) { + query := `{ + "ns": "testdb.listingsAndReviews", + "op": "command", + "command": { + "drop": "listingsAndReviews", + "$db": "testdb" + } + }` + runExplainExpectError(ctx, t, prepareParams(t, query)) + }) + + t.Run("PMM-12451", func(t *testing.T) { + // Query from customer to prevent wrong date/time, timestamp parsing in future and prevent regression. + query := `{"ns":"testdb.testDoc","op":"query","command":{"find":"testDoc","filter":{"$and":[{"c23":{"$ne":""}},{"c23":{"$ne":null},"delete":{"$ne":true}},{"$and":[{"c23":"985662747"},{"c15":{"$gte":{"$date":"2023-09-19T22:00:00.000Z"}}},{"c15":{"$lte":{"$date":"2023-10-20T21:59:59.000Z"}}},{"c8":{"$in":["X1118630710X","X1118630720X","X1118630730X","X1118630740X","X1118630750X","X1118630760X"]},"c22":{"$in":["X1118630710X","X1118630710XA","X1118630710XB","X1118630710XC","X1118630710XD","X1118630710XE"]},"c34":{"$in":["X1118630710X","X1118630710Y","X1118630710Z","X1118630710U","X1118630710V","X1118630710W"]}},{"c2":"xxxxxxx"},{"c29":{"$in":["X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X","X1118630710X"]}}]}]},"lsid":{"id":{"$binary":{"base64":"n/f5RI2jTTCoyt0y+8D9Cw==","subType":"04"}}},"$db":"testdb"}}` + runExplain(ctx, t, prepareParams(t, query)) + }) +} + +func prepareParams(t *testing.T, query string) *agentv1.StartActionRequest_MongoDBExplainParams { + t.Helper() + + return &agentv1.StartActionRequest_MongoDBExplainParams{ + Dsn: tests.GetTestMongoDBDSN(t), + Query: query, + } +} + +func runExplain(ctx context.Context, t *testing.T, params *agentv1.StartActionRequest_MongoDBExplainParams) { + t.Helper() + + big, err := rand.Int(rand.Reader, big.NewInt(27)) + require.NoError(t, err) + id := strconv.FormatUint(big.Uint64(), 10) + ex, err := NewMongoDBExplainAction(id, 0, params, os.TempDir()) + require.NoError(t, err) + res, err := ex.Run(ctx) + require.NoError(t, err) + require.NotEmpty(t, string(res)) +} + +func runExplainExpectError(ctx context.Context, t *testing.T, params *agentv1.StartActionRequest_MongoDBExplainParams) { + t.Helper() + + big, err := rand.Int(rand.Reader, big.NewInt(27)) + require.NoError(t, err) + id := strconv.FormatUint(big.Uint64(), 10) + ex, err := NewMongoDBExplainAction(id, 0, params, os.TempDir()) + require.NoError(t, err) + _, err = ex.Run(ctx) + require.Error(t, err) +} + func TestMongoDBExplain(t *testing.T) { database := "test" collection := "test_col" diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index a8cd62d187..56e0e25aa1 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -54,3 +54,6 @@ If you're looking to upgrade, you can easily [install the latest version of Perc While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. +- [PMM-12451](https://perconadev.atlassian.net/browse/PMM-12451) and [PMM-13017](https://perconadev.atlassian.net/browse/PMM-13017) - Resolved an issue with parsing JSON objects into the correct data types and aligned the explain functionality with the official MongoDB client. These updates enhance consistency with MongoDB's native tools and provide improved performance insights. + +- [PMM-13071](https://perconadev.atlassian.net/browse/PMM-13071) - The **Explain** tab on the Query Analytics (QAN) page now properly handles unsupported MongoDB query types. For operations like `INSERT`, which don’t support explain functionality, you will now see a clear message saying that the operation is not explainable. This replaces the previous, confusing error message about duplicate BSON fields, offering more accurate feedback in QAN. diff --git a/go.mod b/go.mod index 0a65f7f4c7..0da5be4280 100644 --- a/go.mod +++ b/go.mod @@ -67,7 +67,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/stretchr/objx v0.5.2 github.com/stretchr/testify v1.9.0 - go.mongodb.org/mongo-driver v1.16.0 + go.mongodb.org/mongo-driver v1.16.1 go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.26.0 golang.org/x/sync v0.8.0 diff --git a/go.sum b/go.sum index feefa68523..8992c9df01 100644 --- a/go.sum +++ b/go.sum @@ -526,8 +526,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.mongodb.org/mongo-driver v1.11.4/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= -go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4= -go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= +go.mongodb.org/mongo-driver v1.16.1 h1:rIVLL3q0IHM39dvE+z2ulZLp9ENZKThVfuvN/IiN4l8= +go.mongodb.org/mongo-driver v1.16.1/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= From 80f3c7e5348c660abc6d69f97135f9759b68f7b8 Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Wed, 21 Aug 2024 16:26:55 +0300 Subject: [PATCH 60/70] PMM-12574 (#3067) * Update 2.43.0.md * formatting * Update 2.43.0.md --- docs/release-notes/2.43.0.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index a931587a5a..8ff631abdd 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -14,6 +14,13 @@ This release introduces this and that ## Release highlights +### Official ARM support for PMM Client +With the growing adoption of ARM in data centers and cloud environments, we are excited to announce official support for ARM architecture in PMM Clients. This enables you to seamlessly monitor ARM-based infrastructure, including popular cloud instances and emerging ARM-powered servers. + +Starting with version 2.43, PMM now includes pre-built binaries for ARM architecture. With this update, PMM Client features, such as `node_exporter` and `mysqld_exporter`, are fully supported and optimized for ARM platforms. Additionally, ARM-based PMM Clients seamlessly integrate with existing PMM Server installations, enabling unified monitoring across both x86 and ARM architectures. + +#### Upgrading and getting started +If you have been compiling PMM on ARM manually, you can now upgrade to the 2.43 release for official support. The [Set up PMM Client topic](../setting-up/client/index.md) now also includes ARM-specific instructions for new installations. ### New MongoDB collector: CurrentOp @@ -33,6 +40,7 @@ Specifying a limit with `--max-collections` for this collector is not necessary. For more information on MongoDB collectors and metrics, see the [pmm-admin commands documentation](../use/commamds/pmm-admin.md). + ## Improvements - [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - From a3c584a1962f5ea3f5f131c9f5ee8696192c35f3 Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Wed, 21 Aug 2024 16:41:00 +0300 Subject: [PATCH 61/70] RepoDiscontinuation_AddRelNotes (#3085) * RepoDiscontinuation_AddRelNotes * Update docs/release-notes/2.43.0.md Co-authored-by: Michael Okoko <10512379+idoqo@users.noreply.github.com> --------- Co-authored-by: Michael Okoko <10512379+idoqo@users.noreply.github.com> --- docs/release-notes/2.43.0.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 8ff631abdd..1386c934c6 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -14,6 +14,21 @@ This release introduces this and that ## Release highlights +### Repository changes for PMM: Transition to dedicated `pmm2-client` repository + + +Effective July 1, 2024, Percona has discontinued updates for the original Percona (https://repo.percona.com/percona/) and tools (https://repo.percona.com/tools/) repositories in favor of dedicated product repositories. This change streamlines our repository management and improves efficiency across our product ecosystem. + +For PMM users, this means you can now access the most up-to-date and secure versions of PMM exclusively from the dedicated [repo.percona.com/pmm2-client](`pmm2-client`) repository. To facilitate a smooth transition to this repo, we have developed an automated script that: + +1. Checks installed packages and their repositories +2. Identifies PMM-related packages that should be installed from the `pmm2-client` repository +3. Provides instructions for enabling the correct repository + +To ensure your PMM installation remains secure and up-to-date, [download this script from GitHub](https://raw.githubusercontent.com/Percona-Lab/release-aux/main/scripts/check_percona_packages.py) and run it on your system. + +For detailed instructions and more information about this change, check out [our recent blog post](https://www.percona.com/blog/ensure-the-correct-repositories-are-enabled-for-percona-packages/) and [updated documentation](). + ### Official ARM support for PMM Client With the growing adoption of ARM in data centers and cloud environments, we are excited to announce official support for ARM architecture in PMM Clients. This enables you to seamlessly monitor ARM-based infrastructure, including popular cloud instances and emerging ARM-powered servers. From 373bd8ba11ed512d481e0c94d0edf25388611a6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 10:09:13 +0000 Subject: [PATCH 62/70] Bump github.com/vektra/mockery/v2 from 2.44.1 to 2.45.0 in /tools (#3165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/vektra/mockery/v2](https://github.com/vektra/mockery) from 2.44.1 to 2.45.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.44.1...v2.45.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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jiří Čtvrtka <62988319+JiriCtvrtka@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 66750c56db..0ebbb5c5aa 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -22,7 +22,7 @@ require ( github.com/quasilyte/go-consistent v0.6.0 github.com/reviewdog/reviewdog v0.20.1 github.com/vburenin/ifacemaker v1.2.1 - github.com/vektra/mockery/v2 v2.44.1 + github.com/vektra/mockery/v2 v2.45.0 golang.org/x/perf v0.0.0-20230717203022-1ba3a21238c9 golang.org/x/tools v0.24.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 diff --git a/tools/go.sum b/tools/go.sum index 9105b9c532..5295a51024 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -717,8 +717,8 @@ github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinC github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= 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.44.1 h1:lfvocO3HklLp68gezPBVaHl+5rKXloGCO7eTEXh71dA= -github.com/vektra/mockery/v2 v2.44.1/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= +github.com/vektra/mockery/v2 v2.45.0 h1:TDKO9y0CPv+/gm7KVBOJfzMcBeK7Y044jvaNdgBBVik= +github.com/vektra/mockery/v2 v2.45.0/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= github.com/xanzy/go-gitlab v0.106.0 h1:EDfD03K74cIlQo2EducfiupVrip+Oj02bq9ofw5F8sA= github.com/xanzy/go-gitlab v0.106.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= From baa1b1148a18fffa177776cae8cfde368a023467 Mon Sep 17 00:00:00 2001 From: Santo <31849787+sleto-it@users.noreply.github.com> Date: Thu, 22 Aug 2024 10:46:08 +0000 Subject: [PATCH 63/70] Add PMM-12965 in the 2.43.0 release notes (#3160) * Add PMM-12965 in the 2.43.0 release notes * add a note on how to get the updated template * catalina's feedback Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> --------- Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> --- docs/release-notes/2.43.0.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 1386c934c6..15d9e06103 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -90,6 +90,17 @@ If you're looking to upgrade, you can easily [install the latest version of Perc While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. + + +- [PMM-12965](https://perconadev.atlassian.net/browse/PMM-12965) - We've improved the +**MongoDB replication lag is high** alert template to make sure it: + +- now triggers only for `SECONDARY` nodes that are up and exceed the lag threshold, eliminating false alarms during maintenance. +- excludes `PRIMARY` nodes from alerts, as they cannot lag behind themselves. + +To ensure you're using the updated alert logic, make sure to recreate any alerts based on this alert rule template. + - [PMM-12451](https://perconadev.atlassian.net/browse/PMM-12451) and [PMM-13017](https://perconadev.atlassian.net/browse/PMM-13017) - Resolved an issue with parsing JSON objects into the correct data types and aligned the explain functionality with the official MongoDB client. These updates enhance consistency with MongoDB's native tools and provide improved performance insights. - [PMM-13071](https://perconadev.atlassian.net/browse/PMM-13071) - The **Explain** tab on the Query Analytics (QAN) page now properly handles unsupported MongoDB query types. For operations like `INSERT`, which don’t support explain functionality, you will now see a clear message saying that the operation is not explainable. This replaces the previous, confusing error message about duplicate BSON fields, offering more accurate feedback in QAN. + From d3d5430cc9b4119bf82ffb398491bc9ec881f550 Mon Sep 17 00:00:00 2001 From: Santo <31849787+sleto-it@users.noreply.github.com> Date: Thu, 22 Aug 2024 11:02:52 +0000 Subject: [PATCH 64/70] Adds PMM-13255 in the 2.43.0 release notes (#3149) * Adds PMM-13255 in the release notes * Update docs/release-notes/2.43.0.md Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> --------- Co-authored-by: Nurlan Moldomurov Co-authored-by: Catalina A <94133018+catalinaadam@users.noreply.github.com> --- docs/release-notes/2.43.0.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 15d9e06103..0d525633ae 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -58,13 +58,13 @@ For more information on MongoDB collectors and metrics, see the [pmm-admin comma ## Improvements -- [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - +- [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - -- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines for each log file returned by `httsp:///logs.zip` endpoint has been increased from 1,000 to 50,000. +- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines for each log file returned by `httsp:///logs.zip` endpoint has been increased from 1,000 to 50,000. Additionally, the endpoint now includes a customizable line-count parameter in the download URL, allowing you to specify a custom number of log lines or opt for unlimited log size. For more information, see the [API documentation](https://percona-pmm.readme.io/reference/logs). -- [PMM-13159](https://perconadev.atlassian.net/browse/PMM-13159) - We have removed the experimental MongoDB **Collection Details** dashboard from PMM. You can now find up-to-date collection information on the new Mongo **Cluster Summary** dashboard, which provides a more comprehensive and accurate view of MongoDB collection metrics. +- [PMM-13159](https://perconadev.atlassian.net/browse/PMM-13159) - We have removed the experimental MongoDB **Collection Details** dashboard from PMM. You can now find up-to-date collection information on the new Mongo **Cluster Summary** dashboard, which provides a more comprehensive and accurate view of MongoDB collection metrics. If you have been using the **Collection Details** dashboard, make sure to now check the new **MongoDB Cluster Summary** dashboard for similar information. @@ -77,7 +77,7 @@ As part of our ongoing maintenance efforts, we have upgraded the `pg_query_go` p However, with this change, QAN will no longer be able to list PostgreSQL database tables for versions 9.4, 9.5, and 9.6. Since all PostgreSQL 9.x versions have already reached their end-of-life status, we recommend upgrading to a supported version of PostgreSQL. -If you're looking to upgrade, you can easily [install the latest version of Percona Distribution for PostgreSQL](https://docs.percona.com/postgresql/16/installing.html). +If you're looking to upgrade, you can easily [install the latest version of Percona Distribution for PostgreSQL](https://docs.percona.com/postgresql/16/installing.html). ### Fixed issues @@ -86,9 +86,12 @@ If you're looking to upgrade, you can easily [install the latest version of Perc - [CVE-2024-33599](https://nvd.nist.gov/vuln/detail/CVE-2024-33599) - [CVE-2024-33600](https://nvd.nist.gov/vuln/detail/CVE-2024-33600) - [CVE-2024-33601](https://nvd.nist.gov/vuln/detail/CVE-2024-33601) - - [CVE-2024-33602](https://nvd.nist.gov/vuln/detail/CVE-2024-33602) - - While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. + - [CVE-2024-33602](https://nvd.nist.gov/vuln/detail/CVE-2024-33602) + + + While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. + +- [PMM-13255](https://perconadev.atlassian.net/browse/PMM-13255) - Resolved two issues with the MongoDB Replication Lag Alert: one where an error occurred during the import of the alert rule template, and another where the alert description displayed an incorrect current value for the replication lag. From 770a465100ee4d860a76ba71cd1713a83230912d Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:23:18 +0300 Subject: [PATCH 65/70] PMM-12869 - Rel-Notes-for-improved-troubleshooting (#3171) * Improved troubleshooting section * Update docs/release-notes/2.43.0.md Co-authored-by: Nurlan Moldomurov --------- Co-authored-by: Nurlan Moldomurov --- docs/release-notes/2.43.0.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 0d525633ae..1b35d027ec 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -29,6 +29,23 @@ To ensure your PMM installation remains secure and up-to-date, [download this sc For detailed instructions and more information about this change, check out [our recent blog post](https://www.percona.com/blog/ensure-the-correct-repositories-are-enabled-for-percona-packages/) and [updated documentation](). +### Improved troubleshooting + +We've enhanced our troubleshooting capabilities to provide you with better insights and more efficient problem-solving tools: + +#### Enhanced PMM Server logs + +The default number of log lines for each log file returned by `httsp:///logs.zip` endpoint has been increased from 1,000 to 50,000. + +Additionally, the endpoint now includes a customizable line-count parameter in the download URL, allowing you to specify a custom number of log lines or opt for unlimited log size. For more information, see the [API documentation](https://percona-pmm.readme.io/reference/logs). + +#### Streamlined Kubernetes diagnostics + +New PMM client docker images now include essential troubleshooting tools: + +- `tar` enables easier file transfer in and out of containers using the `kubectl cp` command. +- `curl` allows direct checking of exporters to verify their proper functioning. + ### Official ARM support for PMM Client With the growing adoption of ARM in data centers and cloud environments, we are excited to announce official support for ARM architecture in PMM Clients. This enables you to seamlessly monitor ARM-based infrastructure, including popular cloud instances and emerging ARM-powered servers. @@ -60,10 +77,8 @@ For more information on MongoDB collectors and metrics, see the [pmm-admin comma - [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - -- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines for each log file returned by `httsp:///logs.zip` endpoint has been increased from 1,000 to 50,000. - -Additionally, the endpoint now includes a customizable line-count parameter in the download URL, allowing you to specify a custom number of log lines or opt for unlimited log size. For more information, see the [API documentation](https://percona-pmm.readme.io/reference/logs). - +- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines returned by the `/logs.zip` endpoint has been increased from 1,000 to 50,000, with an added option to customize the line count or allow unlimited log size via a parameter in the download URL. + - [PMM-13159](https://perconadev.atlassian.net/browse/PMM-13159) - We have removed the experimental MongoDB **Collection Details** dashboard from PMM. You can now find up-to-date collection information on the new Mongo **Cluster Summary** dashboard, which provides a more comprehensive and accurate view of MongoDB collection metrics. If you have been using the **Collection Details** dashboard, make sure to now check the new **MongoDB Cluster Summary** dashboard for similar information. From 221c484e94760d4cb24ba9575062e3a7908c7a6c Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Thu, 22 Aug 2024 18:57:52 +0300 Subject: [PATCH 66/70] Pmm 12766 - Adds Rel notes for newMongoDb dashboards (#3163) * draft * draft * draft * draft * formatting * formatting * changed structure * oplog and collection details dashboards GA * added SS * fixed SS * feedback from Roma * formatting * added link * Added Rel Summary * replaced jpg * deleted jpg --- docs/release-notes/2.43.0.md | 46 +++++++++++++++++++++++--- docs/release-notes/new_Mongo_menu.png | Bin 0 -> 52132 bytes 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 docs/release-notes/new_Mongo_menu.png diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 1b35d027ec..55a84d4f11 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -10,9 +10,49 @@ It enables you to observe the health of your database systems, explore new patte ## What's new in this release -This release introduces this and that +PMM 2.43 brings a host of updates, including redesigned dashboards, new collectors and metrics, enhanced troubleshooting capabilities, strengthened security, and expanded platform support with official ARM compatibility for PMM Client. -## Release highlights +Additionally, it features many bug fixes and performance enhancements to improve your user experience. + +### MongoDB dashboard improvements and GA of recent experimental dashboard + +This update introduces significant enhancements to MongoDB monitoring, focusing on redesigned dashboards, streamlined navigation, and general availability of previously experimental dashboards. + +#### Redesigned dashboards + +We've overhauled two critical MongoDB dashboards to provide more value, especially for complex, multi-environment setups: + +- **Replica Set Summary** +- **Sharded Cluster Summary** (formerly Cluster Summary) + +These dashboards now offer enhanced usability, improved insights, and optimized visualizations for complex environments. They focus on highlighting potential database issues for faster resolution and provide centralized, actionable insights without clutter. + +#### General availability of Experimental dashboards + +The redesigned dashboards, along with the following previously experimental dashboards, are now generally available: + +- **MongoDB Oplog Details** +- **MongoDB Collection Overview** +- **Replica Set Summary** +- **Sharded Cluster Summary** (formerly Cluster Summary) + +#### Accessing the new dashboards + +The updated dashboards are in the **MongoDB** and **Dashboards** sections of the main menu. They replace the previous versions as the default dashboards for MongoDB monitoring. + +The old dashboards have been moved to the **Experimental** folder and renamed with **(Old)** appended to their names. Future releases will remove these older versions. + +#### Updated MongoDB menu structure + +To complement the dashboard improvements, we've also restructured the MongoDB section on the main menu for better navigation and accessibility: + +- Reorganized menu for a more intuitive navigation, prioritizing the three updated GA dashboards above. +- Decluttered view by moving older dashboards to the **Experimental** folder or removing them from the menu. +- Added **MongoDB Oplog Details**, **MongoDB Collection Overview**, and **MongoDB Instance Summary** to the main menu + +![New MongoDB menu structure](../images/new_Mongo_menu.png) + +We encourage you to start using the new dashboards to benefit from their enhanced monitoring capabilities. We also invite you to share your feedback in the [PMM forum](https://forums.percona.com/c/percona-monitoring-and-management-pmm/percona-monitoring-and-management-pmm-v2/31). ### Repository changes for PMM: Transition to dedicated `pmm2-client` repository @@ -71,8 +111,6 @@ Specifying a limit with `--max-collections` for this collector is not necessary. For more information on MongoDB collectors and metrics, see the [pmm-admin commands documentation](../use/commamds/pmm-admin.md). - - ## Improvements - [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - diff --git a/docs/release-notes/new_Mongo_menu.png b/docs/release-notes/new_Mongo_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..17b190ef51203d92990c79ed17fcde3620f42200 GIT binary patch literal 52132 zcmZ6T1yCHz*YkEAGrOGkJ##BQ8W~z$$ zkt{?~Rp}=cO-#*~AxUfmw~CI8ll6?HrM9(}wzjnunzq!)Ilc`76_vTUx#Z@XgY-B_ z(NuOD?2cq#L1krg&Mz^5caRbW(mAq(-s_$v#45@Znf&HfbyxD;I(u8hpf6=boL~1! z&!Tm^0gO;TAjp7BFz;fB*_chj7JYGTvIYT46%erAQqs(3tc>^G?;*u~(L;n_-Z3MP z9L;$dpQCp3?kd(Pz4m-ny0OerKQ?4j8YP!HEG2Z+4nee0KP=z$e7L3#=Xy1T`L`|= z6vBAoH&KbGi!LauT;VC4?ukf-(bleHCpy1V2@EXWTHgoMI>s^aln8oUfoltVG~>m;0gf7|W=!z>cATvre>K@xy+fbO_m z-rD$GCB$0h)Sgq!}?wFoa;pN z8v@{>j8GOoe6N>xv8L^_eq)7or8<{6WT#v1lO*4c4itFdp^6KKcuF7*tR}<%Q~HOX zG`iu8t@KZ)!+o{|?ReXiqJ{`^#IjbSaWM^Qt+Erk>UhjF!l^^_oXxS`e;+gY1@LA3 z)1EI;!4CSl-Mq^T+S+g&bd1_Q7RcCojvy!|4q;(&{}`B~KejLv#PH7}FhZeA5Iga9 z{0P!T^t4gs!}W1r3e1TPd#P2b=v5U~v%emcuW(-F4wY@9@ z(E#^t)FlOA@@jqxY(;y|gth;SXFuX$af2r_<7vsND{YXD%dt5Zo_$va%z0W(qjJhX zH-vfbH%LZ&_p{o9?#c?&8r5zx>R_RtDWY2oIjDNci zq&V>!FnZWr8dkJ06yr#jQoCtW1&TSHRFg6TU*SggZBmol?nYlXM7$ zXQW*?9;Z9$zh*`Pg>Yd$k5x@$epwOmy|cH(&2xcG%xz4_GMCEN=_h?W^=@q*tCEY{ zwIkw#ej~}>q5Fd#U7#l-fcOf)P0H0+>6L?<7N-O1)+w1xV`-dx%ad!KH;a6ip^Xs) zjQ3xpbuL5y!|}Ij9(uH$)P3B4+mClNb$?LhmzSBq3 ztK+9BK_RhB@w3t6`p4@3nc3S8p{&-MG<4{~6X~Ung^DgS;wC;K_-sLi)$co-BrS4| zj`-;lng3cnA|x)UVp*G*<)kLw0PUx_(zT$1nsgS11%a`0X{0#~nU31}W_Ns$SuUTm zN&KJua!c)R|FseaY%EIeQeC||HI8%nv2r@gjkM*(O?ld$4yjp#Kn6CmhQ7Cx!fFD$ z*;b+27b|3Db8`p7QeZoKGaLXJG21jC3YW4+YkK@0Ncy9vt)5kOhVS)vDIB^uY7MhcKk$0<7qh83Py|C!Jwpf?;D1z~Atw3&hht6d>J*;J2(?pSFP+^ev? zIoxw%7THHfB@r|;^qyR>RRlpkOn>_c2#LES$yFFRK!MF}%poY@>qkU3}IHmoijU3dl4^sOw;fgbbz{boQfCx$Ts6$Y?2Q2slr`%fl z^M6*dgFYBNE*^x4mHpxcKOG-mULdWZOFjdOge~vnoNb?yGbSs8M*bO2zYEa@(|E?j zMm27zPKhowp0O^lD50yG+$pq{0QVToN~5s7m`XUkhRfcgf4q; z3_n72dZ0AivZs_*2T7_32DF`9!EU2ke_MJ+V`Pb7Q1ad9uQ$xYfl4--S7SK4P7&oC zuvyr{E)M1P!2YC|bTn6X_6e1wLNucxeEMS>xn%MQOf~5-oswipNgJgj*zY)AUdQ3k zp0FK;wH7WXA|?Lw$^koAL`aWHw>&tRV~0xm<@y^s?_i6SW@tU~(KbISObIedA{E{g zi&Rfgt@0GEBT!!490?NiV6LD?O-pBS_)M3B?;+duNh)2z_v&AVP3VXGc~0#(XGm!A zW<7%>+5P##$uhURK)0rbM9`#4f3sHf<8UpzB|uT;I1ZK&o~%}MeFcqN_OGuz3=sT| zo@c3tSzviJfMAvF9~3xm>2bwS_UOmO1k=KKks;yDKtCib`jo2qQ=cP~Z%mB+-r{)NXHHFN_#_QUx zVQ|Z^Qtb7f?g0#0ergnVgD_ubRwMseCSBcg=AMfxMnB7U|8fWeZLw zj;pQCjh+1j)PeU(Nc0MyL`b4Huco7_Rsz_yD{OnB%}~mmZ&#C@uMeuS9#b@vEvVAF zhFEJ7*-CwC%FVP>stPNH!`B$5-b?0QM2wkl{+d{1{Ld7f+L7g0h{M8u~q*FLQm?Vb<4?oqK(fmdxt*QkwNj5wI0?anA8_ z*75r8<@*YY5ip_Sd11{9 z!_#XPq|8@V!ja`)9G^m0=K9CRjX7o;`#7)s>Ly*BHSYSr(;%!ssZ3jLIF`~b?7^{c zkQ8Fe-D-g6;8omPcB$G#Cbo-2GnK6^nb51zC*|C%0K8-XhFHwl9zlK5wAZ3o*Mh8a z8WbV1=Nrg`{k>ZpXG3yL%;^wh2vb}V&(h{n_Rb6=x579dU)(20de`!D_hG~5HHdZT z^zIh1n2$pqALjOKgK`vfX0<04hM9jfXQ>2sIK}Q&BM8gIIf%Qo(`LDpiVK8pipDuB z1I3nyZQS>{6dL2YsvuQdkZu#rT#^1rJ^gyK+E?w?FX+!rduR+8@=Q>Nfr3!A*_wQd z_zup{Q&m2Zl1)K$3@=6CSK~71>AB`kBXZm{J-MCd7Su0LGwIZ9Dzg{ORI_Mfu7{8u!Fr!_ao@+=*V^mm1 z3mACgUH8^pFP|r>DRq|M`_zcEf4esyJqTr&YnZWdt0HC-+IDV!8?~xNalE4h93Oy2 z^R^|;d%?+vV;s+>ijY2uAM`=p#kH!*{Q&8tlo*xTX>FT>8p#R5GVOX4i$7mae;dyT z3m=U}kbUnwoGC0)*myL5_(5IIgwNg>YPrxlubwbH8j3-Auy(gm@4}!~T}wBCD^A=7 z4AGjg-6EEE^5Y;0lqZhB>`){E_ChWQ?sT78$E)@q?oRclMQ&Qo_NTUTg98UH`Bdv=xrX*DKCDnH(jWTa-to=(Rx}O${&TELewQPf7B)on$$hj2suc z;K)lrXPy>by}Sc{Du|u>NfvAZj4-^z78Y#d-jSox%88o*-e2JWkH4}VMy{M?*Bz_R zTru#;?N78+tjz;YQdn)vJ*+p{h$T@H##F zr@!F(JizO)jzd3tcLayWj%4m0{j62Uu9aQ+N+>I?RI3K=*(jT*`D3+d-A3$$z{f;> z-Clqw6r=~C#YZ^AyZ1w7QO2#g1CfK7JN@lB#^%CH8UxO_UB9xwV7O`r)W$bE-)f-! zs_5XxVOLVDy==fz)=^RM`vsWikIntsa$U)m%;c0pM?~dx6R&m<8`a;0sAMJpm__(p z7}|qO!&9Prr5ALC!MZ9K$M+T0^CC#Y=GbHWR*&Z{&n&}pN+KlXWV4gSe6vP7B*n${ za38)ySdZK74n1eQ{=D4l^f0m4d!uU{q`J>xtts>PvR-n(*;6<-cH+#>7OKv%k_acC z&YO(qx|)a%z=v`qvQYFVu@)&HA{%6)8}UyOrwK}!6b&F9l|hi?%ZrbuY%5~!lTUR~ z6I0C1lgWi4K~}HO${*+tzp<^l#SKZ57sp}H%S*0lN3?9iT%pej6-Ht{+{}jV9=S5p zuD-_Mc0S0`BA3nNG9gM5jU{u^8R!atH@^?duRWUBIGin3sV|=dJn|dkk+#h-dI_&M zPlMgmRA$L*R@>w4B0qoH$?7FQTd5)PIjQq%e`2O!4Bw*5%_(TeBR5JNaB`i&}dfjl2nvTH}J0{kPfaEu;xZIx~zDAwT24rQn!Gdc4Age1{dH+=SGLeza|NQj1 zx!~5t(>{s6D)JzTdt+^mf>onjmvGhzrei|-1Z%iXg{0Q07O)|>z)QF?rJM7XGhX3?aA`{#zU8*hf7Ds?4#){9BLqEtT~(lXKNoOgn}1A9}!a>@SfTt!q=Hy z`h|zLtPp+e$*V8Rt=;dawXBu;j!oUJP1Zsxlz_P&YJ;NsBe##qm}j!{cvpCZ{T8WX z%=DpTlIlX}jTA?7lZTZK6U>E4B6&v_(Icu=D4S@kKJEi=nP$`MrA(*S+elBy_$UfNf#1DtP>1@`_%IM92Ngb6xy&??WcrbIbvUqIHE*O zTnx2n7qlO~KUwfc7H(K($P)c|wcXP3<_>#3P-#Y~1>WqGYE^@*K^4g}jHt}~@`NW> z?@{nAU*AjKOtdj1F9~5>QZesPFt%C$@Acny<29xpB98r!Qgw5~NJX=x!1Ifxrrd&4gzsuKw!ZmOGKlN;bY*g-tYVR&hb3(ybH$PI{EbmJ6mE$&K~vp+cg?KkU}_ zxlxC!^S&%U1OtJUFvS;_VUvx;gcM1Vq7s3)r~*S%N?U8k-j_0te9#NDxbG{~I>jMr z<7ZI@`PXRM9Dm-1JqIl^=K$m-G%?h6oS7efBUPB$C43rU5KLOpkliZ!^Vp&<-I`ZY zt-pu$)XbQMFaVF$eVqS&7O!^uV#8<1%E$Z|SrGk)NHiWvcC6%n9|Q5{pK7H#s!4ghh#i!WO&)h z3NwawoF7)?Qu&wIo3$~@)PCWiyLTRcsdYOeTg(jee$UE{>ohng#HeJu8-F??*}W{XNnzYz)1CfY=OO0$Z5Fff#mlX6&H$k} z96vZ^5qyH<6fwRP?U-L$dG<;=v0jh2%a_z+tM(!y%y$vnYs_Zr9MmTJGiZKnvcs7I z9m%__WYP41L7-oi=MQa0VP-DXfV)Mx$k>jD$-bJN2g>(f^NMa4Z#dMi6MywJuU>8W zF9|#So_qGL64%gDAQXb}{^Q^`4xhSMW0qKEF@jxY;oSsc^hcx&JF*WPwLvlc)cku}7tVgIMINkO9~ zLt~g}d_Q9Uocue?=co=g!7L9IL1UCzqOw0O$sM5RVG*1}*IU=1nT2gz?vEB-mS*TI zO-%jEloV_Aa`36KQw-rgvQurutr=1_y;~E0frz8c96W(1X-ze<*hUH!1|9wV7?d4J zsOt67KZ_|^Rbt6ld|{wIT^~63bkeUiUsosBRAKe+pjSHi4i}0-ytH~;EouL7v1X`N z`<~PV?|b>6uD4(Zh$^hw9?%dcCI?7H%-+?dzf=EtRwLWXB{$xhx>{;lco9BBK%^9* z3tO%imZBFU)#4~qpzxs4!yD{g{bD}4sPLo)`{~tU3auW3fSL2LrsB`Z)hY`E#xhm2 z`vobTbT&|fH>QPNzj+Wl5vLmxYA`}NG}h{SJMU`Qu=?!<<=M*R$@2O(2f!ykOhYO7 zwqa@cHEB4hZgJ#ccV9(}v!|cEU8c9~ZUq#ETPgaE;-%9s#@uf-IBdxkZsI0)Dm->TD z<;xkhNv>Qnw;$X!(asF+KzY76kLPm)$@PPkomKmSz7wApmGA_L#|dorx)cy*Rz-nd zVfTYPQ)Wb!-Nck^ciMY_3nb42KM6Js0$;xE2)DyuQ)e>;boe_S8FXSvy|<*pF^7PB z9?o~bm-MqkiU~0>tcTW{{?{qWOfRZ=N;4@mJ-}~uy5;ErV_g;K?*ZzJOjbxCe9a4b zDiV>%a_u>b+x~PcCen%VRyh<3tlcaG6p@xl39>IBw0>&xanC+}Wdg3?uZ#%(+^WH> zH3EgWe)c596J!x$W@NCPVOS%&u*D!W=OFRp%-*gQZO3~%ta`kLD&1jgv3l7>(|73N zn$TW5TQBuRyzkw&^QwyRh=RY94GPnQ6vDG;Y#0FUQXMQ5&?sH0(b zY!tjL9Q~9mglUbHF4=c?6#~Sc*;rm{K3je9{?XquY2wzU|v|O zKeykS`4}u!w*ako(6He{&hdkhh*RO_XicmtW+4w^nG8zb`NV^g?qOE~on(-Y5qj@# zWIMC?(aQ}UGiQ9?JT;IK+D2Lk?^AxSj+CloKjHU)kL z^E~i7zLq$;*y`@F*HM>Zxz@s|c9dG|${fsJEmt0}pM`tZ>+JSNF+Fk~NRzm3sYy{% z_}mKqT$D$Fio{(%Of#Q&jzl-`Aaz}*9-zBp+f8Z5kq`MICuEj+3jG2-eD=chFwd(d z^irhY$wl>GQo2W??9g-xSphBU6n1?)Qc)T;gt?@+Peg&_?A?@A6@^-^x?->xk{r`6 zjqrHS%xJ?7{L07x=t6@3P?r%tsK8mIi+&q{`VEvh4A;61yj-rUD3r#kh_edy3H>!z zA9_O7mE;J`yeAE2{*@%eXt(`5Jo5;`HHKZn&iR}G_i)WzA(%Lvj1QzH=xLG(p>5&u z<&9zLPtCIwqMx7JJzlyUoJkoMpoD1q)-0Lh|VJCRwoFn*;9?p0oLuO^QbLH9?_W-}D4!PNz z2BilKx!G0f$kGy?1<~u5Hg34;b^%23{1)^*!ox7BrM0TRWEaA>38JmP7KN~+EwD!% zSG4)@KOe{}iK`I^IPi|$HG!)B(ZRaNqKOw)d-14M4gl^83eVT^k9#c^r6>8+dg_6xuNY7_CA+N(i>f=_skXl?%@*W8r6Dj2H zndSC-M&B;53;1YAD=t1OjYhb9=D<$MZAd_o?pV}FNe0x1iIcF|5*91Eh>$B59a4^C zP~cxC+XmXLHf8`fU#^!np_l{ROh+TY09;r|(AG!FwTuBXQfc~jW`aNG(UY&Jp+nSC zdx*}dd0_Ddyv8|HJub{B%=`7*w6}1tk0e8x6LHMuScccA^KKZ>%M68pd*jl2cgE*9 z5?)~#wmZ=0WcIHx62cC{Oj$@Gwi4*U{}=xM5M(7GZgXY%Z945N${iibQHkZ7DbCH$ zPMGo!(~m|UtSnfI{<(?zzY2)J=>4AsSwwC||6cV?l=Oo*Bij{#{#VfgcLx?g(k!>r z%C&fNTrWVFc+wMO07realZdbJR|LreLN-Okku?+m+W@Ygn{b6HJ*fVvEiC9O*Fxgk zC-;vI`*v+gD8~xeRM+%M`+tPiH+dF-3VFMXf=X%oR}1e1G?I2cO6nPH3IDGNoG^J7 zi9IlI@YoH1bsZ}Uk+ z?#ha3)T2E7Yd>Hu0WNY~tW8M&mJ)OaR;EQP*5VVgCjWP8l>{v0HMUr_8~v{lvVg%s z@m57V3fAPmmls?m>11X-CFI&*{Cg!%bVIXT`<$WHe_{p&`KNTuqW$y zBu%n-9DQ-eLwAp$>zNOzYf}-=8)^SL(^;VRg8yb4|8%snA4ICF3M8T1Up>|kMw4u}YSuYQ2pxXH18Es&c`gphp5NXpqk}6^)2JtlDHmJOYosKqMG- z8Z_52a5{EAitEQnM!bRf4N5ji$;8zg-FMP@y_8(7LOnJNi%wjOPZ;w9st3%W&_#}Z zi!ECjx`5Tf%VDBMBP}u2`UkEQ={TyxL^ha{ISsXfD1j&cjBg+To3-{OyOkfRKgngV zy?BCrVlLCvFx|*LdZMxN`#uwDCCKv z<*4&Z?SKs}TAZgugVdAOHS8x%PjrrKy^!);I801m&=R^cIIhMcV%|XS^iX~*b=?{x zt!osk`{pqS$^5C8!QUbS#Qw^0`5C0xp0iiw^UD7w&Xi$8wFx&NIKt^uzRZ~5vN_1KtQ;hurXPSIzxhEWPTxlMgUD!++vr^%04B;8GtYghLVv`6 z_5=F_l8CNmbTb)dQEfAj7y1DeS<9E(qo7XE#_=Ru* z)~r`ze^bN4 z(PT8^*^y$nRJ}`GqB+Coc51Nvc&9&{&V#nLScwo%ulL;>lL&U@WjO`Z1UB2W%bj7e zferdvWgpDp))9o#cfDR9E*_5*&Xe^P9pm5DDqwYNnEt%O{*d%!xvocR%tM@*6g-VM zw34*QXA^CxOM-x9~Qa%{P zONNtHYrVaG81oBbeU3_@JRD|@d16u$RfAs&LV3M z&F;6WcFuUA^<_MYceZU_fmBDtjHm6#`kpuO96w$1e=j*L1{PUjMmACFC-a%w#1F8| zdKff1`$ZD+k!o$WAL(jLe4(77kVnB^-BB^9uobZ}4mJr`u<;_^_6Lx3`m+iP4va8P zipu%l(ZLiQeu5$4wjR_mWl8@Y9jNjykQxAm<@FVTa5G;LK_y;ctgd%gpJ5HG;K21E z`b#Nw`3I@Sc%v==wd1;jUc#X{5v-SqrY{T;oiEj>SKi;Ty!`jk!IOK1t>q4AHW!=oP4?8V)Mzx+q#j&vk<<5J$bc3w zdBnS3d7}5dIQB!zCN~OsM53ip@N_fIz)MO|9abxombt|3KD;z>M5BDF6_do`yb#}OG@}({z}{MaM9LBON4)ul(N0N) zbar$cDSKpPs~ofOv|BAS(cHUrqGDJER#pywkD85NXf0~_?zZKlyg|ju90Xb8nF0)4 zSX7FW1rF=(pE0y-Q>;?iFH(m6;-`NUAa8AKaM@x(m%J^C2lx0b_+x3=*l|Ih$80bWgJSgSAql;BAy3>FI)FA*tFKSggO<8*@U1xE0hGPQeBzVRmi-6 zt2w9aOnZ_+Lemr5f8i;NxqKLFm?<{9d)y6w8J5;KPJE?1;W>2eDAz5Rk;J6e)!Z)$ zL*wBzCYR9Acfd+M{xMW1;U&F?9b#v>|NKi~!%8UZJOG$Smr^$`{O(?vTxQ0mVV!ye zkIh^*9Q#!gg%4FfDb?Z<6)f3(20KB&BHqOnxsYZ^Uj|1&U(4BVS@4!Hgf(@Ip}b)J z*E~a9HSc|3Kh3y5Y3m;X^sK9~lu<}d6`Blm z7Rd>doKb@tiiMC~b#B#G2K1QPevBjA(Bd}aO5K=*Efi%Az2kND?W><^M+3B3lup)0 z>ugcw3OqD#PnG8UZ^H z-1G@Ju3QP^hSh4dHjmg3Hw!y$im$rQ!AI|=*=CzyjWd=#L@J>LO7BTSU=oaJ)Js1G zuaYGgR?6)SPW4s7Xh;XzS;bwww>WZ>Bf7ArCHrgrL9vb@Pw_Dc@BD8(fkU^^D z@^sqnA3jUR(}>+)?&M<_XOhJ7Kw(fs=Hm&EsA}h@G6rd3%Zn|tfB+||L~3x9A7c$2 zUEn;<_b0#HB2ly{CgBjBTqUu7Fa?XjwzliqDes?ef}CRR@9xqW1-K6r$pxl<;bg=d zduiyq)UBEo^Sa~EX&+e2^SHf`2W;hT4{r6adQao<+jOe|k5-`~@FP7cfTpKlg)qM7 z`gKFl>u6j-K*wsNsPmQxCb?0T)Aa`P(He_Rt6q})4FKXpC8KllrOZoSg)u0{5{qV2 zgNQiak0o=2ue%?s;qg82ZE^0beb0Ij@|90v_Tzup;qyO!U2ki-o@hp~GGBkPI|NUY zLTZ(P8D*t2%$&^{qhH#~X4VdZS{beP4n~&&5P=_|sFJMmz)?38y5=e4#7Gn}040?X zQG*6zv=@RDS^cg&^mV&C+X@k_yYjn3HtvQOwCmH{XV5P$dz7$IWN&&ySzA}R}EXQh);LBh~_FRxF_A}X0@nTPWqSiOT`gK_1w z*x_0K)5eJJeYwTS+|XB4McDePHexzF-x6_tC|y{M_|sJ= zpB^I@XBx#j+WxOJDA#hxhv4%|qz3srv0`>Uvlu*-bkg>!k_teWM~o2;AndY7H9sI* zNNS#GFRZLXn&t+Ror*1V++e*TYoFA8i?4XGojCKS%3$iYqh6|pHs?2SC)E5QrqRR! z7vGw~CY_*Qxhn)bXgEJy@P8Tr)+)lqzQx4gW=PTylHcf}2f~sKtqaf)1 z`g=GXr3JK~(e^hK16W{Wkw^@~f zcase83Ar^K4QPmcoS3a4jkSY}#QLIeG zy@H2Ey&k4BSW?SaYDuttjF}bT8Yt8uDEknR^M7aphr)k`$#Hy?DY`?BWo-3A@63k0 zjaDy4XAM`*A5rq!IteEdhkMdSZwKgl*3%Q-DeB~7#T!H%E zJSr!@c)iX81#k-cu01#Pn-b@L7fxH!h7Q9we`jv!?UhNvnh#2kTlV;j6rRF!`hmz; zUijn3O|)(T;Wd%todNJRL>C~s#$<^W%0@M_Wxl<0;Z62l$afy6d*(VzwUa7J56et7 zexzg)SBn(hU1r1Vd`=tu(HPyJTPK7l=bK0-`Xan1nr8>#F2q^a)<<%O}& zq#qhSF&v0WUsu*$N|9!Uwpuu(1eTXQK7>b7IIX z3X|?$ri_&6QOBL>(U6;GeJpnnLbqVSL$5?16J207TA~{iwHvJ?eU{lYRX4}$@ z%bYKLWXbtlxJUTeWxcq`>=b_kAewH0Ls(ltd~@e6jU@NZ@BI_H`z(%*MJ1(k`T4Yq zvR8JKa0vI|cYM4MQWC{PhMzwpY6G3vcfN%IeG4Gz)K1WY3|(gUm3w(d)3YE+&3V12 z0}Pw>+FaEgar9dK^WQf3?VLaAz`o(=w?O)BJipN?*SkfGuu5Nwc$YM&0Pb25QQRlZ zLxWLzev4T6Zse3e&X%m3W>Di47Skbwy#?Fu&Do0wf29;TE&^=jNLg6QAIBBr%E@vMqv{+WgU!+A3;>-=U)Za zOE19RPfZ{GWn+TioRWBdOnc6;mhmDH=@6QOxKNELV4g3K8xgu>aV*(Bsh-uKu#kirJi)ps-g zO$1((7W5+ey^eaj$?O7&vh2u~LuMR01_QiJ0z4LC_F`d@=1=0|_)z!cX2 zkB^g@3V^faha3C{&iBPHGKqA`QY$Xc4{WMxX;85Pz>K>aPfc?WrS*Qa=LCR!ThWgl z@NcGz;3^sLra+IE1g1q?Ai0-riY8L*zLA={h5+ma5V% zWD&J!*KFMPPGRyv78F+TAL#WJ6-1miM;Xk@K(FuQ18JGEs z*faXyab(|R2m>fNrQ(`?&eXO@m{$@^4WdxffBu&m+lvrW$hIVL5`Z@|2V(a8%1rJ` z@InZ5U>r5)I5umk0;d+k8SO9Z|6hBz#EBtI*UT3r$5OvLO*upzqZ=r5=WUxv0TK3YE> zYXGe5ibzYL<#kT}A9Pj(hJ*tBvR4%=ZL%ZgOBOokS3O97l*O?8ultaol37AwyMLIj zyCC+0qjbY!^;(&nNkq5itlpts=+}R%((1MN*I2;}Tnn7&$ZXO|49!Ve*6wiZak-oO z_*H=P^Fhuc{=3N*3FqhjPV{JG*R(JHQFT@*T*nAZ2e&aN*|{}R;TRU_cSrW4%hM*M z5j1K4O)xN~?yklE_Dj>U>B|xWGq#qB&D8U=Jn6b-55c@;`Us1NdS-Q{IufcX=T6#>`b~H68e}>#Sa9{~^*~tp^Fv zt6RFJ2@$`a#0&KXlhe;m_h!x~v!QFn3HZ-%i?;Y(bpKHX1X)Qt@hn*R(h6;nCtSXHqL%7G4VnQ@}HP`K+$RKw?yBZpL1HV#P+;n+0@Q*WWEM$@ep zGRXrsli2~6@UT{aLw8w|>SRLTyn|dTOFbDZTGbpdk)Ely(Xkks7OR!{t?;k;bcPBR zr0UekbYmy6S#48QM|s$$V4!EVn&r|(rjj{TL^lxV&ARFuTAYl@f$2E|ZRW?zWL_7^ z-1Irx|4*esUsl=)$DyV0#z^P)lGe{XNff}K-{ZPW=QwB~+FL4EeG8u5aLXz~#!dRx zVbJK?ukh4eNUsYUgoKqnK=d`tQng}t_!6AOqMRjgw@rLOFdJZRGaLjqLZAeow~xuv z;hH!1NF5qMNfuMPAa-?l5{|;4wD^tnnk825$i&l#WJbPBR{;Bn-xT3xVU-WhT{z%y z>+#ATBeHMe%3ZqBiK6Wb^L4D#r{k;Qtgv$_(b*1#%5X6owCKwd$N7w%|>M zcXUKb%eqwwY+24yd)Bi9Kg|okn`dlz2}JFUWy<-SZOH5nClsdY)MlF+pC*f1AB`|D zNM(AnCNw*D=*h*u&1K*KpprP^S8!%R11d%tX=wmW?5DIJS$h6)_Npgo8UUF&g*piX z>qLY?;xfG}ZE&JW6agW{idlx2|2!^w#k`%a#Gm9AL-sZ<>p08;a12Ej7`9ISZrb21 z1XFJ?jP758R)|^&nu*RK>g6sJh|-%A*IOvl$&Fzj!;+WT(w(xK1@DIT!J8O% z5)iGZ@l3%@t?e@&->WzZzLii4oen#VUiA-aZ?Meo$Ro?|v^T1ntt++!cVk`%2%f^B z(^WOS`@JIf`h1rOJoPwyusT)_y2P@`egC+ykuU?6U{rBD#!}d5*T5h`&&vhN;ZL`% zHtk+;3BFM5L@W=Qo~&$MI#0t0MPGPgR`bF_E)*={^l<#h4tzij!=9^355+Wd<#UD2 z^?r)L!JiACv@zW)4Fj#9@{aQI(v^Cz@U+a1n{TUjOj`%A%RZZS+)lSY8Y@7muiw8r z?~Pidd@?rf!HcF1Hc{VryyNF~J1w<7ds3@|LgSI5u>lsRBls_fm*Oc;>`bca3WDMsEaI|xw zs}0Zat!9+X{Eq3v)&Okzb0GjSAk+5?w;MhRG~u(AD*t3l)YM2uV5OJMppLUieu=ek zzqMLbH&$Rq=kSy8ruM0Qoa%hHt_MwIs_W0;2^i!POWiKyc&<9Lk~1gFopL?fl7ezYX14 zFzNkF0ApsR_lsWwodM}>HFkEno~QH`?Osm(ekV1eRV^oTrC>YM?BP65aSX6BYq}e$ zNj<_U4_6(V(_1L(WTQjDJXkpA4Y|tsO=BVGSEbXsVFu`cr(4TlZQ`s%eYkan z!8}$XiZB~2xrXguRairnsUl3TcFUr4ovd!?l$hF#*`Bs)agQO06PE!EBUsC#P1=V@ z74=$WTSDmQ`j8d$YGzadh@wLFJh!G{J#X)YuJ_K}YT?wu*-Bf6^yLE+GCDkpelxWYh7ZDC2?ysG~K2g zKO;^Z4%z|IX%LJ3J5=_|gKNIq!@~d_LB{`V#*DFH^G? zbd09UoP)>*%i8&FxX9p>c5s`qn=`|TO$cw?rAlwn61Gf!_PYGqI03sEhcbYET5T`B0fT7A^o4wZNYCgwBvzP9RjH977o z>*Y^&KQN6}Ahl=Gvdt@#ODpv}a7>qdu*E6ZZ`oNcI*RVAvD4TcI~MAhS@|U4+0UVJ zQ=_z}H&&kZwwkdB1qVIMywltJ0EBcu=N5s1`wh$<#-dGp=Uthfua_E0 z`d-9}h8hM+HaQFbXg+bAR{@0(n2oE|^O2nV=wh^%9y3(5s*aou#;J(Z`h!ER=x0LP zo88|3N7q+I)v>JG23Ukea0~7PcZcA?-Q5XpNpN=y4#6$By9RfHy9Afu?hdcX$=>(g zGsgS3Mvq$6)z#Hi_04b2S#LA=ke(tdj*1xVEE6V}tq|@k`y5f=Zr}6^B{@|(YROw| zK}N~m$+Aj%uRga&?-cs^Rz#RU z0a#pcU_>;tv-eQx>nk3Ipb(F!ev}z;3Td2#tvo&FWB|cb=S_Qmyh}v7w*x6=IKH0o zaTO9>tx$1T!P1!c+eY+!%^nfI_^0DOIlO!rf}?a3#&!?_k|9R-`pEkx@$>huc^DwA zN*+91lEa6?umMifM9tucsH{3?hANn7$DI*$yks$L0h(l0u^!2&Pr=oywZe?jgIMb+ z?r%ypTfk8wYO9saUvNRat-Nb&UCwjo5Vt+8F5Lcrk6>NTkJmKW%A?)g9NRM3 zzgm;evFwsLe`mK@l*Zinh$8~V`CcF%ou!;3udr~1lo$%>x!M=m;*_ zy(+YB^>pptXvcC58OlIGqkBu_BVoz5@kdQ^652xNu6F&!L@H*B2?=89%9W|x({Gc( z=P8QX@$_1>+46-?$R(WG-XSQ#WRS45!lbYqkr?6NRrGiWIUb>|pzx_v%Suz_fNHxD zY@v&|%+Y(0%*{jS_(jy*6@;%qi&n`(4;ryL6fNR#O6|9Lgzaog9-kWw#CBOO(zWiS zsR{r74J%*!p7KG(!I*m%NFXp+&=U#_d;d`wRChcl>I4=eP388L_qJJJB?85lt5YLh z9Fbioaeq!^+qS%OzHlq^ct$a}3T(b>K8i_nmdKA5Skx9V(TrPj?Vp?7Egu#E#0pu# ztRGRg%6EJ-tSPseQ3Eimag&Tv%xgUE)7JcJr6@eHaJP=#+!ix6gvQ>U;-v%%*;#oB zQrVlzK`u`LAo)a(Ql9Lexg%PLNGWvYFh+k_r)9=ThEg#$_=d9=?%i!AF9YFcl$8ll zJ6oW1u;&QXaL!GHM5{Oh%Z3InS6TLzP~ z6*JKsl%8E#b)S)~ z-2l!*WB$JN+Q-pmET8YlfLp+N0PPG*B9_l5l1~C9*wk;Xh-{~q4{;C)Y}}#Z43=1O z?=?_t#$2c+zE?6EE&-Fca6u2gxvM20^_Abq?u~MB((|2S%aDgI5z9w750yl~u6yuzfB>iK=VaNL%td zHvSR}86hh}1WY2V&{L2iOo#tc6Y&9V9S;7ek7>u>3)wFhvXLV4|EI*KlBFGIL>{=m z$QhOh!0=?cTXmlQi)Da3 zG)%D3A&o>M^RtAaJlj6;weVUv%X_T1jO#er1Cc$f{X;iDE8u!?iWszVKT1|&?XUkhkQDZ%Vy|lz6ig(p`l?r zlilW!2*;E)(E{Fk$8V~oPfIgTU*E*-T**330*h<@?aFZFbT0cO5I)58^n_w==th|g z$Hdt*9m-OFc7aW1G{?i|u@~q{q0>U#bG4OAdIrosI;q78cb3GSTD)&#HrvL4Y3QP% zgY0aZLEw6MGEEksnxN%}kq*hBJe6^;Ov;$lTP=M=%keo*85)tva zcSy~w!?|J&K{m(sm`e*isPWUq(^){gEWuPR?&$7$LSsK27q=OOTm;0d;ok!zr|%K= zwhS9k#Mr;C1z}1lW$>QE_+n#fnlWCew^6`)dl9IrDK`)$QY%|bHUbFt z_T2MmfRo3p(oh0Jn=D0w_>t%Htm&)pN2{ubLY?#Z-*cZm5|NR0n+(>wt*{{Y!8K+x zk~8{rH7=7Wk2O`8#cWv@?6>o#816^aOoZbvBKBWrJzpLkbrf3V|N0)@R!^>k}G}xl5MV}nnI>fz~<;?LIQj;1BWy|d}SRju|ML~P#r)G{T4vF?BX}` zMuvDXrHTdu&)ZpZJ~w*t9a8^)lX;7J}YMYHzx(b8cT40K0CNL_+X zeE2}H8w@^|qkjb9vsm7T$ABMQ=$bm5Eoq#eQ|oLNgmBqQq~1E&rM?6wY224oPDhIu z_s4A$uBUhpC?hheqfVo(OM?6~_4jOpUvRb#*LxT!I9qfY>=n2_7|_*y>gfC;=~LlL zo+ zaq$}r@Mb!#idn@U{KVk|-w1{?oj_$KzcupT7;kz1g>`etyd})_;z&9OiLj=!C)Dl6 zl5`g!GA#^5YuqlpIX&Z+L+HkCBEoBbC1=P{q|w6Oa}3PrG3i z1Tg7sQSu`!!*u>sXr#!rkV*LCT>zboDot?FpVC7_BLH z{w$;fA29X=uomRwsHZOmrw$@9tpQHL_#gv3OX%+CwAapqb^T)5q{;fsRhs>bRmKDp z8;cyI9b7;K=0)~(FQBMD>FAR!CqNo2#a}!Y3x__oRthfqGPE5XbU*IFOQ0-LHY>kf znpohO#7se`Mxm59#Oly^?e`t9Png)tbS|{aejR>k*LPJU4yzExZxD0IDZuL-+N?U+GtZp8#Ac(FECCicqaN#$9 zho#z^y@rj0-6!>G6y?57&>R zMIQkH`o5V4ERn0yb~q-@-U#?{W1=a5af=j6Nyi1d$Ww&uwS1&ai$jV)$m9LB!f{Z^ z@V(h}ntGe*vFn!|01J;lNQ?%5|Mi{<5S2Kyqt-8?7)+l6(c4m0zelXh>uY znlM>aE{@Oj^;{o^i6he2`qR1G0-v;vG(gC!nd%Cm#}R2>yIr?G2l7!=5 zQ-wdCu~03>A+y~-SKXMV1^9iF2u+}!_$7;Ioo^&o?g9{5dm42t`liB!qz@Kbl$I%u zE-yI(&4`QU@Gvy__!QAqiZwsH^C&AvbW;FODA+X~<2_JZuBC-u{^V{_BIl+QZ}Vic zR;eUH%SgDmR53t}Frc-_gT+z#Bb^X_6~P!1k^q?%Em9(Ah(M=Ityh+HROR`o*_H`j zqy2`b(`X;^J)9GkptazGJh(Pu%W5NDtc^-2m_}$NrV~3q6**DFALg@3M>(J{EYduw zZ{s7E!Iv9gRWF{YZNx{N)!AT!k^^{Nv$>Aa!<5}1|KA^(^hBKF)r;x0>UcVuFaS}( zTNN1%)Mj&?9f@|RnQ&yk`li0B)w;mF8H&oV{0?Ywn{i8rg3y7us0hn zn@B+xu%_u`)y}PI>WXfo>SV!Q{yt`}zucmk2+Luu$xy%5{u{1SYEipSsacUbZ!crQ z5iDbZfsr_gm87+CWXJ@ZM3A~YL_q%*=Q$y`4X_@=s1WIzYXr5C zidb-X4~Q*HKS?A-RMXJ4zJ5u3*M0we{vIx|Y8Aw2x@vA-Q~Y(_P?Jkf zP{iGw&xeVvQrt;b9Ee*Zxx#rwzd$(=mobD}1`?c35Ieft79^}f05>~xz4>%JAI@Vs z^*R8wuz*uJJ+(*K>cMl!GNAJK*RwF4H9culfN;o8skrBRb@GL&i4n5FK#h2=4eqqbnDK~ zBceG}JgB^9**fd+yI1+#s4JJjE7Rn3jB0Z5LDG)o)x zf^siD$xg{g2*D`b7ssw}nI;?UcD*ofpUom?4t(#%&O(Ke#??9dIxqBuK1 zolnBWpj~w+`BJQAyg4}ElAz);OW&d#^Tc*#yVq$iJ*0I~YA@b}uD`4jopu5dr@OUH zzwWM@&&4s%rf><)B?^B%S(Y5ti0EZUnZ#d|S{^1qOL{UGlOasIWOw$qV&-P(JEpr$ z{`2!|MZrpFiV6F6MqWe9P`gkh*;5~E`RIu{WnCT2r;9XgQ(@fz1b@ua#oLu4@;jU| zCbljjv}Y_P7cJ*2m1G?l-qR9xkF1BP64jdz)!~x-GtUyc^0{XXBu8au`l3(y8JO!a zTlS~x(7b_mZZT!Zuq8_*YE%L_IdX&#qy% z+qPRt!fQhyzpGD6hqkZys|P!d&2s83!{(|Vr9WD+u_5491@dv2_-vFnrisFGoim4~ zA>zE6tosdXR!{y-Nx=F$^@X|jKQ!<#O}Li}T!Jj6dl=^SZAl7vnqvg#j+l1`vClZ` zXblIYri-RM_(&kru)iW@U5kdt`@;GhebyJu77ededOOqzB#I0wl%!PN<1OVQ!uR2v zv~54V1GOgt_Fs{Gj3k`I;%yR2A{wqJc;lRA9SyJF}LUKXD3W!sil7Y%j z#A1bi3MfU%vaB~JdvtQ;^>h4Sy^5-{8W(-TTN7}#Bv7)Q{BfD)YT}L*ENS&wa84K_ zShp5B5=nUVPP{a-)7{f3oBWHjI@Hw4G)bm;G6eb9DgbE5<&PAA<-oDdzjqASE`#+} z2-tYmjRGwN%;ym>S+>wtz(hRw(#$R0y}LE2UvByW6RWIk&EKk4$XM?-8xWjx1m7A; zOG}@bo4mI7)|ez~)_$IShA=p~7c5sQbe&o=1`i8Gb8)By(#+qHe!j^lc{9~pdc1H9 zPXQJL^#1KI`NfM1T}^S&zIEa#$GZI0j{vjTURw>+ATY<{^(~nR4Z#XcF4p>lP^~Ak475;NWUti2mB+uA{LCm#gOZ2cKqQ$eW5D3v?>dE}K-TJtMC6USg zuIGeM5%J9CfCp!yhRek_jT8Sl+bjM}vv5YxA?xmlOydvd<^=E;k$_hsr*< zC%#fh#BYY24(ExzNJ6|^!$KGXz!kOu<8rr4LWA11ch}!oz(#VQG7XZMW~lMFb#KVc z(ojmRU8)Lp(S)ih(EP zXJk+!+0-*}Ejf$OG%7rP|H#*i(Go$nbRyU4Fifitj3+6Qvo zb)n8#qdjZm{B)Y)!`;Ly>TvW_h^xH@>z^7sxtS3Y*m>V?z~Z*f)_i#7Ly4S9FoOu{ za<=TQut$>5aCE}u8c~eW)Xj~?{U&AzLWjhjb}v3+7;^xODh;!rt^{NnB2d6IkU%z` zrQ{(o36N4-b*!=}KH2?`#5qtvC z&fxpMaNkEW5NDM_pl7qY-Cu+i&~-2#=3OFpoC1O?r%wnX#Vu~vH#H74=jOkuK3VRo zZk0c;>>?ZYu4p%;{sl`tPyqi!hR}p3p$@Q;@PU99MJ6qlf%6%N#FN(1G2b}LYLq|^ z;?T-@@3({|{kk3Vzr;`hf!=u$!{OwM@Y+x=;V>ahj?01rur@K&N|A=^ph6b9TSRT~ z$=ZKNgr`0NQ;CinP&TbnfAQh4z?Um5I2G>vf17{m^U5;k^fdLB{x8*Q0t_)DJ_%Mg z8T^Yn6M|3pCT^TZ+!OwJV*i))=>I7JptyYLEGzH+g0?usfUKJpGXB?J;J5n)W8T={ zI@kGoAqNGx@PDfi7sR3S+24Tr@;{CB2bzYxYkt=9xATSZ0Coe4S=zs>V!+fv49I7W zF>Mh1ZCjYPD1eT#p#urJzkoMTLZ&Ix=zrO`M*GE>;q||zj96p(6qI&qS^x{6f~hmjce>)jz0m7~e;XxJ>K5}A#wd_NHKxJS*DYT=_k zzqp_H0>VzdkOcbi$WTvkAwS0-2ZHtx0Hr^u-S-bTrxMX$HIh>Tloo?W84eJ5>T9JT7MwGz`so&`k4Bz-|^`97%t-(e8VB z{{jM_ZX9#e%2^wMum)yHl%Fy0;Fji3ufChk*4oLXAR{!Aa{Qq+61@V%F5gDw;k=R5 zM7SUi7gpY0z^AaA6WD9n{QOf>#Y+N4KYHC!Aw-}95_%WFd}GqImiG6R0Aw@Px)0&c z3j<^LfJ!0(uYcva1`kQ(p8(S;j!s9`k@w317@z+sQd+H4JG`vz=ruRZ4E3zFwis@Y zT#Wh`aJ;MizRYMVC#C*5eOePt$+cR@50z5Iv@fBT(*P}fBE!-%|M}^DwAQ6EtA|SN zh{v9ZDcbR9k$wT4LDzRrS1a&4uwNfc_&4%`?dOJtaa2UsaZ-|Q9`NUge*j$vT3|U;C7)NdNy^d`ipmLwO9`D=4 z^SpmlBTk%=uP?j4EztsCbl-HZQ}g*okLs1%bZ&>QXTSSN_bsOiWKMQ2x9ve|3c$wd z*IU4S>pg%Nd%9$2ISyOy_EWq@^H0r^1(bxbUS&^yy6(H!8K_yOXQFR4Ry<|slIwE-IrPq5Qnkt0ds6<1TTDFyX&NuRvUBRsUgbeADspDG ziyf4`nSFYd9>A6C=q2s5$a}Waux45QBfSw$M$y`s$rO5x@n9OI%%Nzh?KwS{R19&D zHZ{VgX&CiO(Q-53KreOv!l00phA%l3vhN)SU)enOVjhLY}sy6$S(9) z(6W9^O}aYdo(F{9qiOH|n9!yyPjq-7Gy)8l#$g62&p)~%zz76@@%!=#ps!0nJBY+{ zz3xv;9^{@^2TP@<@w{%1jrS4s+{e;nU}AQoEmobyGHWq_zyg>9=Y_W7@du)!R_!#i zK&)}C4_|{ju|b(ZZt9SVhuFd*8dCZO>IRdd-I= z;&FGC7b(`3Kis%;z4{o5>~BHjdliZl10-t4ula`(WB^Ppw@Dd*Sb(TZuho4*x%5ma zFI-Imh)q7f@M1R3D#iL_7;bFn!(Fdsc#~c@DVYpy#B6-%s^zMofN_uFY)S}-c&GK& zk^A!CGyl7f5=5N%f=YJDe*4qb-`PHZ=?-v*zxB5fzux!|>__yQ@bKB2;L5J@=!a() zcP0X2oH0kenM^jn+ls^RMZ3@A)P1H+Bf|`@*RxSB^2G5TGq^J7&OSf;886ltfYWmU z5^_!?-;K}~G5mihR|=dLn`@eAe9k+sc<1ti-i|SDjy!u3gg>3Yg}~hL^Pafiu--8B zj~>nfY*!T?5NnOpt6z2>{49}6@?t$JqW+L8;( z)>CX+bymu)+R$;in0nYHlhi(!oq%`90PT%(;d*gp=GmrNhLX;O!}(0Op~qFpNI8m- z60CwsgPK|Ur#l5@5l%>|PEFf>)LiBGz_!bxw^>EVdA~SBeq6jR1&OD z0PT*mL#DVk^H77y50@3YEl(rW-HUWyT{I^^)^E?nV~K&!|2dW2TC=>WZhx<~cxS3G zwo2N(w(fQMkl-kckJggC0lxglWG99uTHLr3e{X+LUb`8!qL=)5g9s6^&2g$N4>gKF zPN_bnorxs^8V=r20ayy$FV96 zJ>Fmb7)PZv(oe2W&?$ye*WaLE7~}Q>Re#40VD;3OHNvOYjOh!GSxh_PEfFPwSXD}P zJ8LYHowV3(OZnNajuyJsFk(BRi#MQNvgLhtBcGfKS;ZFTYIb8U9&4@LLS;Ex3zK9c z@6TA$t`aEazelxEw{2R$MXbCwDES#XiyEeHZc%6RA(i#yVG+0A0i{*ykwf~?0JX%dwH8Kk&Z{1FfKXv3pcfLPOu|$XSx#SJ(*Zu zJj^8Jl?J(3vF~aMUZnm$kaWsU;l57adm{%4L4;n|j!8{;fI-mbus@YBT)B;*oY{$S z_GZ|1gvV*J#;Uyy%ZF14*av;Ss9@PEUC(W`x;5;KN0pB}YO!{sB{uWRbike6GvU-Q zdB|a~=fgq84PzVc40wERXiygL# zXl>XU+b7K5``P0a_AdRcE;A2gh6j`8ijfS;?oWH>WKNfoGPrMZ%`Sdry-$PGB&^^0 zJ9P)dC$CDiE~0MFH}jLHE%%#~%+#MnOT#xvyA~S_>)^-{Ms-E-=a-6NF2aMo|HwPu z0-MHL2I3DypVaZrN~JTl?si>K2xs-Iw70{%ewb{JwAr7Yk2Xu&K%N7z{g{8{Ea7YIYjsPFQId-Y}*=?5-sfRzGeS5Y&=5EiSjQ<27 zh8%(#@Lm9gjFd!D5n#43hJw(jzmrh=Qf^5{(Y^+~Gwl|B-LD}`MiJsfBuGY+q~>*e zX?1*H)zH+^wA4~`td)0e|7<5MqoStbhO4d9;Ow(SmuR%~0o7MPR7{}IaZ~>|?8y`v ze_yQK;e6G$#A2?%Hm0WGn%^@eu(Fmuk*P#i3^7d{kj&>Edf8;p&7tC@et)eKi&c+# z#16(na*D0VB52{y8t=f&vl~RXl!@(-qz&y87Ur#ZH~`CteJe*)W7+1so5i-;1BY3{ zipsb;Za*G`v>5<*#GYVnOaeTcNTm67=e7l2g8uWt30!B(`P+ z#zN+%)X}4_`@+o51G_UP}E&X!%)P$239Et1xU1k}f0CS71n4FqqUqNMrz@ z$%F}*J06D^sS(E3S^W}L%9B8TjfN%x2Z;k=kb?vJ;|*{}p;b=8@z;ZELrE-ljG-*7 zPRn?A7AK~@5ky4b8v%i^aQ9cFJ;1;h(eJMksrfBW*x$HDpsn;42OCjr183Pav#U5^U@+!k#wa zuSSsofBN%ZB6Dyzk$^ysDEq`vwPDWyL7zzy@^4w5T&UT(IZl&073G@b*uKcg*X)~m zfPCwh_5{#DL|`zauRsiP@K3)MHmFjSVw;$^mh7*MfM19zzq6~@Z8ZDf9YQqd%>TU& zC5S|}78g_Pt0vC`bwLmGB&FOkk8-t%PLX#q`cw>=4~0bTMN^=4T^|&;#Km;LKs#Q;ssH%f}PTbJL0H235zAsHj)+kQ{UE7K@wB3^u%CXVDV3 zNiBB?wpiIvI!jl!HuFDy+Z;gD?OF$u&dA%r=$4rNGX>+!8fsjL`Ego!v^? z@~vA=WCmxZw*L3J^rlrz2cjx5sF74&xA=9mt0I9#z}zTKjQ)!G(q4~;ppXKpl~=} z@A@5*{O&S}foC9<`4l*-gy-3pSiAtO4OeQIz((Z9d4oy|#(-KD+5vgBd1$IL3Vg(b z=u5x)gar$1eYzsHo+v2n18ls~7!7K~GzysY^I{W|I@^@d5-osKLu*+IHKfX{c8H#6B_H4v>@b6N-3`AhW zEP?%VEifkvB=ntIOYDXnpC(*1WEKhp(JU6Opa(HAj_Bu|rVikofT1j>F7o5o^F_QC z51m`7q{N^969F1MP^ThEX*X)Ngp>x33?lI>sGLzrJTt+*#o9=tyXd_}G`v;M+W}+c zHcwI=VT=Kl91Lx8vj5zk2%HG^H!jh+Up7-zX-xJJ;&o4glD#1n&ye+hg-C8t&RXXT zoAN&Fm(V{S4>pQV;wLTp&95rFc{K)Ijo%T%+68dg8vEXKuQEkN!uxV_qU20?+^-ip zpQ;ygv$LyW6$S*7{e7q2z}pC|1_-FTeSTn(4#kb$>pSDDIZHO!2})WAk7!;JK(^0) z1|9be?xlC43{b%DjY#nZtQ9LPbU?NO0k6V{o7R}kM=FM!6qUBZ##DxAG zxBQ?^+1iwZ>1y&?%UMBVVj0;KuIYR@Y2$?udb2j4ja_;fo`xnxXgMfy#yJp-Q}TM{ zyF!J>Uc5C*j^pz6nIqmAo&#>u|J^}40VZlxr^STsJHyHeq>nr|OES9SOj7E4Hl zcy%RmKj&pX;Y3fUnEGV++Spqv?B6*y*4U|h|EE)y2nq}1dxSUEC6muD#ozyEPMjzaGa3=#@oAp4Rtf-dvCf%(>F5q|vmo$KAmGkcktMTETLrv{bH=K_ zALKiwVKa!U`OmZphzuQzmW)dH0`64AIDP#?JjO1E0FD<2GxPqTXO4*u<1TR0lpEW7 zdbb?iL~)-#|H8(9=~DzyffE~P&*I*v6PNd-BHB6>l2lOBMl;MKq$0lnfu2L$|9tpx zJ{2Ex952ggu)26zJ+{y-*Q2yEt9l@oh;mz(D%f{kUC#(0hG>EZ+VfiyVft1pY_p^h zOLN7MPefOr+z9h%>~tkeN76I<`K3>6h~B+?+iYO}ccjpS`LnNA=Q3o^D4>Hu*+KrLJD-TD#)lp;rb*}Zpf-8;NLGiM!^yv9pp2@%z;iF;NL5hSJFb2Ume@5V(_$VGc znuVryzlf~CllX<#7)^ly> z;pI#5I?;6+ht{;E zf)Md@*euoFUm?|Z=4;kx<8b`oV~=5}=X-P=YlgNf00>PNt_k(i$PN}OqDVYbi6eSE z8L7m%k-!V~e+9Amgc{+QqaPKVV2KLJz-s%1bvsYUwm{B?KtBK7$BA}DB9?;Op#c7u z=kA%vOk;Ti3B`-tZXhKDP==^Wqi+JHeAcR3yTBeM)&+IU7uv3rd)Qw=9+2S`^JJ5i zeRO9N+#8PPO&J+b0S52{ginR?p#`44J}Az>nw@_o z94)3XoU%XmbNmDEK$MR^963bioMvh0!P!Ng-muyS5RJTy^eZ|oa7C<+NYj(8w%l>Xl$UcJLhtGOgRMH@FZXTRrc?-K=kX*f$Z;`$Q4te& zoaUO^Qn+wHE<7)aa;P>*U@U59=aG{346cynvwT$0D~`WUI{4Kzcp$_t^QimC^M;hD z+U**#b5s`C?QV34r|}6Kc-(o+4C<1(00T{&0%X{k6k;K*FAth{+bI5lS%jc9M;3nC zKBF?@0g}z8=c`IdLaljPXyx@`X#O$k^+put8$<|kt>ox(1-V&ZrKv3AvAFHF_$B8uzAFzg4t1<_J>1%v zEo5j7Z&7<(PWSwh-!q|hbYQx(>vOz2ypFR^z25c%7_MLCb)K;NaPA^&+lt$IYUawP z_IY|Hc6^}jJ!EUe*RqtGOmx`VRHUW z4QbMXplikF+ErJgV`a7_R~tDP9n`5=TP)b^Ss2eFWAfECHj^Z(Yq`bkC)FpRWgeFT zR2awLaJr7RhVIOz_#bz=G&dIsn|veG)7HQD!rD7~&I=#y7>WlTtjKaoRUP(4dkI+K z!%kvg*cz%cF-hq(FD#bAx2k=@B{HrF0UWpS3RbJ$T;zq=S=9D$fE(8v>dtpu%x?3$ z?ty+t`Z(L>Sl!y-=hWi{A1L(G`^RDFjam-wJ63;4(!GU!xJV?Z0@IGgphzr3Li(Ir zJgzS>x)f8(NPO!pqhXPLtr>_HoMVEcwxHs~q!Y)b8#WG687uGFMq zpj8g`mJKV>(KhaS{klQ@6PU)bi(<92+dn@Cz@XL6nhqz&wPG=LM~7t5g(U{U<4An! zsGPhs9++HZ5OZc!SbDu5=uo!2GQDZ;Qu;IhEyA5)0Swyobzie4|9G!qR^y_l$8(yE z#bB2?K0wFLzFv9sCvf>$TW)zA>Q3~Kb|;=hgj@(dA)vyYyK%-2*vMLa3-uveGOozA zz%};$ELxx3m?$5}9UI08S&|F#y`xP&@E!%`yaK7^mHHKD3x2=I%x{U~$%x~Gn1xRu ztyz`oWqFr+wtrQq`n`e`w`#gR`2CsZy7~V4cHm2?&&9>?m|)4(qQK^W%6CWWc^c7I zwRYQTjfxA~87B>cmgTL+Os?YJ+lJCaXuNbp-vOsAFW5Y0DEhhDi*HD8%i7Ar7uO3W zt}MD#n{$nplSwUK+O$n>_xYupq~xbpFWQfJon51uJ!QElC-T$J^PKZwY$M^1Wk=Sj zx=pvwVcvGGsJT&Lf=Ez+c*8+MRCMBZZ4sthzJ38Gac^lEg3Y@q0ge;Tab|wg*w-8} zHOwgLmkW}i(W>hnW-`vQcbkYNaGEWy7)wiYo3^gA_y}}RSr#11vrEcj&@{2#-9AuW z<3RMkHC=p(W=&@jgy~UCL7*7lVHW(@nF|2diQ}=;?x7eoN0mWZY1ei#wdd~%n+*zc z6V3^kWHI-y6l{w$bCYL1CbPbaUM9y6;9cLJY}D`0u4q%wVKf{2++N<~lwXD&*ikFp zxw@`CnW&x?>*(bH8J;2@_*}-Bu@0jt0-E$~J8Qihh>YvH`4m{an-ps@I3efLVRHQ{-GF)?D;wU!%j4#foA`3=Ph1o$HW(c~p+>(L=M*`TJut{WzqJ zN9iVEhrJc0nopT-_?I@NrnMYNLnAuxX~`|vR=ZPM10ItZV()MMU)vVir>$qV-FN5*NR11Ae4 z8$v5Db4(o26W^CaI+M`~3)Ub-ug(TI)pQQ!mhr}p5-t{H98|2(l@nsaqw6ZjWB?MA%V-Aba-{NWNjR(bEs&X^&L2YP4)I$A;0?W zCkb@sEe`9uQNDcWK^>Ng02_6mYc;mVHK-I1ufs{1ZyEJ*OsG#M9LW-j$iZ(wB%P1% zsG~*%LcLeEFO3I_F;+&(DEJ?FlFleJgFA7qhOiR^QE?uA7~!gv$S3KyL(Ya+O6pn? zLr?1$6w3Q_5`6G{>|u;-R_YB)|Hhv&IDv8KcsRd1#iKJQeVwI4%R~|P2Fjpz!zcP$i?u5IfJhS)qsY&D@Ny2MLJ#IElPN{B`t>N+ zb&rr&QV4919yd{JWLKxX;e_%o9|ivL0x;h6c=yB%NdSodz3^U-V~8~n6)VUc@@*Dt zHGb=Y#I|sd_ko1wb+__MLS7878Nj3%Bs$3E_r22*NB+434z}RPeumEJyj!~t!DM!4 z%cQ2&=-j;WZBcRy<~fKa;5w^!-NiIf!)oaDZvSmBTr4k(;?{tL8-wn-K^~zP?djXn zH*WN-9(HlZJnL3UG51-qc!^)^xpL8U;H0&>t^wi76HxgRgX~^eFExfN>2AGVP?-lH zskc5uYtH_ffgU&tHJ|WB5r-tD#I@>e9JPs+JBY-E7}+7$oNJ~?Cc(SdS4kHlVDn%l zGiiW}Zf$1w?17Y`qKXq8G!c4*+d*?=?%KA&%E*7;Xy4`0dzZ|+D2eH&a~l1P#+1JN z3l%bmnFKP4lz7HQ)SWT9)da86nnI7FcIfw{%RvnvQ)^WV5Blw|wxOE9ACVt6iBY4{ zs83oCch+Lfy2oJsog0%yBe08NsVf8@-{S(Zl9RQQ9`BC5J%wn|Bn6`&EhnK>|6YU? zO&2o8w$Xc}Gp@GJXkuE2Qt`B#SS?_M?mz@=DI-xCRi>|{h%rE0C;=esn;@aP1%uo8 zI`qXVRHS;n54VF465AR;A*WNRII8gXBguJ-fd9lcy?xWF57wvUZMs&AE=9I~`btyw zJ*8-+1oG{7#4_e<)*l&TFg2#5^z*GAG;s#C^aUGIIy+vMM=w713JMWzq2C{|I9kBT z-qs8C^1r%2KylZ2iHK;;*SL^2-J)miam<{&=P&RzK+Z!V3YxY_vXbo*O>l@)OT)d=D zz-H7*ZI4O5AP^(lyZUTvlFEg_Qrcy@ylzT?wP;3Ow9mJD>l4FW-aL^zFDwtK=L2h> zQPX^Nb3uBSx&hvAe+o9XiZng2<>Phrkj}WgA9w=|Ce%CJw!B(saieINxP`73pYRn3 z6c$i!!al3aAI_5D9}}ny!(`CVm)Xnkins}D_7hE@*QuHBJY5NC4|_z3P_n$e@sqr( ziu7p}`(gp+v z5S1pc60NSGX{RVxH@$v1NNfm*U!=oeIgJ@CWS=fE#PPLU8^TF%d{kTk-x@+m0;`oN z3mD4{#8IalzDGCeJkt!lP?IBpr%$|ZggN72AdX*RvKw!SWA_B<4 zUqJrRqPI}-n=fcS5Z&g`Lw1TQ0ZC(>zyBCOkq=W23(tC>8a(@pq$wf*A$!jp<@8CM z&tLE|3lBo!@W1Lw5-Ck-d^Nc97akiA_r^QGUm8_Yr2yIsT#Oocnfl`(;@AGE1Q()m zKKy8#rWox%trIr}IY(YFhfLd0XVZ55^H_8MTAfT~fk^@Pw-_==5f>OPGS>da?tf4% zU}+N-Sk%k9I~`d6r_Hz!pS>jhZwcilg-2)O&wtxj817x*sDx{Pt@roIi%^iKZItikQ~bZG=n-epkv&}a`Oj^91?)+X(b5KERE+IG zU(x9$otDPsJ1PJVZOs;wIA{rSKEL|gu1LjrT8*8IY%#Oml0wxqvOhf|P7Mqa-T3O3 z*sm!yNT@!5+;9T_a&M9?S5gUxYIlA{x0&zP(E*-TgaEMOLnJ2QTAf@!m8nXXA&*~g zy|UgRUTxau`@-{5ak@JA6>OMud$yV1r^zP)7!_mz3lYi|!^;5O4fPh!*$wrYTIPK@ zNo8}I0~Q`3CPN||cPYCHU@K%rHnvIiMc}g)zdMBSaay?xE@RNrt$n3*$X}6=0l2FG zb(s5jA4KOt4`3e<0F~@8x>ayH?TT=7#&_s{Oz>rpM+P!|2bvp9s>LH=F**2g#4@geURxv$x`}4Kr z^VQx1gc$yb%|UuNjsrE%2LlFQP|A3ru(kxX{P*v7aV7 zxZU=M%xK-dK!(@!s09VADTp07gPNgvs`rPYqyNP0*0=O@m z12Sy3Wiq*vx*vj``AWj#fy~ZphZG^`H4-|di%Iz09|)OhT_<@P#l7JF8- z3dV@#V!`-bYu@QmJK)B!a=gfupr8P7!wLayXpzQ4Yl~-ic+6L9_%6xbI7Or9$I+FU zWrv=#xPo38w%rvkxyjcv^j2FLGn6~G^W{IjY-J6^6;C+OYM8FoJ_0-EaxXf3e$T~a zWniW1CM61ET_-fSp(UzQFNvYQ414`LiqR|etffahb7E+SVNoi9e)nk46=<O1Pl z1*hrfTx>Pzm?0H&EBP(EYuCA)}+2V6L!FD)22P@NP>!z-sQrl^b zY4(~*l+<-gS1CY2qt(jNCkmX11PtIIoj-u;TwP6bp3%6x5bPPU_$jO6<5b)}ALt6J zqD@MLay@IxusT|u~bG5M@)|6frV}3>9?fUV~FJT3Ql36;)PuXrM+}_{C_n)1b z6-HAWu#*JH6DK-jkl5TF;o!mhoOZD4S!jr}<7!x!x>w?}4vHjwTp^)@5~c)~ zBt$jL758xe!(x3GY|iP*%$}Hl+r~Sk%?*e(P_uP-KC06hiDw%2hv$W-&QHU|mr&p- z6!CRQXIMUh)95sJDvG#%iVKqlYI{SK0;$DDTSrz>@S?KlT9;tiFQT<9<)CMgo98!pu9?1_4qkSyFYGg$zVBoDiW zz;@e##rFN+9IWbM-Wb4dv3>JxVp~qHe=NHsldOAY1|LR%E4>6eL&OPVo|pVk=f^(1 zu65pGxDE}c*`E*$5e(<|DS^=t>MkNDxf%@0M4s`-hp;kTEg+G}ysuH*^mXC6m!^u4 zyov-3NWF&Bo`UQpUwwpcJD*QH*3??srF%r-3B|}($6K9Supe$h)?G|z6@4T25r@;a^?ri8{V*Cslwg0 zHq6)Jr<+r1Ef`#T6$VX~k{l*uiTCO}e&8iKC1CbnzOw8VKPJqdm^~X?dlBtA=bQHFdAnJmk$~2yZ8j8WqlG(cMV<{m- z=7haR&eE6r%uoAL^P3^}-Gw(pRCZM#4jF1FMfT+lcZLa8$N-Jph3ZwyRZ@glc-c-tYd5 zca+3;q(i4D5^M^gFv;Us+)zacvpl;LGs(-|=v%p5YqConw_^GxclkAOC8V~STFC$( zuF&O$(K>fWKEkfq@#@ z^q`UM`(m==_o*=rgUZuOx{N#w(@Ff#YcKiVv__`n`-tWklMe01+r`&qQY0JZiVItQ zsk{Ls24?{-i(O&7F{+7?qvsZOT53nJ_k=}G=Orp7v;^{<7u%uxjd#`ezEoege>Bg> z@p*ZsU%3U8hyw?Oct5Xi@OaJuyd>#5nXY$y5P5->4W(2~S8@twlI3?Km;8{c*muBL zco-0hRthwAe#xaO|1pYI&XJuI$>Qt{LCh;-7M|Q*(GLGqP4`DF@l~!H6%tZ?2>~5a zLtED^=mKs`PN|?NJknkl5ROFue0Lh{`j{g!C8#ymR2IW*OuvHsy}!f$9(k$JOgrX5 z(r_K>`(phfs25jHrGBKBw}7rWdnnxgm?d9@WyVV{Crc*KN3N@voEOynClfpn#wAn# z`e1^&C@0sQcYih*v|Z*NvHv7uwVA^I-rL4p6y{J@7YqwLJT~p&s&{1GUB4<64+<%^ z*<(fX{)OF`LX7`JNUP zC>RDF604Le$5Wn<%T_qJ4%<$5{n;T+=W**F`oaqSsu|#k{Bu23CrMwUkOTg-sb&`n zq>1juQtH((|6Q)8uR01JF&s)b?-BM!IGuPh9BaO2`sH)QE+;v4vkjyJAe_E$5#`2WFRLw1ins~%UGBBUWSExg z?eU%|jEkE(Jg#1OW0ZZKB!6XcYO0y+f}hG!;qEyEo8PB%yTq)yo;pOn432hMeyFyAYeg5*H6>4g*aOkgjAV=)Fe#fAPW!niUBY$bI zZjT{VCP*Rnn+Bd3f%Kga3gQ^)vu;}p_Q$|S$@vD|Ymi?`BV7r&?*3g$j4fi!SQvXA z7rr+)A=C$~XR+H$r{l>(!-vv!HC6eahmwgTPe=X;erlX8N#>dDtI&8jq-8p7F^Ds`2|XsdM{JRpOf%mPl4RvZ=(E>K!@bvOz)uWcpz@1y z*^*HLcd{M}@lr$pJed&F=cm%KAZEaJnS}f@WRI{zCY(Fy!$XpCtlzt>?WzDlzjv~C zz;q0%*7~qnIqmiOEalg6ACuwS+$2ZZ=ndzwRO_Mj^_(*tY`=E1AVCp@WB?*Z;k`CfbJwD@vopZ(^1l9VK=>$lXj$T9_Y^HcW+r_|wk)+D}+ zf!ck(%V>)=eYmQZH$J_7oL9gLLxARL!4?&Q5Y=|yu}{0ZIHA`+VL1iMw1Nlul})*L3{qbWaZDL_nbfN1 zv*(G_1n{wue$8YlObh$%bRjG@YX|jBv-r0Tj{&L?3@j33n<>@*&;WoxwtN%gr7n5@ zA7wW{6R^)(DSjcd{0Ct``27E?-*fl%PG=yc`~Sf(h!D~c1|!mqg*M+)(wpr)r**cX zonXLrX{YslSG0dX*| zRaHg#t9fkrO?L2iD1HdyAE~t1*pTq-q(>o+3ml-4?JqD#f<;X#9E687F2pFuBHTrU zhu26_DHjQ+vWoQ=v(M%IMbh3No&qTUHuHJf@Uf(GyP>2a1m{hZn~7>vDIW9ejsJJF zp9m0d!e)3~(hid}Y9o`2|5qIp^%;UNBAWF7^B87u&4@o3L2a>_e;hexIw-eEYPl7j#8^|#CpwqZ*2<1_V z|2>9ZzoGn}yVj;nWb?1|3ZS8(ncc>&KE3P`4FCH8ls~_8V~NA&rqgs5LFS{@M{w2| zkjgyh<8(T`4fA4|+vU!nkmYi#UY(G^{Y8E)pnH#G9Q=1XP~Z{*Z-eRcrN(HHkW;_0 zcWW>;F@^5}T?Hf`aIrmD(oAIeEvE>P6cbAOe{Ko*#@?^ToHVAJ{nxmP6iH^A{W2;_ z4FTof#sPVY^B3{|RkMmizNt8A@seXEnZla+DP>>`AvRIXn8R?hq(%PD1}IVQTXCYa zP*Pt66W6p`F^fx23SvdwHwJO3(x$A!9N<*{Xa4&Ga3X237&@EI_$TBJ&N{1Y6hlcx zoulaL-ZnOUx`EwQDJ<49*v-Y^nScL6h~$GV%o1WhTaI&=U)hUlp~XcV^Y4PIh6*auQjl>s*&rAldz zYVD6nEkK=tC{hxe4}2AWBR=BIKv4j!JY(b*K@^LWDoE{AmeRu#gHkaM3Wv)v4DeUU zgrbe-5{bP^tYrz@m`^@2fE4c`ORkg7iT=Zt04)iwsb_y|klz|^7cN--m z!lyY&)N5WQmKmNAZ<$;?uAbsSk=T;=aK;dS2V)BQ4ZS4$oqJyo^!6(3(v8S!Ir+Zz zOSsCBe#v$|v9QZeR6coXUW^I5nicpD0JLot2_V<4q^7$@+FP~52O7JsG*9Y!9p}FJ zs+Qm^_Lmgrr(|ZW>y^vj6azqsE`KR@np^X2T*HI-?{M?y;b);!fX~B1gJ<*q_G(y_ znAcHS!Zcrd;+QG)LZIp}8Kq2l>Vas^)$ur(Id>pQHUVS|&5kaKymxmrCI8SvKvn`^ z-f?881efk02QG^OprQJiUXJPqGQfc#q=rT#3dqH?Lo8P8VU33q(#O*6r1AkXWBy8$ z?ezWSu9@7E)oi(u7KPw)nwpM8$4h+-fMyg8DLu#m*kiG4UFw^Xlk>-KI$Spn9Bya) zJ$;7xC6+@)0L$BBdr@DgHRE~9&w(p-hEsDbC)g9n&jyxvVF&=z1l0dX=cV1AF)nvc z^FW4>#^say#5=0vICM6f&pcD5sC~V?M8+44k&LrcK*)<`2C^^SM<|v z6aZQ~kxsCbQ@QT>)LmJ3FgqVXV;L1KYpfctwzf zUVIcSy6z_viHd5tFFhUY6|tAMZXwvMQ}O~Tfl)Ve0}tEB!?l}o+T8PtT+2E2N)kt- z)u~M3d6I`6if2lUM~Lfm1{6Md#5%Qo>TjS}qOMDX>-D}UkR4MSSfupG3L0?ha6DMq zha0BEP`m{2$w{%*_1x&(psBSxo|~Pw6~TvG1bC+v9`vRSzkY!IQf=jS_FGqVNtaMx zw^hYsJH8#`56~fdZ*f;+`aX15!{Hg9ku56h|=67Dx)%&?IEV|OMtkOUVsHOPka<={s4$E zTyz}*hJZFW{-n~FLOi_tQt?zOvoc$6M3F+s8)kpiRWMLpKH`$^uuLT88!N8AkW0bU z(tVeMz~?d#Xma2LUq%^jME|IwP_Jqgk{o@nxoq00H;z7#Zy$Ztvq1WtOK34 z?1E9@j4Rfec5CsXfm0UG@F@oIJ&x%H4(Ii*2ch?H)0A z!}wih^d^+ zWd}$W`l&t7cC+SYAa-8kmT5LaHCu>~w%%XGb>|3!3g`RAOh+MgF~SI!-An43 z-X>HdWB%|`i^Q8Pf)Nq?jlc5AaHOO|?dNd2ZGI-pbbrDK9pqST)=s@q?Cpz^=^kFW&oS6Qj0H4M`@@1btn_v>q~e94wvNmC#)?eN~jz9r{(inqd{;M)kVg6CBFx! z*fqQW4X3N5Kb`~hRE5%yKDeHh9Qs;elaJHmP-L^;xAZQ5hA&qNpin9oRUUvloTplM zm^+dQ8!gp)z{b-k$;LaGzQU|J9=@7R?}TF)WkUfdb)exMf2060(c4Su<86?avlbrm z4TCjwk1LDpR7IznSXMlSy%&p*3y0VJCui%-oX$~F(6Gcb>6*DRJtsu@yh0>47uVbZMz?99Ue`zjkMj|ACLwPZ~)Qbj9t@o{lj3tdMEL`T1Jo^AA40zO(V@ldq zfx58ha5>#B9PyWOht2e``e?JmVXlb+7+NAlYp z(L!>JIrJM8%H!;!tY_A&|FXSMn?yF#A-@ZmbDrx}={wZmRSb8$SR?gyLA6*pe4KU^ zlmq{v$N&AR*gP7ge9};2h4?OQS|QGI!z5tyvsdY)3JU?LmdSD~YPj?iIM_ek*>vNc zCn2pDw?jSrcW!VUC(aQ@6^jkM16CMllBcFUTI2Kw#nLkrRSOwycDSV|g>=ne7k z;WTot%#JG@n=>Qi3(bzrZs2#Q+1f!5)y0^6*s}llzGlRq(a)26u36P7wF3B>_1JMF z4D@`&)7BlhB0nAd?bI)KTZS0M#5vFk@n93I!g29tSw`BKasmB9`cT@NZ*J zQe~Oufa(Tr&enFT(f79!sLWXb%&FGYF_qUb2fa9slWappRhoH`!}v7qdi3Z@0<=r0gi0JmiJ>w@9*&$3LFCtjDdB? zR8DJ->c2BJq9TNF9hM@yG5vqX?zd|cIWjGwBwqikh5bJR%zfZzS&aXY2;>p~EL<*+ z&DRRxUf$LUaU@`y`oAw>kY`)zB5+V9+i>2W04{nM9 zO7x6_x%T*enT6v!2q5f!L%kf9N~KiL^9N0G})TLK2Qn zJ+##z6*9Ypj@vM4RPbhK{STDrhV-fAS>VFM0{@ek5l7~fan;(kqWSNh!4aV}OMou$ zr}+kRyK+&Ib(vAQhn#V2(%Gb%Z8L-7KnY`IKA4>Ry-7 z1IkEK`-ZzKWZ$cF+12|JN>n~Co{|y)b`XGZR z_t<#NtixzrWSI4Z#6Po0DB}1s)_Od+K%*uR&*WA8H+Q{7@rUb-huR}Yy8MFdzb@!> z2^$)2K8+!`Wd*_GDY|6=(Gi6}{WXQUXeWPz&EbAC+<*P%Qe2;Z+NlX|Ayijsv_L?4 zwvQZM0LBCAG1Y{#YGGHzGL>^?XDD7O{;i*VHmiH+o4li`d_<&fvGPz-=Y1u+$Aj{n zthx#5-&utK(M?#5q+CbB{);=zJAqnri(LgB_1-WC3WMFMo4lfZNs`SvgIhWHR>h-l zE&$Y^??=jPal>4}ARiS}<~t0m?tLMBKs1N6{rA|F?vWAES_TE%fuH`KdKpfui%}YN z&fPZ6fPE&*F9?3>O~4IobP<+0`IUg)btcQxur3X-kmmy@b|f09nz?8yHLK=|eLqUP z%*wXZDzH;KgB#{dd1muhn_5Psw*+Y`Z&)G)>9vJ&wtS%V9_UF0ERqL)j;I`gw6dPTp;Xx` zx_ZfgmO7zYe=-ox0{S(&ll@q^%77%|PfKDCq^l-*QA#scOsT` zYp_P0y@&kKS{oB3#=b*Xy3Xdh7aly8=tHleT*{Ig6S)IdfBO|Bnsly3u>doF7(sT zvHg`su2hLC7nt>PG!EDpZ+)|oSB<;h(N}y8vIfhWP}A|0VG!ey63^(UoPp--MJ6v& z%%}9P*UQ1DpTW(%QaJ7p!^$3-+Q^jt-nVw%r z6!MIAaxrVxP`q{JMR7a;vSfWkc|NT0VBQB(Ep8sQ&Gyc^-b7JzWi`gbqHV75`1HDD zlqv@rfIJ8vm0JC0r~8`(5#JR_{A8JT6wwDMCcTqhKMul71qtsom0QaUK13(lwHX=+>z_%qs|wT+hvzTMdp5m+p6U>LDF^ zKy%B+S3j%=#19ENx8x?ETPZ2x{;kzYGa?l|hYER9qzSil`CZcZ;DcoT)zCJjvYmh~ zMf_mZTbYCF;<;mBfpt920yLWHE=&y8UD(adrVPVB3;JamH>f2FC$906A~Jxe-y zRgpZ*idMT>m`pCyh>dBzUnxopSdWC+)H(uQo^P2g7g~K-FUJRejisSX0SRVlR?X-C zmx=1T(XKnGwH0q%wm5;B>0k%^QQ@?E1<GSh?WpTKO_z>B!14Q1!Jv z#If>RLJRfSKE1=4_cwijGmVO~^)u!ic-oeH@^T}cp!Y^H zgw)STxW}J><8pAB6YDLif5?G0>BaeFwq&(eQ}BCfBb^S$Dg=XCbmoy7zIWHhJLB?F->@cCr}P+gfJrsz zGu-dgeVj$ttha=zcN4CKg*7D76&KjBCw%txmV$u_au-6jJQt^m4+^j*sbBkmGDnx) z`gGwfLVqKw?+j541S34z$H@FnCogvn?p1G*t)rmxqwEw2E_tFzAJWz-JQEJ^qSTqX z<7kk+KT>4%EuO;RT3aTepvaBHVN+yKyz&WQV?n2QiO33^y}Hi=A{*$Y8!tm~GWo49>hQqd~Frqc1XE`{-04CJLIG!(rFQ{twGP66-ioIA_~1IyDH zD_5J%^lgm1u95cAq3iZ1CzgIN80JYB;H~F>C0@(F+5dduM`gF zbo(>(mE`UXF9tks${U1qjV(RR@Zz0q>TSCI+rcvMsY3ntp)ab-QA?^+omA5(rHaNOyMI1wE-Pmc)(U&9{DF zb7~*nn%@&%$Yeubt8T4S!^3F5zwY6-kKtNu|5Da3~`t{ zhuOCs#VaXm=5(-9GIMH#D;Xlv_xiIhc~sa<(o>8p-Tqeq7Pax8LCxU%(KtK?a}0jf zU5;DI+G&@tN1Yv|*V&8MUOF2ufb2GF!^3-D+!@O4mu_Ca0e^>dfgFqq_MHzICNf>` zZ+VYqJKlAqbzrj30CqQqC*e1Hp6hK{Wb4BLxI2``g#sM_Sw8v^BwU>{M6x88mZLG8-|wItwn9DA~Gm@_7OL zVzIpL<6ld1K3?4(RRR4N_SnTpLtYwIv{F~QLk_ZA%Nu~4I=r^|Rp2(xtH!$)h4_yI83@Yt*XNBX{5^%g% z{`^+GKU(?UioDc_j8!5E^dxE24S*M}R%{$_@e+#XWige0c{16<&xfZ`D+jN$nATws zAIS!g-{Rv-Ip-@DrYOA#?E6#|tJHnKl*&}%UT~gcIT}+)Dm?e_G9dAUR2^(ps+#^X za3b{Znrda(;b{6A5`dJqyJ%-J0Tj#o5wEjqU6i%``xuTK4`v6ql04-D&fDAbG>}mH zHfyaMFfA9QIgpM^9p^ikbwz-)t=9Y+W_5NGrr;9c@dMr0YHvrzmpxe2GLs*49aoeN z2UA_Skvx94U%sDdD826t`b>ZMUuy$=Mv%{!Ao@8N>HtVp2^8p5aEcwnPb>gp?IfU-nAJ z6#tm3_B{~lj=wb3(`k5V?!gLijiBJ+C9Q{-4&8`NNSb{*w+Xp@ur9sm@WXgI{vH{{ zRCxFv%>`T@3^8HEpB5SgV?rzt}1u_bttl!@rcF%?+U<_m2tn3`hB%HINukmb>0V0R~d&=TneSLS2V6$ zG^R_)UxrXc^~;)~v0J^Sgd@GvdMu>&GHEoBNxpe6gZ&uWXPQlOJ|Lc+!IP)wj%e!p z;58BD!&x%3ioi3WWd>U+NTg87PvCh1NVm$ZJ0tVGuaMWr6DJH%CxAzhdqUZK)bPWSR8U+ z9x0518HWQoP1yCfcj_OLZ)!<#hM^3%$=#V=OFQ>W8X7Z>qua28A6`ld%izUp?oSCSR+>GUrt6?>9&= zISw=fmcM1*RwWh9dZPgSF>0&n5idmAGoI65TZSLR0jnM1_}5y6~I(0UOPd?;+y#XC9t2X;V@5 zX}BH%o`%|X%D5f^>8$DQW01}&q*u~H>_iv}Esgwh)+gQM$|V-)DEKNlQjamuu zpK5`ksNrp@H3&(iUfo{wyL`m2&)~BUFOe3f817PT<1@pl<_q!?k=Lj8CEfPoUGn9> zKeyzY+8T&AkF}cD5e$u04vU$~lj31(v@Gnob?cEKCLbK~TfUza@|`!gIFcjn8|~#~ z6?8MGK%HxmAb`->Uw?!J7y8KL)BKt5Xx4Xdqwm;4mzm;L!fN@sUn~lPV)*IZee9~e z`=p7EUjeup>Wsvp21wb=eEi^>9p5}iS|8l=Dn+`?n-+HG;rh4FOw%;h!J^)1WWB56 z^V#H2rTTt3bW4vb2qvAzhV$npWKyQc-8T8l&`;A-VJHV$^eS5b&s9Rb)hYc)2+|iu zoym}1;TYGi8Txx;bmFas#Vn|21dSxa-uKqhUonv1ys@P7jC{uaEK8G;N`B%of7`wT znMCqyUpuj6iNH^k4=_!)_I@~=sgY39T{mpYsMK4kOuDVVH4m5{+4FS)k-P(D)YqU$ zEr{5lgD;c0?h^j=H?9}^U#?!bR=KtKCq9a@-U%=sTrGv-QW{+96eqLtmDf&wJ}Knm zkBV4tKtmJbw7siT@$5sjng_boI{!3LR3(!AoeMeseu}F!Ay%sCeg;=YqKaqI<41aj zDea%$OtzNxQ~lLY6d$XWYp;U_%f~O<8OBbN3KuNZo%m%PceY%SHXiWk-68HzNEOg?ttooiW%-Ivuk61!n|c$- zi(Afu`dp~sQ17UYSabO3e^)$=Ht4#f;m-IY+?&3x46A15kw)NhNzM~HUNnedo38LV zS^XtkeyB9>W(2Y8iNl3#I+&3nysrNNA_>J7oF`0{(Wl-vQ zH%O))&@@UF!zZh8h23Lg>-Hn+-9)bYjp_X7#u5OyHFv_~g1r3lBuL*gFbqxi2NGLP z|Avm~Xtb1DITh+4+bklpzFCI6!V8b1^rf6Z_X!cdo4Fl&yDhEX7XobmBc1RO#o;em zSxb+27O&oCn@^+xR{Wx15^-&70z6r&hyH>Ueb`82qempJG+Di;$yku3u`3 zT_jHK=&`ZJ5*F_MoL*NYl+l#zxVu~y|5RPrjWp_h`**uYjoB{1Zs-hNYL5fvS({e9T@T6Ny6+W;7ooc<+HhQl?%NS7s|yXElVLl_4hD zENJep4C8AQGT}K$aHQtQY;Z(4q+pJy)9ZG7QWfZVasI88&a-4fyi*K?4gxVu@vI?n z&IlBn>2ko4*$_ncZD%C=)!H*8T!NX$_%8N~nq)*%83Fzs=NNIe3 z(3sr%xFVmhLp4fRSOVsFo@6}Mk&Ix>_^>pPOzxB~X+_kp9bArQ8tN2HDqM3Rg0OO1 zsgnOnm)$wz|Fqe&+l1aSoac|2p@6bdf%xZFaP4DE+lkD}&&lzDc2OwSO7p<=YEp>E zpY|}%ua!oG;Mz}&s+*omk0^8l4&wRk?#SnvbsUf1yG+4ijy?fdOmf~n_s{bq+yj@M zMXap8nCPDtf@QJ!1cuY|6bk#ZX<>US9NO9gA6^J>5y%=%yLHSIlPQwO$B1SjhUIm4 zZklBz%b)q|#?e%B*FRzAZmyr1L{l;w0 z9#8D7*z`{2z_vFEceFi;C{Px^Hy4g1*+=QbWE8Q~Ql|SEv8f+Tz@w=6B^}OTs=58; zV42&5f+{oI57qSHx&f8eEQ!Rxy{Kz^N;YbaIo}9RE%J~3=s4vtfF1lQ0Wk&X%^XM_ z-4d$%7Z3<_RM#3sX`DL!T$+jDyOJ5!Oyken_x`i{=}=bmQ_{P4Fxe8q0?Hb06R@T~ zPCDkxC}koJJYKqWshucIv30ygH8sy*ynY)z%hpCW^vBivW+LQBaWHInz1nGVi;dzI zqoA8m`+2WvapoW}P*; zFErka3majxho3IolX1nKD$}tx(k9VG8jgHw$6)&`i>HGBVAfiQ z2jlxnh>rMjLx6L8w3eArHTU5JhF(^{9)})drb}ffgY=f`ft%Ec_O8-LiFfX2;&G>^ zE)@l$59OPO5#v#hZyfEp{z1*yCdAdfF%0k7FC-&2KwC$d`lvUHqPc_O8O%wTsJpqc zosJI=`SDRE+NpJ|;cKoc63=CxtMCNTnqf*S#bLms(WIH<2TN^SvQ% z+^msepW(eW0ZaF@=qp}n-+A0eFBV_bQZ3Q5&brhc-Z@n4~(|&d1r~yDB~q z2kmB)?l9PqHAttYM-s~hM3in&>75m>J7rS`HTJHDP&~6;S(JPLLA70@&fp~aA@zlr zm49h~mTq)GA2T|F)RS$lVB>mzxe0!wy{W=%oaCF5jQUj~-? zU{PWaN*QDXv1T}s+{LlxI+m;V{EbwC>Lf{%pZ@@Gd}29W&Es(5kQ&l03@a5Fu{E2>n%#vvU) zLKPMZnWq?ze0%ig;RQEII_~BvQ*Mb$BJ}B$CaZi^u$8G!pMwIRM^kR5$w2HBSY3_E zvkyWd&J}ut{`4HqCaQ{{_EbDG6&8lmf=B;d)UZ=C-U+OMVxLZ8Bx2ltaiO5FY%{)5 z6}7xBQyJ2b*O8s%yg>ydGSqlaY7wvADg}MGec{)t83wZpXXEgqo_3BpEY9zhF(&B; z@+Oc}ji$o;49mLoT2i!JwLYI$FU~)j&016O^!K1UC*v9yTcYEMTLn4^t>#Oi*(exk z0A+z*#X{)O#Q9go*`j8;o6d~Gv)VCEOrf@gs&q~f2s;+&1@GXb<@e6fsStxF!G)nHhL+``GnbjLszFzE_U-$B-R-SxTx~io|}oV&f|*T!W1f; zSDUYqYS7V%%&1oRW9whV_}#Q2bMu0q@W9AAy@ORt_d?c#U+2qN6Tfa(hpAvnX*CEm zq4Y?(BM|HSDjRAulE|Yieg&cyrW9F(F_+%0hU)%MO^K9LT1h&zXStMB!$(p}rlpNR z=Nx0^wUJ?MeF>P^m)n@B`Op(kYYy_RI?WA_u=g;REO4cj*Gw=e2Gd9Ip+iTT2?37p znB+Z%zqcD*4*R1#A(nQ1_~G8{(SYdWqptb0la+NMrc3X)vVI1obHQiBRr89?mZwz| zH&f$sIx!J;Mg;JIRFJgS^9ZMSEhErfo*xS1MO z{SWZPp9O%(V-n-%h1B+ftvY}DSS+>*xw>x=Od?ex^#K@lbW(<1>R+~*+=pxWI~{b6 z=9Hhkep}-ft0Wc+StcChk*1O0Uw&Ui*Nv?F=TceK;&PV^m;@V8%j| zL~%m$Uyvq{%Bey4W+bRv51!VSURQkdt@S@JQic!(jbp8Lk|E$@A`{EUZm=IH)R@qq zgtlT(^a_esKxst6Imy{d{3M@N%xPKc5C%P%iVk8l2p{ZZnk#?$&ZszcU=>XmZBRx* z!o_s_;P@>wj4l5*=H;&(03y_zkrk%iMx(*+nr21ki9ulm+O1H-V3xNC3IWRZP#VAc zg}ijfKFX}{rs?ZL+jfFR9G4m{%uD4#=Z*+FSikZq=c;Dn2V9wku(6W~07(IIHYFy0fK&U%^Z9) zGT<}m>iN|+lw`5BKEr~R;GR8$<;$0XJuJnrh7l8R5!OUn6S$~AWkOi~7Rm~ovM zC4T$!rXIj}z`3iL{gZ-6xk8ciP0e8OUWZ8S0D6U6rr(PeU?=3#NKp@GK)_BL-2#w&}4n zP^z3A!wKE5gDZ_YVviTZX&1{jEwoCpMg=E)Lx<|dEAORpYVTH9odp>y`cK-CE$pq* zl8sG!+z(?km>RPuMwTQnw(*M+-&$hkdK--Nz(q2w_|Et;@AKvXxA)-BRYi-XKeSH& z>?CKxo$hpQbHdK>(b_*`&1|8iZEwEcLSx<7nAlyV%Om1?5AfD8z1pwBaBIyTiaub5 zB>zJH_sxR>_>iF0I4QZoCWnI?A8Rv7GnAkePS1-ZPVz?fkI9f-*T!RXHD<4X5kJVO zWTcDo&(?-S=gMk-&DfBSoM_R(s)pa2mh7)=+#n}9IPfC*Sn4N`Z`gks6^spshf7;U zpWJXxC(`{}{4u0CQc7y8IasMuz2-GLhJ$baKV1R-n-gPhft(^#dbPgGj_G+a<|`A> zqi9k8JH3+1k$hq^Z2aUunF==IPjy40pt?MLg&b4UwMhhBKZyNE`BPxdjW@pZ$8rAC z3;|lK2`*ks6C@-j=!o18^Fyz`e&=NIA9wMDivJ3n@XOxxK#WoF317`sXrq~y?dBg- z{cYINYiC+s9wgHLsfIN0fe4MfoYLg4h|lht+XjebxU${eI=9jix)oh{|C88_0ri9j Y%Y-;{&O5334)~K0krgf%)bss+00B|Cpa1{> literal 0 HcmV?d00001 From 3410da478622da5ccb4b9e455f217eb711db58d9 Mon Sep 17 00:00:00 2001 From: Catalina A <94133018+catalinaadam@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:02:54 +0300 Subject: [PATCH 67/70] Adds missing bug descriptions to RelNotes (#3174) * added missing bug descriptions * removed duplicate --- docs/release-notes/2.43.0.md | 53 ++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/docs/release-notes/2.43.0.md b/docs/release-notes/2.43.0.md index 55a84d4f11..a140854d62 100644 --- a/docs/release-notes/2.43.0.md +++ b/docs/release-notes/2.43.0.md @@ -111,29 +111,54 @@ Specifying a limit with `--max-collections` for this collector is not necessary. For more information on MongoDB collectors and metrics, see the [pmm-admin commands documentation](../use/commamds/pmm-admin.md). + +## Maintenance + +### QAN update: Upgrade to `pg_query_go` v5 and impact on PostgreSQL 9.x + +As part of our ongoing maintenance efforts, we have upgraded the `pg_query_go` package to version 5. This latest version helps parse PostgreSQL queries in QAN, provides improved functionality, and enables subsequent upgrades of important dependencies. + +However, with this change, QAN will no longer be able to list PostgreSQL database tables for versions 9.4, 9.5, and 9.6. Since all PostgreSQL 9.x versions have already reached their end-of-life status, we recommend upgrading to a supported version of PostgreSQL. + +If you're looking to upgrade, you can easily [install the latest version of Percona Distribution for PostgreSQL](https://docs.percona.com/postgresql/16/installing.html). + ## Improvements -- [PMM-13133](https://perconadev.atlassian.net/browse/PMM-13133) - +- [PMM-13257](https://perconadev.atlassian.net/browse/PMM-13257): [Dashboards] - PMM 2.43 delivers refined MongoDB dashboards with standardized layouts, improved visual consistency, and enhanced usability across Replica Set, Cluster, Collections, and Oplog views, ensuring a more intuitive and efficient monitoring experience. -- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines returned by the `/logs.zip` endpoint has been increased from 1,000 to 50,000, with an added option to customize the line count or allow unlimited log size via a parameter in the download URL. +- [PMM-13003](https://perconadev.atlassian.net/browse/PMM-13003): [Dashboards] - The **MongoDB ReplSet Summary** dashboard now features a clearer, more organized layout with separate rows for CPU usage, CPU saturation, disk I/O, and network traffic for each node in replica sets with more than three nodes, improving visibility and analysis of multi-node deployments. -- [PMM-13159](https://perconadev.atlassian.net/browse/PMM-13159) - We have removed the experimental MongoDB **Collection Details** dashboard from PMM. You can now find up-to-date collection information on the new Mongo **Cluster Summary** dashboard, which provides a more comprehensive and accurate view of MongoDB collection metrics. +- [PMM-12982](https://perconadev.atlassian.net/browse/PMM-12982): [Dashboards] - The **MongoDB ReplSet Summary** dashboard now displays replica set roles (Primary, Secondary, Arbiter) for each node, enhancing visibility and simplifying identification of node functions within the replica set topology. -If you have been using the **Collection Details** dashboard, make sure to now check the new **MongoDB Cluster Summary** dashboard for similar information. +- [PMM-13258](https://perconadev.atlassian.net/browse/PMM-13258): [Dashboards] - Revamped **MongoDB** dashboard structure, featuring new and updated dashboards for improved monitoring of various MongoDB aspects including replicas, sharded clusters, collections, and oplogs, while moving older dashboards to the **Experimental** folder. +- [PMM-13227](https://perconadev.atlassian.net/browse/PMM-13227): [Dashboards] - Renamed the **MongoDB Cluster Summary** dashboard to **MongoDB Sharded Cluster Summary** to more accurately reflect its focus on sharded cluster environments, reducing potential confusion for users monitoring different MongoDB topologies. -## Maintenance +- [PMM-13217](https://perconadev.atlassian.net/browse/PMM-13217): [Dashboards] - The **MongoDB Sharded Cluster Summary** dashboard now displays the versions of mongoS routers alongside shard and config server versions, providing a more comprehensive view of the entire sharded cluster infrastructure. -### QAN update: Upgrade to `pg_query_go` v5 and impact on PostgreSQL 9.x +- [PMM-13183](https://perconadev.atlassian.net/browse/PMM-13183): [Dashboards] - The **Node States** chart in the **MongoDB ReplSet Summary** dashboard now auto-adjusts its size to display all nodes without scrolling, enhancing visibility and ease of monitoring for larger replica sets. -As part of our ongoing maintenance efforts, we have upgraded the `pg_query_go` package to version 5. This latest version helps parse PostgreSQL queries in QAN, provides improved functionality, and enables subsequent upgrades of important dependencies. +- [PMM-13029](https://perconadev.atlassian.net/browse/PMM-13029): [Dashboards] - Improved filtering consistency across all charts on the **MongoDB Oplog Details** dashboard, including the **Oplog GB/Hour** view, ensuring accurate data representation for selected MongoDB nodes. + +- [PMM-13159](https://perconadev.atlassian.net/browse/PMM-13159) [Dashboards] - We have removed the experimental MongoDB **Collection Details** dashboard from PMM. You can now find up-to-date collection information on the new Mongo **Cluster Summary** dashboard, which provides a more comprehensive and accurate view of MongoDB collection metrics. If you have been using the **Collection Details** dashboard, make sure to now check the new **MongoDB Cluster Summary** dashboard for similar information. -However, with this change, QAN will no longer be able to list PostgreSQL database tables for versions 9.4, 9.5, and 9.6. Since all PostgreSQL 9.x versions have already reached their end-of-life status, we recommend upgrading to a supported version of PostgreSQL. +- [PMM-13030](https://perconadev.atlassian.net/browse/PMM-13030): [Dashboards] - The **MongoDB Collections Overview** dashboard has been refined to ensure consistent data filtering across all charts, including **Top 5 Hottest Collections** views, aligning with user-selected database contexts for improved clarity and more accurate per-database analysis. + +- [PMM-13243](https://perconadev.atlassian.net/browse/PMM-13258) - Improved identification and monitoring of MongoDB cluster member roles, particularly for mongos instances, enabling clearer topology visualization and laying the groundwork for more precise alerting in sharded cluster environments. + +- [PMM-12333](https://perconadev.atlassian.net/browse/PMM-12333): [Installation] - The PMM client tarball installation process has been improved with more user-friendly features, including clearer error messages for permission issues, a helpful usage guide, and better overall guidance, making the setup process more intuitive and less error-prone for users. + +- [PMM-12957](https://perconadev.atlassian.net/browse/PMM-12957) - Introduced alerting capabilities for Percona Backup for MongoDB (PBM), leveraging newly added PBM-specific metrics to enable proactive monitoring of backup statuses, configurations, and performance across MongoDB deployments. + +- [PMM-13054](https://perconadev.atlassian.net/browse/PMM-13054) - The default number of log lines returned by the `/logs.zip` endpoint has been increased from 1,000 to 50,000, with an added option to customize the line count or allow unlimited log size via a parameter in the download URL. + +- [PMM-13292](https://perconadev.atlassian.net/browse/PMM-13292) - Introduced an improved mechanism to resolve port conflicts when starting multiple PMM agents on the same machine, enhancing reliability and reducing manual intervention in complex monitoring setups. -If you're looking to upgrade, you can easily [install the latest version of Percona Distribution for PostgreSQL](https://docs.percona.com/postgresql/16/installing.html). ### Fixed issues +- [PMM-13277](https://perconadev.atlassian.net/browse/PMM-13277) - PMM 2.43 is now available on the AWS Marketplace, resolving the previous temporary unavailability issue of PMM 2.42.0. Users can directly install or upgrade to PMM 2.43.0 through AWS Marketplace or the PMM UI for access to the latest features and improvements. + - [PMM-13246](https://perconadev.atlassian.net/browse/PMM-13246) - Addressed four security vulnerabilities (CVEs) related to the GNU C Library (Glibc), specifically affecting the Name Service Cache Daemon (nscd): - [CVE-2024-33599](https://nvd.nist.gov/vuln/detail/CVE-2024-33599) @@ -144,12 +169,13 @@ If you're looking to upgrade, you can easily [install the latest version of Perc While these vulnerabilities did not directly impact PMM's core functionality, fixing them enhanced the overall security of the PMM Server environment. -- [PMM-13255](https://perconadev.atlassian.net/browse/PMM-13255) - Resolved two issues with the MongoDB Replication Lag Alert: one where an error occurred during the import of the alert rule template, and another where the alert description displayed an incorrect current value for the replication lag. +- [PMM-13002](https://perconadev.atlassian.net/browse/PMM-13246): [Dashboards] - Fixed a bug in the **MongoDB ReplSet Summary** dashboard where the **Node Summary** section only displayed information for one node. It now correctly shows data for all nodes in a replica set when **All** is selected, providing a comprehensive view of multi-node deployments. +- [PMM-13255](https://perconadev.atlassian.net/browse/PMM-13255) - Resolved two issues with the MongoDB Replication Lag Alert: one where an error occurred during the import of the alert rule template, and another where the alert description displayed an incorrect current value for the replication lag. +- [PMM-13288](https://perconadev.atlassian.net/browse/PMM-13288) - Fixed an issue where queries longer than 2048 characters in PostgreSQL were not properly parsed for table extraction, now allowing accurate monitoring and analysis of long queries without generating error messages in logs. -- [PMM-12965](https://perconadev.atlassian.net/browse/PMM-12965) - We've improved the -**MongoDB replication lag is high** alert template to make sure it: +- [PMM-12965](https://perconadev.atlassian.net/browse/PMM-12965) - We've improved the **MongoDB replication lag is high** alert template to make sure it: - now triggers only for `SECONDARY` nodes that are up and exceed the lag threshold, eliminating false alarms during maintenance. - excludes `PRIMARY` nodes from alerts, as they cannot lag behind themselves. @@ -158,5 +184,4 @@ To ensure you're using the updated alert logic, make sure to recreate any alerts - [PMM-12451](https://perconadev.atlassian.net/browse/PMM-12451) and [PMM-13017](https://perconadev.atlassian.net/browse/PMM-13017) - Resolved an issue with parsing JSON objects into the correct data types and aligned the explain functionality with the official MongoDB client. These updates enhance consistency with MongoDB's native tools and provide improved performance insights. -- [PMM-13071](https://perconadev.atlassian.net/browse/PMM-13071) - The **Explain** tab on the Query Analytics (QAN) page now properly handles unsupported MongoDB query types. For operations like `INSERT`, which don’t support explain functionality, you will now see a clear message saying that the operation is not explainable. This replaces the previous, confusing error message about duplicate BSON fields, offering more accurate feedback in QAN. - +- [PMM-13071](https://perconadev.atlassian.net/browse/PMM-13071) - The **Explain** tab on the Query Analytics (QAN) page now properly handles unsupported MongoDB query types. For operations like `INSERT`, which don’t support explain functionality, you will now see a clear message saying that the operation is not explainable. This replaces the previous, confusing error message about duplicate BSON fields, offering more accurate feedback in QAN. \ No newline at end of file From 5883e93afa4c64e944673844643eb4771bc6e7e0 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Fri, 23 Aug 2024 11:36:45 +0000 Subject: [PATCH 68/70] PMM-7 fix proto validation error --- api/server/v1/server.pb.go | 703 ++++++++++++++++++------------------- api/server/v1/server.proto | 1 - 2 files changed, 350 insertions(+), 354 deletions(-) diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index fd1eccccee..8315a4824b 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -10,7 +10,6 @@ import ( reflect "reflect" sync "sync" - _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -1484,361 +1483,359 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x26, + 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, + 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1a, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x4c, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x11, 0x44, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, - 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x75, 0x6d, - 0x6d, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x22, - 0xdd, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, - 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, - 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, - 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x12, 0x64, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, - 0x12, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x34, - 0x0a, 0x16, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, - 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x11, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x90, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x34, - 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x4e, 0x65, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x22, 0x31, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x38, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x90, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x39, + 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x31, 0x0a, 0x12, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x13, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x22, 0x53, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x66, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, - 0x66, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, - 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, - 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, - 0x0a, 0x02, 0x68, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x68, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6d, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x02, 0x6d, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6c, 0x72, 0x22, - 0xe5, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, - 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, - 0x3e, 0x0a, 0x0d, 0x72, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0c, 0x72, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, - 0x46, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xe1, 0x06, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, - 0x11, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x72, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, - 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, - 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x73, 0x52, 0x13, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2f, - 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x46, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xca, 0x07, 0x0a, 0x15, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x2e, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, + 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, + 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x02, 0x68, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x68, 0x72, + 0x12, 0x29, 0x0a, 0x02, 0x6d, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6d, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x3f, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, - 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, - 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x70, 0x6d, - 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, - 0x15, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x13, 0x61, 0x64, - 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, - 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x07, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, - 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, - 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, - 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, - 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, - 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, - 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, - 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, - 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, - 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, - 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, - 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, - 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, - 0x10, 0x05, 0x32, 0x91, 0x0c, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, - 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xab, 0x02, - 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x20, - 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, - 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, 0x65, - 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, 0x62, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0x81, 0x02, 0x0a, 0x11, - 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x92, - 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x6c, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0xa7, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x56, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, - 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0xad, 0x01, 0x0a, 0x0c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x92, 0x41, 0x32, - 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, - 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, - 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, - 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xa7, 0x01, 0x0a, - 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, - 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6f, 0x6e, 0x52, 0x02, 0x6c, 0x72, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x76, 0x69, 0x73, + 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x46, + 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x61, 0x72, 0x65, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x61, 0x72, 0x65, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xe1, + 0x06, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, + 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x64, + 0x76, 0x69, 0x73, 0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, + 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x15, + 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, + 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x13, 0x61, 0x64, 0x76, + 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, + 0x12, 0x3a, 0x0a, 0x19, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x17, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, + 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2f, 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x22, 0xca, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, + 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x73, 0x73, 0x68, + 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x04, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, + 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, + 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x73, 0x52, 0x13, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x75, 0x6e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, + 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, + 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x49, 0x0a, + 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x4b, + 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, 0x46, 0x10, + 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x1d, + 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, + 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, + 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, + 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0x91, 0x0c, 0x0a, 0x0d, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x07, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, + 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, + 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xab, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, + 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, + 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, + 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, + 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, + 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x7a, 0x12, 0x81, 0x02, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xa0, 0x01, 0x92, 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4f, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0xad, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x5c, 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, + 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, + 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, + 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x90, 0x01, + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, + 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index 527ff71a27..a7785f2058 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -7,7 +7,6 @@ import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; -import "validate/validate.proto"; // DistributionMethod defines PMM Server distribution method: Docker image, OVF/OVA, or AMI. enum DistributionMethod { From c7fe1b2387c97230b5b62f2986510a93a94bd6b0 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Wed, 28 Aug 2024 16:44:51 +0300 Subject: [PATCH 69/70] PMM-7 Move build-submodules script to monorepo (#3185) --- build/scripts/build-submodules | 44 ++++++++++++++++------------------ 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/build/scripts/build-submodules b/build/scripts/build-submodules index 34134e794b..e7dc1d7c47 100755 --- a/build/scripts/build-submodules +++ b/build/scripts/build-submodules @@ -1,9 +1,15 @@ #!/bin/bash set -o errexit +git submodule update --init --jobs 10 +git submodule status + if [ -s ci.yml ]; then - sudo rm -rf results tmp || : + if [ -f /home/ec2-user/venv/bin/activate ]; then + source /home/ec2-user/venv/bin/activate + fi python3 ci.py + cat .git-sources . ./.git-sources echo $pmm_commit > apiCommitSha echo $pmm_branch > apiBranch @@ -13,30 +19,22 @@ if [ -s ci.yml ]; then echo $pmm_ui_tests_branch > pmmUITestBranch echo $pmm_ui_tests_commit > pmmUITestsCommitSha else - sudo rm -rf results tmp || : - git reset --hard - git clean -fdx - git submodule foreach --recursive git reset --hard - git submodule foreach --recursive git clean -fdx - git submodule status - export commit_sha=$(git submodule status | grep 'pmm-managed' | awk -F ' ' '{print $1}') - export api_tests_commit_sha=$(git submodule status | grep 'pmm' | awk -F ' ' '{print $1}') - export api_tests_branch=$(git config -f .gitmodules submodule.pmm.branch) - export api_tests_url=$(git config -f .gitmodules submodule.pmm.url) - echo $api_tests_commit_sha > apiCommitSha - echo $api_tests_branch > apiBranch - echo $api_tests_url > apiURL - cat apiBranch - cat apiURL - export pmm_qa_commit_sha=$(git submodule status | grep 'pmm-qa' | awk -F ' ' '{print $1}') - export pmm_qa_branch=$(git config -f .gitmodules submodule.pmm-qa.branch) + # Define variables using git queries, i.e. w/o python + pmm_commit=$(git submodule status | grep 'sources/pmm/src' | awk -F ' ' '{print $1}') + echo $pmm_commit > apiCommitSha + pmm_branch=$(git config -f .gitmodules submodule.pmm.branch) + echo $pmm_branch > apiBranch + pmm_url=$(git config -f .gitmodules submodule.pmm.url) + echo $pmm_url > apiURL + pmm_qa_branch=$(git config -f .gitmodules submodule.pmm-qa.branch) echo $pmm_qa_branch > pmmQABranch - echo $pmm_qa_commit_sha > pmmQACommitSha - export pmm_ui_tests_commit_sha=$(git submodule status | grep 'pmm-ui-tests' | awk -F ' ' '{print $1}') - export pmm_ui_tests_branch=$(git config -f .gitmodules submodule.pmm-ui-tests.branch) + pmm_qa_commit=$(git submodule status | grep 'pmm-qa' | awk -F ' ' '{print $1}') + echo $pmm_qa_commit > pmmQACommitSha + pmm_ui_tests_branch=$(git config -f .gitmodules submodule.pmm-ui-tests.branch) echo $pmm_ui_tests_branch > pmmUITestBranch - echo $pmm_ui_tests_commit_sha > pmmUITestsCommitSha + pmm_ui_tests_commit=$(git submodule status | grep 'pmm-ui-tests' | awk -F ' ' '{print $1}') + echo $pmm_ui_tests_commit > pmmUITestsCommitSha fi -export fb_commit_sha=$(git rev-parse HEAD) +fb_commit_sha=$(git rev-parse HEAD) echo $fb_commit_sha > fbCommitSha From 11cba1b1ddedd3888dd8d0ff42ca20ae6ea6a401 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Wed, 28 Aug 2024 17:48:27 +0300 Subject: [PATCH 70/70] PMM-7 Fix agent API test (#3177) --- api-tests/management/services/agent_test.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/api-tests/management/services/agent_test.go b/api-tests/management/services/agent_test.go index 89ea9c6ebd..a88326a97b 100644 --- a/api-tests/management/services/agent_test.go +++ b/api-tests/management/services/agent_test.go @@ -20,7 +20,6 @@ import ( "testing" "time" - "github.com/AlekSi/pointer" "github.com/stretchr/testify/require" pmmapitests "github.com/percona/pmm/api-tests" @@ -33,14 +32,14 @@ func TestListAgentVersions(t *testing.T) { t.Cleanup(func() { cancel() }) t.Run("PMM Agent needs no update", func(t *testing.T) { - listAgentVersionsOK, err := client.Default.ManagementService.ListAgentVersions( + resp, err := client.Default.ManagementService.ListAgentVersions( &mgmtSvc.ListAgentVersionsParams{ Context: ctx, }) require.NoError(t, err) - require.Len(t, listAgentVersionsOK.Payload.AgentVersions, 1) + require.Len(t, resp.Payload.AgentVersions, 1) - expected := pointer.ToString(mgmtSvc.ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUPTODATE) - require.Equal(t, expected, listAgentVersionsOK.Payload.AgentVersions[0].Severity) + expected := mgmtSvc.ListAgentVersionsOKBodyAgentVersionsItems0SeverityUPDATESEVERITYUPTODATE + require.Equal(t, expected, *resp.Payload.AgentVersions[0].Severity) }) }