Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PMM-8019 Support partial updates of settings and other entities #2705

Merged
merged 24 commits into from
Dec 27, 2023
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
518b682
PMM-8019 Get rid of enable/disable flags in settings
artemgavrilov Dec 18, 2023
602448c
PMM-8019 Fixes
artemgavrilov Dec 18, 2023
841eb7a
Merge remote-tracking branch 'origin/v3-api-breaking-changes' into PM…
artemgavrilov Dec 18, 2023
3ce9f8b
PMM-8019 Fix
artemgavrilov Dec 18, 2023
4234ac2
PMM-8019 Cleanup
artemgavrilov Dec 18, 2023
802bd1f
PMM-8019 Fix tests
artemgavrilov Dec 18, 2023
14ea1c1
PMM-8019 Fixes
artemgavrilov Dec 18, 2023
501dad5
Merge remote-tracking branch 'origin/v3-api-breaking-changes' into PM…
artemgavrilov Dec 19, 2023
24d8a4b
PMM-8019 Fix migrations order
artemgavrilov Dec 19, 2023
90aa7af
PMM-8019 Fix DB migrations
artemgavrilov Dec 19, 2023
5979646
PMM-8019 Fix tests
artemgavrilov Dec 20, 2023
da584df
PMM-8019 Update docs
artemgavrilov Dec 20, 2023
f9f4cb4
PMM-8019 Fix
artemgavrilov Dec 21, 2023
3db6aa0
PMM-8019 Make check enabling toogle optional
artemgavrilov Dec 21, 2023
85a8382
PMM-8019 Make role update params optional
artemgavrilov Dec 21, 2023
543abbf
Merge remote-tracking branch 'origin/v3-api-breaking-changes' into PM…
artemgavrilov Dec 25, 2023
ea305e6
PMM-8019 Fix API tests
artemgavrilov Dec 26, 2023
01b45c9
PMM-8019 Use optional fields for tour flags
artemgavrilov Dec 26, 2023
028a8bb
PMM-8019 Use optionals instead of wrappers in API where it's possible
artemgavrilov Dec 26, 2023
5192034
PMM-8019 Comments
artemgavrilov Dec 26, 2023
ff8cc4f
PMM-8019 Fix tests
artemgavrilov Dec 26, 2023
5cce687
Merge remote-tracking branch 'origin/v3-api-breaking-changes' into PM…
artemgavrilov Dec 26, 2023
87cb62e
PMM-8019 Fix linters
artemgavrilov Dec 26, 2023
ca6219a
PMM-8019 Fix
artemgavrilov Dec 26, 2023
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
3 changes: 1 addition & 2 deletions api-tests/management/alerting/alerting_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ import (
)

// Note: Even though the Alerting service checks for alerting enabled or disabled before returning results
// we don't enable or disable Alerting explicit in our tests since it is enabled by default through
// DISABLE_ALERTING env var.
// we don't enable or disable Alerting explicit in our tests since it is enabled by default.
func TestRulesAPI(t *testing.T) {
t.Parallel()
client := alertingClient.Default.AlertingService
Expand Down
8 changes: 4 additions & 4 deletions api-tests/management/backup/backups_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ func TestScheduleBackup(t *testing.T) {

body := backups.ChangeScheduledBackupBody{
ScheduledBackupID: backupRes.Payload.ScheduledBackupID,
Enabled: true,
CronExpression: "0 2 2 2 2",
Name: "test2",
Description: "test2",
Enabled: pointer.ToBool(true),
CronExpression: pointer.ToString("0 2 2 2 2"),
Name: pointer.ToString("test2"),
Description: pointer.ToString("test2"),
}
changeRes, err := client.ChangeScheduledBackup(&backups.ChangeScheduledBackupParams{
Body: body,
Expand Down
10 changes: 4 additions & 6 deletions api-tests/server/advisors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,8 @@ func TestChangeSecurityChecks(t *testing.T) {
Body: security_checks.ChangeSecurityChecksBody{
Params: []*security_checks.ChangeSecurityChecksParamsBodyParamsItems0{
{
Name: check.Name,
Disable: !check.Disabled,
Enable: check.Disabled,
Name: check.Name,
Enable: pointer.ToBool(!check.Enabled),
},
},
},
Expand All @@ -156,7 +155,7 @@ func TestChangeSecurityChecks(t *testing.T) {

for _, c := range resp.Payload.Checks {
if c.Name == check.Name {
assert.Equal(t, !check.Disabled, c.Disabled)
assert.NotEqual(t, check.Enabled, c.Enabled)
break
}
}
Expand Down Expand Up @@ -248,8 +247,7 @@ func toggleAdvisorChecks(t *testing.T, enable bool) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server_service.ChangeSettingsParams{
Body: server_service.ChangeSettingsBody{
EnableStt: enable,
DisableStt: !enable,
EnableStt: pointer.ToBool(enable),
},
Context: pmmapitests.Context,
})
Expand Down
10 changes: 6 additions & 4 deletions api-tests/server/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ func restoreSettingsDefaults(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableTelemetry: true,
EnableAlerting: true,
EnableStt: pointer.ToBool(true),
EnableTelemetry: pointer.ToBool(true),
EnableAlerting: pointer.ToBool(true),
MetricsResolutions: &server.ChangeSettingsParamsBodyMetricsResolutions{
Hr: "5s",
Mr: "10s",
Expand All @@ -49,7 +49,9 @@ func restoreSettingsDefaults(t *testing.T) {
RareInterval: "280800s",
},
DataRetention: "2592000s",
AWSPartitions: []string{"aws"},
AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{
Values: []string{"aws"},
},
},
Context: pmmapitests.Context,
})
Expand Down
3 changes: 2 additions & 1 deletion api-tests/server/platform_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"os"
"testing"

"github.com/AlekSi/pointer"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
Expand Down Expand Up @@ -56,7 +57,7 @@ func TestPlatform(t *testing.T) {
// Set the PMM address to localhost.
res, err := serverClient.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
PMMPublicAddress: "localhost",
PMMPublicAddress: pointer.ToString("localhost"),
},
Context: pmmapitests.Context,
})
Expand Down
110 changes: 33 additions & 77 deletions api-tests/server/settings_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"net/url"
"testing"

"github.com/AlekSi/pointer"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
Expand Down Expand Up @@ -53,7 +54,7 @@ func TestSettings(t *testing.T) {
assert.Equal(t, expectedSTTCheckIntervals, res.Payload.Settings.SttCheckIntervals)
assert.Equal(t, "2592000s", res.Payload.Settings.DataRetention)
assert.Equal(t, []string{"aws"}, res.Payload.Settings.AWSPartitions)
assert.False(t, res.Payload.Settings.UpdatesDisabled)
assert.True(t, res.Payload.Settings.UpdatesEnabled)
assert.True(t, res.Payload.Settings.AlertingEnabled)

t.Run("ChangeSettings", func(t *testing.T) {
Expand All @@ -64,44 +65,29 @@ func TestSettings(t *testing.T) {
defer restoreSettingsDefaults(t)
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableUpdates: true,
EnableUpdates: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
require.NoError(t, err)
assert.True(t, res.Payload.Settings.UpdatesDisabled)
assert.False(t, res.Payload.Settings.UpdatesEnabled)

resg, err := serverClient.Default.ServerService.GetSettings(nil)
require.NoError(t, err)
assert.True(t, resg.Payload.Settings.UpdatesDisabled)
assert.False(t, resg.Payload.Settings.UpdatesEnabled)

res, err = serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableUpdates: true,
EnableUpdates: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
require.NoError(t, err)
assert.False(t, res.Payload.Settings.UpdatesDisabled)
assert.True(t, res.Payload.Settings.UpdatesEnabled)

resg, err = serverClient.Default.ServerService.GetSettings(nil)
require.NoError(t, err)
assert.False(t, resg.Payload.Settings.UpdatesDisabled)
})

t.Run("InvalidBothEnableAndDisableUpdates", func(t *testing.T) {
defer restoreSettingsDefaults(t)

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableUpdates: true,
DisableUpdates: true,
},
Context: pmmapitests.Context,
})
pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument,
`Invalid argument: both enable_updates and disable_updates are present.`)
assert.Empty(t, res)
assert.True(t, resg.Payload.Settings.UpdatesEnabled)
})
})

Expand All @@ -110,36 +96,21 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableAlerting: true,
EnableAlerting: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
require.NoError(t, err)
assert.False(t, res.Payload.Settings.AlertingEnabled)
})

t.Run("InvalidBothEnableAndDisableAdvisors", func(t *testing.T) {
defer restoreSettingsDefaults(t)

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
DisableStt: true,
},
Context: pmmapitests.Context,
})
pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument,
`Invalid argument: both enable_stt and disable_stt are present.`)
assert.Empty(t, res)
})

t.Run("EnableAdviorsAndEnableTelemetry", func(t *testing.T) {
defer restoreSettingsDefaults(t)

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableTelemetry: true,
EnableStt: pointer.ToBool(true),
EnableTelemetry: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -158,8 +129,8 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
DisableTelemetry: true,
EnableStt: pointer.ToBool(true),
EnableTelemetry: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
Expand All @@ -173,8 +144,8 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableStt: true,
EnableTelemetry: true,
EnableStt: pointer.ToBool(false),
EnableTelemetry: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -193,8 +164,8 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableStt: true,
DisableTelemetry: true,
EnableStt: pointer.ToBool(false),
EnableTelemetry: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
Expand All @@ -214,7 +185,7 @@ func TestSettings(t *testing.T) {
// Ensure Telemetry is enabled
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableTelemetry: true,
EnableTelemetry: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -223,7 +194,7 @@ func TestSettings(t *testing.T) {

res, err = serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableStt: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -241,7 +212,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableStt: true,
EnableStt: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
Expand All @@ -259,7 +230,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableStt: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -275,7 +246,7 @@ func TestSettings(t *testing.T) {
t.Run("EnableAdvisorsWhileItIsEnabled", func(t *testing.T) {
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableStt: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -291,7 +262,7 @@ func TestSettings(t *testing.T) {
t.Run("DisableTelemetryWhileAdvisorsEnabled", func(t *testing.T) {
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableTelemetry: true,
EnableTelemetry: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
Expand All @@ -306,7 +277,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableTelemetry: true,
EnableTelemetry: pointer.ToBool(false),
},
Context: pmmapitests.Context,
})
Expand All @@ -324,7 +295,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableStt: true,
EnableStt: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -343,7 +314,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableTelemetry: true,
EnableTelemetry: pointer.ToBool(true),
},
Context: pmmapitests.Context,
})
Expand All @@ -357,27 +328,12 @@ func TestSettings(t *testing.T) {
})
})

t.Run("InvalidBothEnableAndDisableTelemetry", func(t *testing.T) {
defer restoreSettingsDefaults(t)

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
EnableTelemetry: true,
DisableTelemetry: true,
},
Context: pmmapitests.Context,
})
pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument,
`Invalid argument: both enable_telemetry and disable_telemetry are present.`)
assert.Empty(t, res)
})

t.Run("InvalidPartition", func(t *testing.T) {
defer restoreSettingsDefaults(t)

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
AWSPartitions: []string{"aws-123"},
AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws-123"}},
},
Context: pmmapitests.Context,
})
Expand All @@ -392,7 +348,7 @@ func TestSettings(t *testing.T) {
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
// We're expecting that 10 elements will be more than number of default partitions, which currently equals 6.
AWSPartitions: []string{"aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws"},
AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws"}},
},
Context: pmmapitests.Context,
})
Expand Down Expand Up @@ -544,7 +500,7 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
SSHKey: "some-invalid-ssh-key",
SSHKey: pointer.ToString("some-invalid-ssh-key"),
},
Context: pmmapitests.Context,
})
Expand All @@ -562,7 +518,7 @@ func TestSettings(t *testing.T) {
"weTHzBE+lpXHdR2se1 qsandbox"
res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
SSHKey: sshKey,
SSHKey: pointer.ToString(sshKey),
},
Context: pmmapitests.Context,
})
Expand All @@ -575,14 +531,14 @@ func TestSettings(t *testing.T) {

res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{
Body: server.ChangeSettingsBody{
DisableTelemetry: true,
EnableTelemetry: pointer.ToBool(false),
MetricsResolutions: &server.ChangeSettingsParamsBodyMetricsResolutions{
Hr: "2s",
Mr: "15s",
Lr: "120s", // 2 minutes
},
DataRetention: "864000s", // 240 hours
AWSPartitions: []string{"aws-cn", "aws", "aws-cn"}, // duplicates are ok
DataRetention: "864000s", // 240 hours
AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws-cn", "aws", "aws-cn"}}, // duplicates are ok
},
Context: pmmapitests.Context,
})
Expand Down
Loading
Loading