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

PMM-5364 SSL support for Mongo. #528

Merged
merged 63 commits into from
Dec 29, 2020
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
24f864e
PMM-5364 Deps.
Nov 20, 2020
ea95dc8
PMM-5364 Add new fields to add request.
Nov 20, 2020
47a6682
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 23, 2020
a662d69
PMM-5364 Deps.
Nov 23, 2020
fd4f9d8
PMM-5364 Deps.
Nov 23, 2020
75957a9
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 24, 2020
efde7c7
PMM-5364 Add new fields into DB.
Nov 24, 2020
a56f79e
PMM-5364 Reform.
Nov 24, 2020
69a3b8b
PMM-5364 Another fields changes.
Nov 24, 2020
9193e30
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 25, 2020
9496688
PMM-5364 Deps.
Nov 25, 2020
f972d65
PMM-5364 Deps.
Nov 25, 2020
253409a
PMM-5364 Fields.
Nov 25, 2020
a4a17b4
PMM-5364 Deps.
Nov 26, 2020
4d66bd5
PMM-7026 One more revert.
Nov 26, 2020
af7afe2
Merge branch 'PMM-7026-revert-pt-mysql-summary' into PMM-5364-ssl-mongo
Nov 26, 2020
8d1b31f
PMM-7026 Deps.
Nov 26, 2020
f82e0c9
PMM-5364 Fix VM problem.
Nov 26, 2020
f6f9faa
PMM-5364 Changes fields into struct.
Nov 26, 2020
41286cf
PMM-5364 Fix.
Nov 26, 2020
664dcbc
PMM-5364 Changes.
Nov 26, 2020
34b9394
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 27, 2020
aa8c5b6
PMM-5364 Deps.
Nov 27, 2020
b599a6b
PMM-5364 Gen.
Nov 27, 2020
5011bfa
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 27, 2020
f327f9c
PMM-5364 Deps.
Nov 27, 2020
d3a1381
PMM-5364 Add TLS keys to MongoDBExplainAction request.
Nov 27, 2020
3fb47bd
PMM-5364 Remove old code.
Nov 30, 2020
ab5cb72
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 30, 2020
bc7dcd3
PMM-5364 Changes.
Nov 30, 2020
eb46757
PMM-5364 Fix new db fields VM problem.
Nov 30, 2020
751ee2f
PMM-5364 Naming changes.
Nov 30, 2020
e348d0d
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 30, 2020
c107db2
PMM-5364 Changes.
Nov 30, 2020
58b0578
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 30, 2020
101f89b
PMM-5364 Deps.
Nov 30, 2020
31a8be3
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Nov 30, 2020
60d9809
PMM-5364 Deps.
Nov 30, 2020
306c65f
PMM-5364 Fix build.
Dec 1, 2020
1652ff5
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
Dec 1, 2020
7a0ced3
PMM-5364 Fix test.
Dec 1, 2020
c97283e
PMM-5367 Changes.
Dec 1, 2020
0cc6c43
PMM-5364 Deps.
Dec 2, 2020
f489b8b
PMM-5364 Set default prefix to same.
Dec 2, 2020
4ad197d
PMM-5364 Places for paste creating certs.
Dec 2, 2020
37a9d52
PMM-5364 Fix test.
Dec 2, 2020
ded9715
PMM-5364 Fix test.
Dec 2, 2020
24347fa
Merge remote-tracking branch 'origin/PMM-2.0' into PMM-5364-ssl-mongo
BupycHuk Dec 17, 2020
8ea457f
PMM-5364 Make MongoDBOptions struct.
BupycHuk Dec 20, 2020
98198b0
PMM-5364 Fix tests.
BupycHuk Dec 20, 2020
941465a
PMM-5364 Use text files parameters as .TextFiles. .
BupycHuk Dec 20, 2020
f2e0552
PMM-5364 Use text files parameters as .TextFiles .
BupycHuk Dec 23, 2020
28b5209
PMM-5364 Refactoring .
BupycHuk Dec 24, 2020
73d3f0b
Merge remote-tracking branch 'origin/PMM-2.0' into PMM-5364-ssl-mongo
BupycHuk Dec 24, 2020
c724bbe
Merge remote-tracking branch 'origin/PMM-2.0' into PMM-5364-ssl-mongo
BupycHuk Dec 24, 2020
35bc3c4
PMM-5364 Fix connection checker.
BupycHuk Dec 24, 2020
34277f3
PMM-5364 Fix tests.
BupycHuk Dec 25, 2020
7362ed0
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
AlekSi Dec 26, 2020
d7e037b
Merge branch 'PMM-2.0' into PMM-5364-ssl-mongo
AlekSi Dec 26, 2020
3298308
PMM-5364 Fix QAN MongoDB Profiler.
BupycHuk Dec 28, 2020
fe9163b
PMM-5364 Fix Explain Action for MongoDB SSL.
BupycHuk Dec 28, 2020
5c66b4b
Merge remote-tracking branch 'origin/PMM-2.0' into PMM-5364-ssl-mongo
BupycHuk Dec 29, 2020
db45059
PMM-5364 Fix merge conflicts.
BupycHuk Dec 29, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Gopkg.lock

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

2 changes: 1 addition & 1 deletion Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ required = [

[[constraint]]
name = "github.com/percona/pmm"
branch = "PMM-2.0"
branch = "PMM-5364-ssl-mongo"

[[constraint]]
name = "github.com/percona-platform/saas"
Expand Down
6 changes: 6 additions & 0 deletions models/agent_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,9 @@ type CreateAgentParams struct {
CustomLabels map[string]string
TLS bool
TLSSkipVerify bool
TLSCertificateKey string
TLSCertificateKeyFilePassword string
TLSCa string
TableCountTablestatsGroupLimit int32
QueryExamplesDisabled bool
MaxQueryLogSize int64
Expand Down Expand Up @@ -484,6 +487,9 @@ func CreateAgent(q *reform.Querier, agentType AgentType, params *CreateAgentPara
Password: pointer.ToStringOrNil(params.Password),
TLS: params.TLS,
TLSSkipVerify: params.TLSSkipVerify,
TLSCertificateKey: params.TLSCertificateKey,
TLSCertificateKeyFilePassword: params.TLSCertificateKeyFilePassword,
TLSCaKey: params.TLSCa,
TableCountTablestatsGroupLimit: params.TableCountTablestatsGroupLimit,
QueryExamplesDisabled: params.QueryExamplesDisabled,
MaxQueryLogSize: params.MaxQueryLogSize,
Expand Down
11 changes: 7 additions & 4 deletions models/agent_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,13 @@ type Agent struct {
ListenPort *uint16 `reform:"listen_port"`
Version *string `reform:"version"`

Username *string `reform:"username"`
Password *string `reform:"password"`
TLS bool `reform:"tls"`
TLSSkipVerify bool `reform:"tls_skip_verify"`
Username *string `reform:"username"`
Password *string `reform:"password"`
TLS bool `reform:"tls"`
TLSSkipVerify bool `reform:"tls_skip_verify"`
TLSCertificateKey string `reform:"tls_certificate_key"`
TLSCertificateKeyFilePassword string `reform:"tls_certificate_key_file_password"`
TLSCaKey string `reform:"tls_ca_key"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JiriCtvrtka @BupycHuk I think it might be a time for us to start adding those new properties into a single JSON column

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, it might be good reason for that and probably we will need one more task to move other additional fields to single json column.
Other question is should we use the same column for all fields or split them by groups? Using separate columns for each service type will be easier to unmarshal and keep only required field. what do you think?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

separate columns for each service type

Sounds good


AWSAccessKey *string `reform:"aws_access_key"`
AWSSecretKey *string `reform:"aws_secret_key"`
Expand Down
37 changes: 23 additions & 14 deletions models/agent_model_reform.go

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

6 changes: 6 additions & 0 deletions models/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,12 @@ var databaseSchema = [][]string{
ADD CONSTRAINT runs_on_node_id_only_for_pmm_agent
CHECK (((runs_on_node_id IS NULL) <> (agent_type='` + string(PMMAgentType) + `')) OR (agent_type='` + string(ExternalExporterType) + `'))`,
},
22: {
`ALTER TABLE agents
ADD COLUMN tls_certificate_key VARCHAR,
ADD COLUMN tls_certificate_key_file_password VARCHAR,
ADD COLUMN tls_ca_key VARCHAR`,
},
}

// ^^^ Avoid default values in schema definition. ^^^
Expand Down
19 changes: 11 additions & 8 deletions services/inventory/agents.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,14 +274,17 @@ func (as *AgentsService) AddMongoDBExporter(ctx context.Context, req *inventoryp
var res *inventorypb.MongoDBExporter
e := as.db.InTransaction(func(tx *reform.TX) error {
params := &models.CreateAgentParams{
PMMAgentID: req.PmmAgentId,
ServiceID: req.ServiceId,
Username: req.Username,
Password: req.Password,
CustomLabels: req.CustomLabels,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
PushMetrics: req.PushMetrics,
PMMAgentID: req.PmmAgentId,
ServiceID: req.ServiceId,
Username: req.Username,
Password: req.Password,
CustomLabels: req.CustomLabels,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
PushMetrics: req.PushMetrics,
TLSCertificateKey: req.TlsCertificateKey,
TLSCertificateKeyFilePassword: req.TlsCertificateKeyFilePassword,
TLSCa: req.TlsCa,
}
row, err := models.CreateAgent(tx.Querier, models.MongoDBExporterType, params)
if err != nil {
Expand Down
33 changes: 20 additions & 13 deletions services/management/mongodb.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,16 @@ func (s *MongoDBService) Add(ctx context.Context, req *managementpb.AddMongoDBRe
res.Service = invService.(*inventorypb.MongoDBService)

row, err := models.CreateAgent(tx.Querier, models.MongoDBExporterType, &models.CreateAgentParams{
PMMAgentID: req.PmmAgentId,
ServiceID: service.ServiceID,
Username: req.Username,
Password: req.Password,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
PushMetrics: isPushMode(req.MetricsMode),
PMMAgentID: req.PmmAgentId,
ServiceID: service.ServiceID,
Username: req.Username,
Password: req.Password,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
TLSCertificateKey: req.TlsCertificateKey,
TLSCertificateKeyFilePassword: req.TlsCertificateKeyFilePassword,
TLSCa: req.TlsCa,
PushMetrics: isPushMode(req.MetricsMode),
})
if err != nil {
return err
Expand All @@ -97,12 +100,16 @@ func (s *MongoDBService) Add(ctx context.Context, req *managementpb.AddMongoDBRe

if req.QanMongodbProfiler {
row, err = models.CreateAgent(tx.Querier, models.QANMongoDBProfilerAgentType, &models.CreateAgentParams{
PMMAgentID: req.PmmAgentId,
ServiceID: service.ServiceID,
Username: req.Username,
Password: req.Password,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
PMMAgentID: req.PmmAgentId,
ServiceID: service.ServiceID,
Username: req.Username,
Password: req.Password,
TLS: req.Tls,
TLSSkipVerify: req.TlsSkipVerify,
TLSCertificateKey: req.TlsCertificateKey,
TLSCertificateKeyFilePassword: req.TlsCertificateKeyFilePassword,
TLSCa: req.TlsCa,

// TODO QueryExamplesDisabled https://jira.percona.com/browse/PMM-4650
})
if err != nil {
Expand Down
Loading