Skip to content
This repository was archived by the owner on Jun 21, 2022. It is now read-only.

Commit 6165450

Browse files
authored
Merge branch 'main' into PMM-10068-fix-stt-metric-query
2 parents 87e66bc + 2050762 commit 6165450

13 files changed

+643
-95
lines changed

Makefile.include

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@ help: ## Display this help message.
3838
@echo "Please use \`make <target>\` where <target> is one of:"
3939
@grep -h '^[a-zA-Z]' $(MAKEFILE_LIST) | \
4040
awk -F ':.*?## ' 'NF==2 {printf " %-26s%s\n", $$1, $$2}'
41+
@echo
42+
@echo "To test DBaaS components with minikube:"
43+
@echo "Start minikube: minikube start --cpus=2 --nodes=3 --kubernetes-version=v1.20.0"
44+
@echo "ENABLE_DBAAS=1 NETWORK=minikube make env-up"

docker-compose.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ services:
55
image: ${PMM_SERVER_IMAGE:-perconalab/pmm-server:dev-latest}
66
container_name: pmm-managed-server
77
hostname: pmm-managed-server
8+
networks:
9+
- ${NETWORK:-default}
810
environment:
911
- PATH=/root/go/bin:$PATH
1012
- GO_VERSION=${GO_VERSION:-1.18.x}
@@ -54,3 +56,8 @@ services:
5456
- go-modules:/root/go/pkg/mod # Put modules cache into a separate volume
5557
volumes:
5658
go-modules:
59+
60+
networks:
61+
minikube:
62+
external:
63+
name: minikube

go.mod

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ require (
1818
github.com/Azure/azure-sdk-for-go v65.0.0+incompatible
1919
github.com/Azure/go-autorest/autorest v0.11.27
2020
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11
21-
github.com/ClickHouse/clickhouse-go/v2 v2.0.14
21+
github.com/ClickHouse/clickhouse-go/v2 v2.0.15
2222
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
23-
github.com/aws/aws-sdk-go v1.44.27
23+
github.com/aws/aws-sdk-go v1.44.33
2424
github.com/brianvoe/gofakeit/v6 v6.16.0
2525
github.com/davecgh/go-spew v1.1.1
2626
github.com/go-co-op/gocron v1.13.0
@@ -31,13 +31,13 @@ require (
3131
github.com/google/uuid v1.3.0
3232
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
3333
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
34-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.0
34+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.3
3535
github.com/hashicorp/go-version v1.5.0
3636
github.com/lib/pq v1.10.6
37-
github.com/minio/minio-go/v7 v7.0.27
37+
github.com/minio/minio-go/v7 v7.0.28
3838
github.com/percona-platform/dbaas-api v0.0.0-20220110092915-5aacd784d472
3939
github.com/percona-platform/saas v0.0.0-20220427162947-f9d246ad0f16
40-
github.com/percona/pmm v0.0.0-20220609163826-96fb5593d69b
40+
github.com/percona/pmm v0.0.0-20220613185940-593b9a167d9f
4141
github.com/percona/promconfig v0.2.4-0.20211110115058-98687f586f54
4242
github.com/pkg/errors v0.9.1
4343
github.com/pmezard/go-difflib v1.0.0
@@ -46,17 +46,17 @@ require (
4646
github.com/prometheus/common v0.34.0
4747
github.com/robfig/cron/v3 v3.0.1
4848
github.com/sirupsen/logrus v1.8.1
49-
github.com/stretchr/testify v1.7.1
49+
github.com/stretchr/testify v1.7.2
5050
go.starlark.net v0.0.0-20220302181546-5411bad688d1
5151
golang.org/x/crypto v0.0.0-20220313003712-b769efc7c000
5252
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
5353
golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32
54-
google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4
54+
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd
5555
google.golang.org/grpc v1.47.0
5656
google.golang.org/protobuf v1.28.0
5757
gopkg.in/alecthomas/kingpin.v2 v2.2.6
5858
gopkg.in/reform.v1 v1.5.1
59-
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
59+
gopkg.in/yaml.v3 v3.0.1
6060
)
6161

6262
require (
@@ -117,7 +117,7 @@ require (
117117
github.com/oklog/run v1.1.0 // indirect
118118
github.com/oklog/ulid v1.3.1 // indirect
119119
github.com/opentracing/opentracing-go v1.2.0 // indirect
120-
github.com/paulmach/orb v0.5.0 // indirect
120+
github.com/paulmach/orb v0.7.1 // indirect
121121
github.com/pierrec/lz4/v4 v4.1.14 // indirect
122122
github.com/prometheus/client_model v0.2.1-0.20200623203004-60555c9708c7 // indirect
123123
github.com/prometheus/common/sigv4 v0.1.0 // indirect
@@ -134,7 +134,7 @@ require (
134134
go.opentelemetry.io/otel/trace v1.7.0 // indirect
135135
golang.org/x/mod v0.5.1 // indirect
136136
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect
137-
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a // indirect
137+
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect
138138
golang.org/x/text v0.3.7 // indirect
139139
golang.org/x/tools v0.1.9 // indirect
140140
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect

go.sum

Lines changed: 25 additions & 22 deletions
Large diffs are not rendered by default.

main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ type gRPCServerDeps struct {
157157
versionCache *versioncache.Service
158158
supervisord *supervisord.Service
159159
config *config.Config
160+
componentsService *managementdbaas.ComponentsService
160161
}
161162

162163
// runGRPCServer runs gRPC server until context is canceled, then gracefully stops it.
@@ -222,8 +223,8 @@ func runGRPCServer(ctx context.Context, deps *gRPCServerDeps) {
222223

223224
dbaasv1beta1.RegisterKubernetesServer(gRPCServer, managementdbaas.NewKubernetesServer(deps.db, deps.dbaasClient, deps.grafanaClient, deps.versionServiceClient))
224225
dbaasv1beta1.RegisterDBClustersServer(gRPCServer, managementdbaas.NewDBClusterService(deps.db, deps.dbaasClient, deps.grafanaClient, deps.versionServiceClient))
225-
dbaasv1beta1.RegisterPXCClustersServer(gRPCServer, managementdbaas.NewPXCClusterService(deps.db, deps.dbaasClient, deps.grafanaClient, deps.versionServiceClient))
226-
dbaasv1beta1.RegisterPSMDBClustersServer(gRPCServer, managementdbaas.NewPSMDBClusterService(deps.db, deps.dbaasClient, deps.grafanaClient, deps.versionServiceClient))
226+
dbaasv1beta1.RegisterPXCClustersServer(gRPCServer, managementdbaas.NewPXCClusterService(deps.db, deps.dbaasClient, deps.grafanaClient, deps.componentsService, deps.versionServiceClient.GetVersionServiceURL()))
227+
dbaasv1beta1.RegisterPSMDBClustersServer(gRPCServer, managementdbaas.NewPSMDBClusterService(deps.db, deps.dbaasClient, deps.grafanaClient, deps.componentsService, deps.versionServiceClient.GetVersionServiceURL()))
227228
dbaasv1beta1.RegisterLogsAPIServer(gRPCServer, managementdbaas.NewLogsService(deps.db, deps.dbaasClient))
228229
dbaasv1beta1.RegisterComponentsServer(gRPCServer, managementdbaas.NewComponentsService(deps.db, deps.dbaasClient, deps.versionServiceClient))
229230

@@ -740,6 +741,8 @@ func main() {
740741
emailer := alertmanager.NewEmailer(logrus.WithField("component", "alertmanager-emailer").Logger)
741742
defaultsFileParser := agents.NewDefaultsFileParser(agentsRegistry)
742743

744+
componentsService := managementdbaas.NewComponentsService(db, dbaasClient, versionService)
745+
743746
serverParams := &server.Params{
744747
DB: db,
745748
VMDB: vmdb,
@@ -940,6 +943,7 @@ func main() {
940943
supervisord: supervisord,
941944
config: &cfg.Config,
942945
defaultsFileParser: defaultsFileParser,
946+
componentsService: componentsService,
943947
})
944948
}()
945949

services/management/dbaas/components_service.go

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
"github.com/percona/pmm-managed/utils/stringset"
3636
)
3737

38-
type componentsService struct {
38+
type ComponentsService struct {
3939
l *logrus.Entry
4040
db *reform.DB
4141
dbaasClient dbaasClient
@@ -51,9 +51,9 @@ type installedComponentsVersion struct {
5151
}
5252

5353
// NewComponentsService creates Components Service.
54-
func NewComponentsService(db *reform.DB, dbaasClient dbaasClient, versionServiceClient versionService) dbaasv1beta1.ComponentsServer {
54+
func NewComponentsService(db *reform.DB, dbaasClient dbaasClient, versionServiceClient versionService) *ComponentsService {
5555
l := logrus.WithField("component", "components_service")
56-
return &componentsService{
56+
return &ComponentsService{
5757
l: l,
5858
db: db,
5959
dbaasClient: dbaasClient,
@@ -62,7 +62,7 @@ func NewComponentsService(db *reform.DB, dbaasClient dbaasClient, versionService
6262
}
6363

6464
// Enabled returns if service is enabled and can be used.
65-
func (c *componentsService) Enabled() bool {
65+
func (c *ComponentsService) Enabled() bool {
6666
settings, err := models.GetSettings(c.db)
6767
if err != nil {
6868
c.l.WithError(err).Error("can't get settings")
@@ -71,7 +71,7 @@ func (c *componentsService) Enabled() bool {
7171
return settings.DBaaS.Enabled
7272
}
7373

74-
func (c componentsService) GetPSMDBComponents(ctx context.Context, req *dbaasv1beta1.GetPSMDBComponentsRequest) (*dbaasv1beta1.GetPSMDBComponentsResponse, error) {
74+
func (c ComponentsService) GetPSMDBComponents(ctx context.Context, req *dbaasv1beta1.GetPSMDBComponentsRequest) (*dbaasv1beta1.GetPSMDBComponentsResponse, error) {
7575
var kubernetesCluster *models.KubernetesCluster
7676
params := componentsParams{
7777
product: psmdbOperator,
@@ -99,7 +99,7 @@ func (c componentsService) GetPSMDBComponents(ctx context.Context, req *dbaasv1b
9999
return &dbaasv1beta1.GetPSMDBComponentsResponse{Versions: versions}, nil
100100
}
101101

102-
func (c componentsService) GetPXCComponents(ctx context.Context, req *dbaasv1beta1.GetPXCComponentsRequest) (*dbaasv1beta1.GetPXCComponentsResponse, error) {
102+
func (c ComponentsService) GetPXCComponents(ctx context.Context, req *dbaasv1beta1.GetPXCComponentsRequest) (*dbaasv1beta1.GetPXCComponentsResponse, error) {
103103
var kubernetesCluster *models.KubernetesCluster
104104
params := componentsParams{
105105
product: pxcOperator,
@@ -127,7 +127,7 @@ func (c componentsService) GetPXCComponents(ctx context.Context, req *dbaasv1bet
127127
return &dbaasv1beta1.GetPXCComponentsResponse{Versions: versions}, nil
128128
}
129129

130-
func (c componentsService) ChangePSMDBComponents(ctx context.Context, req *dbaasv1beta1.ChangePSMDBComponentsRequest) (*dbaasv1beta1.ChangePSMDBComponentsResponse, error) {
130+
func (c ComponentsService) ChangePSMDBComponents(ctx context.Context, req *dbaasv1beta1.ChangePSMDBComponentsRequest) (*dbaasv1beta1.ChangePSMDBComponentsResponse, error) {
131131
err := c.db.InTransaction(func(tx *reform.TX) error {
132132
kubernetesCluster, e := models.FindKubernetesClusterByName(tx.Querier, req.KubernetesClusterName)
133133
if e != nil {
@@ -156,7 +156,7 @@ func (c componentsService) ChangePSMDBComponents(ctx context.Context, req *dbaas
156156
return &dbaasv1beta1.ChangePSMDBComponentsResponse{}, nil
157157
}
158158

159-
func (c componentsService) ChangePXCComponents(ctx context.Context, req *dbaasv1beta1.ChangePXCComponentsRequest) (*dbaasv1beta1.ChangePXCComponentsResponse, error) {
159+
func (c ComponentsService) ChangePXCComponents(ctx context.Context, req *dbaasv1beta1.ChangePXCComponentsRequest) (*dbaasv1beta1.ChangePXCComponentsResponse, error) {
160160
err := c.db.InTransaction(func(tx *reform.TX) error {
161161
kubernetesCluster, e := models.FindKubernetesClusterByName(tx.Querier, req.KubernetesClusterName)
162162
if e != nil {
@@ -200,7 +200,7 @@ func (c componentsService) ChangePXCComponents(ctx context.Context, req *dbaasv1
200200
return &dbaasv1beta1.ChangePXCComponentsResponse{}, nil
201201
}
202202

203-
func (c componentsService) installedOperatorsVersion(ctx context.Context, wg *sync.WaitGroup, responseCh chan installedComponentsVersion, kuberentesCluster *models.KubernetesCluster) {
203+
func (c ComponentsService) installedOperatorsVersion(ctx context.Context, wg *sync.WaitGroup, responseCh chan installedComponentsVersion, kuberentesCluster *models.KubernetesCluster) {
204204
defer wg.Done()
205205
resp, err := c.dbaasClient.CheckKubernetesClusterConnection(ctx, kuberentesCluster.KubeConfig)
206206
if err != nil {
@@ -217,7 +217,7 @@ func (c componentsService) installedOperatorsVersion(ctx context.Context, wg *sy
217217
}
218218
}
219219

220-
func (c componentsService) CheckForOperatorUpdate(ctx context.Context, req *dbaasv1beta1.CheckForOperatorUpdateRequest) (*dbaasv1beta1.CheckForOperatorUpdateResponse, error) {
220+
func (c ComponentsService) CheckForOperatorUpdate(ctx context.Context, req *dbaasv1beta1.CheckForOperatorUpdateRequest) (*dbaasv1beta1.CheckForOperatorUpdateResponse, error) {
221221
if pmmversion.PMMVersion == "" {
222222
return nil, status.Error(codes.Internal, "failed to get current PMM version")
223223
}
@@ -293,7 +293,7 @@ func (c componentsService) CheckForOperatorUpdate(ctx context.Context, req *dbaa
293293
return resp, nil
294294
}
295295

296-
func (c componentsService) versions(ctx context.Context, params componentsParams, cluster *models.KubernetesCluster) ([]*dbaasv1beta1.OperatorVersion, error) {
296+
func (c ComponentsService) versions(ctx context.Context, params componentsParams, cluster *models.KubernetesCluster) ([]*dbaasv1beta1.OperatorVersion, error) {
297297
components, err := c.versionServiceClient.Matrix(ctx, params)
298298
if err != nil {
299299
return nil, err
@@ -331,7 +331,7 @@ func (c componentsService) versions(ctx context.Context, params componentsParams
331331
return versions, nil
332332
}
333333

334-
func (c componentsService) matrix(m map[string]componentVersion, minimalVersion *goversion.Version, kc *models.Component) map[string]*dbaasv1beta1.Component {
334+
func (c ComponentsService) matrix(m map[string]componentVersion, minimalVersion *goversion.Version, kc *models.Component) map[string]*dbaasv1beta1.Component {
335335
result := make(map[string]*dbaasv1beta1.Component)
336336

337337
var lastVersion string
@@ -405,7 +405,7 @@ func setComponent(kc *models.Component, rc *dbaasv1beta1.ChangeComponent) (*mode
405405
return kc, nil
406406
}
407407

408-
func (c componentsService) InstallOperator(ctx context.Context, req *dbaasv1beta1.InstallOperatorRequest) (*dbaasv1beta1.InstallOperatorResponse, error) {
408+
func (c ComponentsService) InstallOperator(ctx context.Context, req *dbaasv1beta1.InstallOperatorRequest) (*dbaasv1beta1.InstallOperatorResponse, error) {
409409
kubernetesCluster, err := models.FindKubernetesClusterByName(c.db.Querier, req.KubernetesClusterName)
410410
if err != nil {
411411
return nil, status.Error(codes.Internal, err.Error())
@@ -458,3 +458,24 @@ func (c componentsService) InstallOperator(ctx context.Context, req *dbaasv1beta
458458

459459
return &dbaasv1beta1.InstallOperatorResponse{Status: dbaasv1beta1.OperatorsStatus_OPERATORS_STATUS_OK}, nil
460460
}
461+
462+
// DefaultComponent returns the component marked as default in the components list.
463+
func DefaultComponent(m map[string]*dbaasv1beta1.Component) (*dbaasv1beta1.Component, error) {
464+
if len(m) == 0 {
465+
return nil, errNoVersionsFound
466+
}
467+
468+
for _, component := range m {
469+
if component.Default {
470+
return &dbaasv1beta1.Component{
471+
ImagePath: component.ImagePath,
472+
ImageHash: component.ImageHash,
473+
Status: component.Status,
474+
Critical: component.Critical,
475+
},
476+
nil
477+
}
478+
}
479+
480+
return nil, errors.New("cannot find a default version in the components list")
481+
}

services/management/dbaas/components_service_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ func TestComponentServiceMatrix(t *testing.T) {
369369
}
370370

371371
t.Run("All", func(t *testing.T) {
372-
cs := &componentsService{}
372+
cs := &ComponentsService{}
373373
m := cs.matrix(input, nil, nil)
374374

375375
expected := map[string]*dbaasv1beta1.Component{
@@ -391,7 +391,7 @@ func TestComponentServiceMatrix(t *testing.T) {
391391
})
392392

393393
t.Run("Disabled and Default Components", func(t *testing.T) {
394-
cs := &componentsService{}
394+
cs := &ComponentsService{}
395395

396396
m := cs.matrix(input, nil, &models.Component{
397397
DisabledVersions: []string{"8.0.20-11.2", "8.0.20-11.1"},
@@ -417,7 +417,7 @@ func TestComponentServiceMatrix(t *testing.T) {
417417
})
418418

419419
t.Run("Skip unsupported Components", func(t *testing.T) {
420-
cs := &componentsService{}
420+
cs := &ComponentsService{}
421421

422422
minimumSupportedVersion, err := goversion.NewVersion("8.0.0")
423423
require.NoError(t, err)
@@ -437,15 +437,15 @@ func TestComponentServiceMatrix(t *testing.T) {
437437
})
438438

439439
t.Run("EmptyMatrix", func(t *testing.T) {
440-
cs := &componentsService{}
440+
cs := &ComponentsService{}
441441
m := cs.matrix(make(map[string]componentVersion), nil, nil)
442442
assert.Equal(t, make(map[string]*dbaasv1beta1.Component), m)
443443
})
444444
}
445445

446446
func TestFilteringOutOfUnsupportedVersions(t *testing.T) {
447447
t.Parallel()
448-
c := &componentsService{
448+
c := &ComponentsService{
449449
l: logrus.WithField("component", "components_service"),
450450
versionServiceClient: NewVersionServiceClient(versionServiceURL),
451451
}

services/management/dbaas/deps.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ import (
2222

2323
goversion "github.com/hashicorp/go-version"
2424
controllerv1beta1 "github.com/percona-platform/dbaas-api/gen/controller"
25+
dbaasv1beta1 "github.com/percona/pmm/api/managementpb/dbaas"
2526
"google.golang.org/grpc"
2627
)
2728

2829
//go:generate mockery -name=dbaasClient -case=snake -inpkg -testonly
2930
//go:generate mockery -name=versionService -case=snake -inpkg -testonly
3031
//go:generate mockery -name=grafanaClient -case=snake -inpkg -testonly
32+
//go:generate mockery -name=componentsService -case=snake -inpkg -testonly
3133

3234
type dbaasClient interface {
3335
// CheckKubernetesClusterConnection checks connection to Kubernetes cluster and returns statuses of the cluster and operators.
@@ -96,3 +98,12 @@ type grafanaClient interface {
9698
DeleteAPIKeysWithPrefix(ctx context.Context, name string) error
9799
DeleteAPIKeyByID(ctx context.Context, id int64) error
98100
}
101+
102+
type componentsService interface {
103+
GetPSMDBComponents(context.Context, *dbaasv1beta1.GetPSMDBComponentsRequest) (*dbaasv1beta1.GetPSMDBComponentsResponse, error)
104+
GetPXCComponents(context.Context, *dbaasv1beta1.GetPXCComponentsRequest) (*dbaasv1beta1.GetPXCComponentsResponse, error)
105+
ChangePSMDBComponents(context.Context, *dbaasv1beta1.ChangePSMDBComponentsRequest) (*dbaasv1beta1.ChangePSMDBComponentsResponse, error)
106+
ChangePXCComponents(context.Context, *dbaasv1beta1.ChangePXCComponentsRequest) (*dbaasv1beta1.ChangePXCComponentsResponse, error)
107+
CheckForOperatorUpdate(context.Context, *dbaasv1beta1.CheckForOperatorUpdateRequest) (*dbaasv1beta1.CheckForOperatorUpdateResponse, error)
108+
InstallOperator(context.Context, *dbaasv1beta1.InstallOperatorRequest) (*dbaasv1beta1.InstallOperatorResponse, error)
109+
}

0 commit comments

Comments
 (0)