Skip to content

Commit

Permalink
PMM-12375 add serviceInfoBroker to rds
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Tymchuk committed Sep 23, 2023
1 parent e17d889 commit d842adc
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 8 deletions.
3 changes: 0 additions & 3 deletions agent/serviceinfobroker/service_info_broker.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ func (sib *ServiceInfoBroker) getMySQLInfo(ctx context.Context, dsn string, file
var version string
if err = db.QueryRowContext(ctx, "SELECT /* agent='serviceinfobroker' */ VERSION()").Scan(&version); err != nil {
res.Error = err.Error()
return &res
}

res.Version = version
Expand Down Expand Up @@ -194,7 +193,6 @@ func (sib *ServiceInfoBroker) getMongoDBInfo(ctx context.Context, dsn string, fi

if err = resp.Decode(&buildInfo); err != nil {
sib.l.Debugf("getMongoDBInfo: failed to decode buildInfo: %s", err)
return &res
}

res.Version = buildInfo.Version
Expand Down Expand Up @@ -224,7 +222,6 @@ func (sib *ServiceInfoBroker) getPostgreSQLInfo(ctx context.Context, dsn string,
var version string
if err = db.QueryRowContext(ctx, "SHOW /* agent='serviceinfobroker' */ SERVER_VERSION").Scan(&version); err != nil {
res.Error = err.Error()
return &res
}

res.Version = version
Expand Down
2 changes: 1 addition & 1 deletion managed/cmd/pmm-managed/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ func runGRPCServer(ctx context.Context, deps *gRPCServerDeps) {
managementpb.RegisterPostgreSQLServer(gRPCServer, managementgrpc.NewManagementPostgreSQLServer(postgresqlSvc))
managementpb.RegisterProxySQLServer(gRPCServer, managementgrpc.NewManagementProxySQLServer(proxysqlSvc))
managementpb.RegisterActionsServer(gRPCServer, managementgrpc.NewActionsServer(deps.actions, deps.db))
managementpb.RegisterRDSServer(gRPCServer, management.NewRDSService(deps.db, deps.agentsStateUpdater, deps.connectionCheck))
managementpb.RegisterRDSServer(gRPCServer, management.NewRDSService(deps.db, deps.agentsStateUpdater, deps.connectionCheck, deps.serviceInfoBroker))
azurev1beta1.RegisterAzureDatabaseServer(gRPCServer, management.NewAzureDatabaseService(deps.db, deps.agentsRegistry, deps.agentsStateUpdater, deps.connectionCheck))
managementpb.RegisterHAProxyServer(gRPCServer, management.NewHAProxyService(deps.db, deps.vmdb, deps.agentsStateUpdater, deps.connectionCheck))
managementpb.RegisterExternalServer(gRPCServer, management.NewExternalService(deps.db, deps.vmdb, deps.agentsStateUpdater, deps.connectionCheck))
Expand Down
2 changes: 1 addition & 1 deletion managed/services/agents/service_info_broker.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ func (c *ServiceInfoBroker) GetInfoFromService(ctx context.Context, q *reform.Qu

sInfo, ok := resp.(*agentpb.ServiceInfoResponse)
if !ok {
return errors.New("failed to cast response to *agentpb.ServiceInfoResponse")
return status.Error(codes.Internal, "failed to cast response to *agentpb.ServiceInfoResponse")
}

msg := sInfo.Error
Expand Down
1 change: 1 addition & 0 deletions managed/services/management/deps.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import (
//go:generate ../../../bin/mockery --name=grafanaClient --case=snake --inpackage --testonly
//go:generate ../../../bin/mockery --name=jobsService --case=snake --inpackage --testonly
//go:generate ../../../bin/mockery --name=connectionChecker --case=snake --inpackage --testonly
//go:generate ../../../bin/mockery --name=serviceInfoBroker --case=snake --inpackage --testonly
//go:generate ../../../bin/mockery --name=versionCache --case=snake --inpackage --testonly
//go:generate ../../../bin/mockery --name=victoriaMetricsClient --case=snake --inpackage --testonly

Expand Down
46 changes: 46 additions & 0 deletions managed/services/management/mock_service_info_broker_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 10 additions & 2 deletions managed/services/management/rds.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,18 @@ type RDSService struct {
db *reform.DB
state agentsStateUpdater
cc connectionChecker
sib serviceInfoBroker

managementpb.UnimplementedRDSServer
}

// NewRDSService creates new instance discovery service.
func NewRDSService(db *reform.DB, state agentsStateUpdater, cc connectionChecker) *RDSService {
func NewRDSService(db *reform.DB, state agentsStateUpdater, cc connectionChecker, sib serviceInfoBroker) *RDSService {
return &RDSService{
db: db,
state: state,
cc: cc,
sib: sib,
}
}

Expand Down Expand Up @@ -349,7 +351,10 @@ func (s *RDSService) AddRDS(ctx context.Context, req *managementpb.AddRDSRequest
if err = s.cc.CheckConnectionToService(ctx, tx.Querier, service, mysqldExporter); err != nil {
return err
}
// CheckConnectionToService updates the table count in row so, let's also update the response
if err = s.sib.GetInfoFromService(ctx, tx.Querier, service, mysqldExporter); err != nil {
return err
}
// GetInfoFromService gets additional info in row, let's also update the response
res.TableCount = *mysqldExporter.TableCount
}

Expand Down Expand Up @@ -426,6 +431,9 @@ func (s *RDSService) AddRDS(ctx context.Context, req *managementpb.AddRDSRequest
if err = s.cc.CheckConnectionToService(ctx, tx.Querier, service, postgresExporter); err != nil {
return err
}
if err = s.sib.GetInfoFromService(ctx, tx.Querier, service, postgresExporter); err != nil {
return err
}
}

// add MySQL PerfSchema QAN Agent
Expand Down
4 changes: 3 additions & 1 deletion managed/services/management/rds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,15 @@ func TestRDSService(t *testing.T) {

cc := &mockConnectionChecker{}
cc.Test(t)
sib := &mockServiceInfoBroker{}
sib.Test(t)
state := &mockAgentsStateUpdater{}
state.Test(t)
defer func() {
cc.AssertExpectations(t)
state.AssertExpectations(t)
}()
s := NewRDSService(db, state, cc)
s := NewRDSService(db, state, cc, sib)

t.Run("DiscoverRDS", func(t *testing.T) {
t.Run("ListRegions", func(t *testing.T) {
Expand Down

0 comments on commit d842adc

Please sign in to comment.