mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 13:37:30 +00:00
Activate deprecation warnings (#41449)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #40015 # Details Activates deprecation warnings for old API params and CLI args, updates tests that would generate warnings (except for tests explicitly designed to generate warnings). The expectation from here on is that Fleet UI usage should not generate any deprecation warnings in the server logs, nor should the output from `generate-gitops` generate any warnings when fed into `gitops`. # Checklist for submitter If some of the following don't apply, delete the relevant line. - [X] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. See [Changes files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files) for more information. ## Testing - [X] Added/updated automated tests - [ ] QA'd all new/changed functionality manually - [X] clicked around in an mdm-enabled instance, turned setup experience features on and off, saw no server warnings - [X] did `fleetctl generate-gitops` on mdm-enabled instance, saw no server or cli warnings - [X] did `fleetctl gitops` on mdm-enabled instance, saw no server or cli warnings
This commit is contained in:
parent
1a9891ddfe
commit
1eabb85a5a
15 changed files with 2705 additions and 1877 deletions
1
changes/40015-activate-deprecation-warnings
Normal file
1
changes/40015-activate-deprecation-warnings
Normal file
|
|
@ -0,0 +1 @@
|
|||
- Activated warnings for deprecated API parameters, API URLs, fleetctl commands and fleetctl command options.
|
||||
|
|
@ -294,7 +294,6 @@ func runServeCmd(cmd *cobra.Command, configManager configpkg.Manager, debug, dev
|
|||
//
|
||||
// For example:
|
||||
// platform_logging.DisableTopic("deprecated-api-keys")
|
||||
platform_logging.DisableTopic(platform_logging.DeprecatedFieldTopic)
|
||||
|
||||
// Apply log topic overrides from config. Enables run first, then
|
||||
// disables, so disable wins on conflict.
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import (
|
|||
|
||||
"github.com/fleetdm/fleet/v4/pkg/spec"
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/logging"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
|
|
@ -59,10 +58,6 @@ func applyCommand() *cli.Command {
|
|||
return nil
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
// Disable field deprecation warnings for now.
|
||||
// TODO - remove this in future release to unleash warnings.
|
||||
logging.DisableTopic(logging.DeprecatedFieldTopic)
|
||||
|
||||
// Apply log topic overrides from flags/env vars.
|
||||
applyLogTopicFlags(c)
|
||||
|
||||
|
|
|
|||
2605
cmd/fleetctl/fleetctl/apply_deprecated_test.go
Normal file
2605
cmd/fleetctl/fleetctl/apply_deprecated_test.go
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1574,11 +1574,11 @@ spec:
|
|||
windows_updates:
|
||||
deadline_days: 1
|
||||
grace_period_days: 0
|
||||
macos_settings:
|
||||
custom_settings:
|
||||
apple_settings:
|
||||
configuration_profiles:
|
||||
- %s
|
||||
macos_setup:
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
apple_setup_assistant: %s
|
||||
windows_enabled_and_configured: true
|
||||
`, mobileConfigPath, emptySetupAsst))
|
||||
|
||||
|
|
@ -1621,8 +1621,8 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
`, bootstrapURL))
|
||||
|
||||
// first apply with dry-run
|
||||
|
|
@ -1759,7 +1759,7 @@ spec:
|
|||
name: Team1
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
macos_bootstrap_package: %s
|
||||
`, bootstrapURL))
|
||||
|
||||
// first apply with dry-run
|
||||
|
|
@ -2357,26 +2357,26 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
apple_setup_assistant: %s
|
||||
`
|
||||
appConfigEnableReleaseSpec = appConfigSpec + `
|
||||
enable_release_device_manually: %s
|
||||
apple_enable_release_device_manually: %s
|
||||
`
|
||||
appConfigNoKeySpec = `
|
||||
apiVersion: v1
|
||||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
setup_experience:
|
||||
`
|
||||
appConfigSpecEnableEndUserAuth = `
|
||||
apiVersion: v1
|
||||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
setup_experience:
|
||||
enable_end_user_authentication: %s
|
||||
`
|
||||
team1Spec = `
|
||||
|
|
@ -2386,12 +2386,12 @@ spec:
|
|||
team:
|
||||
name: tm1
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
apple_setup_assistant: %s
|
||||
`
|
||||
team1EnableReleaseSpec = team1Spec + `
|
||||
enable_release_device_manually: %s
|
||||
apple_enable_release_device_manually: %s
|
||||
require_all_software_macos: %s
|
||||
`
|
||||
team1NoKeySpec = `
|
||||
|
|
@ -2401,7 +2401,7 @@ spec:
|
|||
team:
|
||||
name: tm1
|
||||
mdm:
|
||||
macos_setup:
|
||||
setup_experience:
|
||||
`
|
||||
team1And2Spec = `
|
||||
apiVersion: v1
|
||||
|
|
@ -2410,9 +2410,9 @@ spec:
|
|||
team:
|
||||
name: tm1
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
apple_setup_assistant: %s
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: fleet
|
||||
|
|
@ -2420,9 +2420,9 @@ spec:
|
|||
team:
|
||||
name: tm2
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
apple_setup_assistant: %s
|
||||
`
|
||||
team1SpecEnableEndUserAuth = `
|
||||
apiVersion: v1
|
||||
|
|
@ -2431,7 +2431,7 @@ spec:
|
|||
team:
|
||||
name: tm1
|
||||
mdm:
|
||||
macos_setup:
|
||||
setup_experience:
|
||||
enable_end_user_authentication: %s
|
||||
`
|
||||
)
|
||||
|
|
@ -2593,7 +2593,7 @@ spec:
|
|||
|
||||
// get, setup assistant still not set
|
||||
assert.YAMLEq(t, expectedEmptyAppCfg, RunAppForTest(t, []string{"get", "config", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedEmptyTm1, RunAppForTest(t, []string{"get", "teams", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedEmptyTm1, RunAppForTest(t, []string{"get", "fleets", "--yaml"}))
|
||||
|
||||
// apply appconfig for real, and enable release device
|
||||
name = writeTmpYml(t, fmt.Sprintf(appConfigEnableReleaseSpec, "", emptyMacosSetup, "true"))
|
||||
|
|
@ -2610,7 +2610,7 @@ spec:
|
|||
|
||||
// get, setup assistant is now set
|
||||
assert.YAMLEq(t, expectedAppCfgSetReleaseEnabled, RunAppForTest(t, []string{"get", "config", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedTm1And2Set, RunAppForTest(t, []string{"get", "teams", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedTm1And2Set, RunAppForTest(t, []string{"get", "fleets", "--yaml"}))
|
||||
|
||||
// clear with dry-run, appconfig
|
||||
name = writeTmpYml(t, fmt.Sprintf(appConfigSpec, "", ""))
|
||||
|
|
@ -2646,7 +2646,7 @@ spec:
|
|||
|
||||
// get, results unchanged
|
||||
assert.YAMLEq(t, expectedAppCfgSetReleaseEnabled, RunAppForTest(t, []string{"get", "config", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedTm1And2Set, RunAppForTest(t, []string{"get", "teams", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedTm1And2Set, RunAppForTest(t, []string{"get", "fleets", "--yaml"}))
|
||||
|
||||
// clear appconfig for real
|
||||
name = writeTmpYml(t, fmt.Sprintf(appConfigEnableReleaseSpec, "", "", "false"))
|
||||
|
|
@ -2666,7 +2666,7 @@ spec:
|
|||
|
||||
// get, results now empty
|
||||
assert.YAMLEq(t, expectedEmptyAppCfg, RunAppForTest(t, []string{"get", "config", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedEmptyTm1And2, RunAppForTest(t, []string{"get", "teams", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedEmptyTm1And2, RunAppForTest(t, []string{"get", "fleets", "--yaml"}))
|
||||
|
||||
// apply team 1 without the setup assistant key but enable device release
|
||||
name = writeTmpYml(t, fmt.Sprintf(team1EnableReleaseSpec, "", "", "true", "true"))
|
||||
|
|
@ -2678,7 +2678,7 @@ spec:
|
|||
assert.False(t, ds.DeleteMDMAppleSetupAssistantFuncInvoked)
|
||||
assert.True(t, ds.SaveTeamFuncInvoked)
|
||||
|
||||
assert.YAMLEq(t, expectedTm1SetReleaseAndRequireEnabled, RunAppForTest(t, []string{"get", "teams", "--yaml"}))
|
||||
assert.YAMLEq(t, expectedTm1SetReleaseAndRequireEnabled, RunAppForTest(t, []string{"get", "fleets", "--yaml"}))
|
||||
|
||||
// apply appconfig with invalid URL key
|
||||
name = writeTmpYml(t, fmt.Sprintf(appConfigSpec, "", invalidURLMacosSetup))
|
||||
|
|
@ -2781,9 +2781,9 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
manual_agent_install: true
|
||||
setup_experience:
|
||||
macos_bootstrap_package: %s
|
||||
macos_manual_agent_install: true
|
||||
`
|
||||
|
||||
// create the app config yaml with server url for bootstrap package
|
||||
|
|
@ -3964,7 +3964,7 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption:
|
||||
`,
|
||||
wantOutput: `[+] applied fleet config`,
|
||||
|
|
@ -3976,7 +3976,7 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: 123
|
||||
`,
|
||||
wantErr: `400 Bad request: failed to decode app config`,
|
||||
|
|
@ -3988,7 +3988,7 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: true
|
||||
`,
|
||||
|
||||
|
|
@ -4002,7 +4002,7 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: false
|
||||
`,
|
||||
wantOutput: `[+] applied fleet config`,
|
||||
|
|
@ -4016,7 +4016,7 @@ spec:
|
|||
team:
|
||||
name: team1
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption:
|
||||
`,
|
||||
wantErr: `400 Bad Request: invalid value type at 'macos_settings.enable_disk_encryption': expected bool but got <nil>`,
|
||||
|
|
@ -4030,7 +4030,7 @@ spec:
|
|||
team:
|
||||
name: team1
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: 123
|
||||
`,
|
||||
wantErr: `400 Bad Request: invalid value type at 'macos_settings.enable_disk_encryption': expected bool but got float64`,
|
||||
|
|
@ -4044,7 +4044,7 @@ spec:
|
|||
team:
|
||||
name: team1
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: true
|
||||
`,
|
||||
wantErr: `Couldn't update apple_settings because MDM features aren't turned on in Fleet.`,
|
||||
|
|
@ -4058,7 +4058,7 @@ spec:
|
|||
team:
|
||||
name: team1
|
||||
mdm:
|
||||
macos_settings:
|
||||
apple_settings:
|
||||
enable_disk_encryption: false
|
||||
`,
|
||||
wantOutput: `[+] applied 1 fleet`,
|
||||
|
|
@ -4072,8 +4072,8 @@ spec:
|
|||
team:
|
||||
name: team1
|
||||
mdm:
|
||||
macos_setup:
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
apple_setup_assistant: %s
|
||||
`, macSetupFile),
|
||||
wantErr: `macOS MDM isn't turned on.`,
|
||||
},
|
||||
|
|
@ -4084,8 +4084,8 @@ apiVersion: v1
|
|||
kind: config
|
||||
spec:
|
||||
mdm:
|
||||
macos_setup:
|
||||
macos_setup_assistant: %s
|
||||
setup_experience:
|
||||
apple_setup_assistant: %s
|
||||
`, macSetupFile),
|
||||
wantErr: `macOS MDM isn't turned on.`,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import (
|
|||
"github.com/fleetdm/fleet/v4/pkg/rawjson"
|
||||
"github.com/fleetdm/fleet/v4/pkg/secure"
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/logging"
|
||||
"github.com/fleetdm/fleet/v4/server/service"
|
||||
"github.com/ghodss/yaml"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
|
|
@ -304,10 +303,6 @@ func getCommand() *cli.Command {
|
|||
return &cli.Command{
|
||||
Name: "get",
|
||||
Usage: "Get/list resources",
|
||||
Before: func(c *cli.Context) error {
|
||||
logging.DisableTopic(logging.DeprecatedFieldTopic)
|
||||
return nil
|
||||
},
|
||||
Subcommands: withLogTopicFlags([]*cli.Command{
|
||||
getReportsCommand(),
|
||||
getPacksCommand(),
|
||||
|
|
|
|||
|
|
@ -90,10 +90,6 @@ func gitopsCommand() *cli.Command {
|
|||
disableLogTopicsFlag(),
|
||||
},
|
||||
Action: func(c *cli.Context) error {
|
||||
// Disable field deprecation warnings for now.
|
||||
// TODO - remove this in future release to unleash warnings.
|
||||
logging.DisableTopic(logging.DeprecatedFieldTopic)
|
||||
|
||||
// Apply log topic overrides from CLI flags.
|
||||
applyLogTopicFlags(c)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import (
|
|||
|
||||
"github.com/briandowns/spinner"
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/logging"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
|
|
@ -27,7 +26,6 @@ func queryCommand() *cli.Command {
|
|||
Usage: "Run a live report",
|
||||
UsageText: `fleetctl report [options]`,
|
||||
Before: func(c *cli.Context) error {
|
||||
logging.DisableTopic(logging.DeprecatedFieldTopic)
|
||||
applyLogTopicFlags(c)
|
||||
logDeprecatedCommandName(c, []string{"query"}, "report")
|
||||
logDeprecatedFlagName(c, "query-name", "report-name")
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -167,12 +167,12 @@ func (s *enterpriseIntegrationGitopsTestSuite) TearDownTest() {
|
|||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
// Delete policies in "No team" (the others are deleted in ts.DS.DeleteTeam above).
|
||||
// Delete policies in "Unassigned" (the others are deleted in ts.DS.DeleteTeam above).
|
||||
mysql.ExecAdhocSQL(t, s.DS, func(q sqlx.ExtContext) error {
|
||||
_, err := q.ExecContext(ctx, `DELETE FROM policies WHERE team_id = 0;`)
|
||||
return err
|
||||
})
|
||||
// Clean software installers in "No team" (the others are deleted in ts.DS.DeleteTeam above).
|
||||
// Clean software installers in "Unassigned" (the others are deleted in ts.DS.DeleteTeam above).
|
||||
mysql.ExecAdhocSQL(t, s.DS, func(q sqlx.ExtContext) error {
|
||||
_, err := q.ExecContext(ctx, `DELETE FROM software_installers WHERE global_or_team_id = 0;`)
|
||||
return err
|
||||
|
|
@ -338,7 +338,7 @@ settings:
|
|||
s.assertDryRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", globalFile, "--dry-run"}), true)
|
||||
for _, fileName := range teamFileNames {
|
||||
// When running no-teams, global config must also be provided ...
|
||||
if strings.Contains(fileName, "no-team.yml") {
|
||||
if strings.Contains(fileName, "unassigned.yml") {
|
||||
s.assertDryRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", fileName, "-f", globalFile, "--dry-run"}), true)
|
||||
} else {
|
||||
s.assertDryRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", fileName, "--dry-run"}), true)
|
||||
|
|
@ -379,7 +379,7 @@ settings:
|
|||
s.assertRealRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", globalFile}), true)
|
||||
for _, fileName := range teamFileNames {
|
||||
// When running no-teams, global config must also be provided ...
|
||||
if strings.Contains(fileName, "no-team.yml") {
|
||||
if strings.Contains(fileName, "unassigned.yml") {
|
||||
s.assertRealRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", fileName, "-f", globalFile}), true)
|
||||
} else {
|
||||
s.assertRealRunOutputWithDeprecation(t, fleetctl.RunAppForTest(t, []string{"gitops", "--config", fleetctlConfig.Name(), "-f", fileName}), true)
|
||||
|
|
@ -1061,7 +1061,7 @@ policies:
|
|||
reports:
|
||||
`
|
||||
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
software:
|
||||
|
|
@ -1112,7 +1112,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1262,7 +1262,7 @@ reports:
|
|||
|
||||
// no team file setup
|
||||
const (
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
policies:
|
||||
controls:
|
||||
macos_setup:
|
||||
|
|
@ -1277,7 +1277,7 @@ software:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1354,7 +1354,7 @@ reports:
|
|||
|
||||
// Create a no-team.yml file with webhook settings
|
||||
const noTeamTemplateWithWebhook = `
|
||||
name: No team
|
||||
name: Unassigned
|
||||
policies:
|
||||
- name: No Team Test Policy
|
||||
query: SELECT 1 FROM osquery_info WHERE version = '0.0.0';
|
||||
|
|
@ -1380,7 +1380,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1411,7 +1411,7 @@ settings:
|
|||
|
||||
// Test updating webhook settings
|
||||
const noTeamTemplateUpdatedWebhook = `
|
||||
name: No team
|
||||
name: Unassigned
|
||||
policies:
|
||||
- name: No Team Test Policy
|
||||
query: SELECT 1 FROM osquery_info WHERE version = '0.0.0';
|
||||
|
|
@ -1436,7 +1436,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFileUpdated.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePathUpdated := filepath.Join(filepath.Dir(noTeamFileUpdated.Name()), "no-team.yml")
|
||||
noTeamFilePathUpdated := filepath.Join(filepath.Dir(noTeamFileUpdated.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFileUpdated.Name(), noTeamFilePathUpdated)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1458,7 +1458,7 @@ settings:
|
|||
|
||||
// Test removing webhook settings entirely
|
||||
const noTeamTemplateNoWebhook = `
|
||||
name: No team
|
||||
name: Unassigned
|
||||
policies:
|
||||
- name: No Team Test Policy
|
||||
query: SELECT 1 FROM osquery_info WHERE version = '0.0.0';
|
||||
|
|
@ -1474,7 +1474,7 @@ software:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFileNoWebhook.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePathNoWebhook := filepath.Join(filepath.Dir(noTeamFileNoWebhook.Name()), "no-team.yml")
|
||||
noTeamFilePathNoWebhook := filepath.Join(filepath.Dir(noTeamFileNoWebhook.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFileNoWebhook.Name(), noTeamFilePathNoWebhook)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1503,7 +1503,7 @@ software:
|
|||
|
||||
// Now apply config with team_settings but no webhook_settings
|
||||
const noTeamTemplateTeamSettingsNoWebhook = `
|
||||
name: No team
|
||||
name: Unassigned
|
||||
policies:
|
||||
- name: No Team Test Policy
|
||||
query: SELECT 1 FROM osquery_info WHERE version = '0.0.0';
|
||||
|
|
@ -1519,7 +1519,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFileTeamNoWebhook.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePathTeamNoWebhook := filepath.Join(filepath.Dir(noTeamFileTeamNoWebhook.Name()), "no-team.yml")
|
||||
noTeamFilePathTeamNoWebhook := filepath.Join(filepath.Dir(noTeamFileTeamNoWebhook.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFileTeamNoWebhook.Name(), noTeamFilePathTeamNoWebhook)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1548,7 +1548,7 @@ settings:
|
|||
|
||||
// Now apply config with webhook_settings but no failing_policies_webhook
|
||||
const noTeamTemplateWebhookNoFailing = `
|
||||
name: No team
|
||||
name: Unassigned
|
||||
policies:
|
||||
- name: No Team Test Policy
|
||||
query: SELECT 1 FROM osquery_info WHERE version = '0.0.0';
|
||||
|
|
@ -1565,7 +1565,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFileWebhookNoFailing.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePathWebhookNoFailing := filepath.Join(filepath.Dir(noTeamFileWebhookNoFailing.Name()), "no-team.yml")
|
||||
noTeamFilePathWebhookNoFailing := filepath.Join(filepath.Dir(noTeamFileWebhookNoFailing.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFileWebhookNoFailing.Name(), noTeamFilePathWebhookNoFailing)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1714,7 +1714,7 @@ policies:
|
|||
reports:
|
||||
`
|
||||
|
||||
noTeamConfig = `name: No team
|
||||
noTeamConfig = `name: Unassigned
|
||||
controls:
|
||||
macos_setup:
|
||||
bootstrap_package: %s
|
||||
|
|
@ -1751,7 +1751,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -1899,7 +1899,7 @@ func (s *enterpriseIntegrationGitopsTestSuite) TestMacOSSetupScriptWithFleetSecr
|
|||
require.NoError(t, err)
|
||||
|
||||
// Create a no-team file with the script
|
||||
const noTeamTemplate = `name: No team
|
||||
const noTeamTemplate = `name: Unassigned
|
||||
policies:
|
||||
controls:
|
||||
macos_setup:
|
||||
|
|
@ -1912,7 +1912,7 @@ software:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -2426,7 +2426,7 @@ labels:
|
|||
query: SELECT 1
|
||||
`
|
||||
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
software:
|
||||
|
|
@ -2464,7 +2464,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -2635,7 +2635,7 @@ policies:
|
|||
reports:
|
||||
`
|
||||
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
software:
|
||||
|
|
@ -2672,7 +2672,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -2753,7 +2753,7 @@ policies:
|
|||
reports:
|
||||
`
|
||||
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
software:
|
||||
|
|
@ -2808,7 +2808,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -3635,7 +3635,7 @@ settings:
|
|||
},
|
||||
{
|
||||
specialCase: "No team",
|
||||
teamName: "No team",
|
||||
teamName: "Unassigned",
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
|
|
@ -3657,7 +3657,7 @@ settings:
|
|||
teamFileName := teamFile.Name()
|
||||
|
||||
if tc.specialCase == "No team" {
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(teamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(teamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(teamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -3801,14 +3801,14 @@ team_settings:
|
|||
{
|
||||
testName: "No team VPP",
|
||||
VPPTeam: "No team",
|
||||
teamName: "No team",
|
||||
teamName: "Unassigned",
|
||||
teamTemplate: testVPP,
|
||||
errContains: ptr.String("Couldn't edit software."),
|
||||
},
|
||||
{
|
||||
testName: "No team Installers",
|
||||
VPPTeam: "No team",
|
||||
teamName: "No team",
|
||||
teamName: "Unassigned",
|
||||
teamTemplate: testPackages,
|
||||
errContains: ptr.String("Couldn't edit software."),
|
||||
},
|
||||
|
|
@ -3833,7 +3833,7 @@ team_settings:
|
|||
teamFileName := teamFile.Name()
|
||||
|
||||
if tc.VPPTeam == "No team" {
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(teamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(teamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(teamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
teamFileName = noTeamFilePath
|
||||
|
|
@ -3952,7 +3952,7 @@ policies:
|
|||
reports:
|
||||
`
|
||||
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
- description: Test policy.
|
||||
|
|
@ -3996,7 +3996,7 @@ settings:
|
|||
err := os.WriteFile(globalFile, []byte(globalTemplate), 0o644) //nolint:gosec
|
||||
require.NoError(t, err)
|
||||
|
||||
noTeamFile := filepath.Join(tempDir, "no-team.yml")
|
||||
noTeamFile := filepath.Join(tempDir, "unassigned.yml")
|
||||
err = os.WriteFile(noTeamFile, []byte(noTeamTemplate), 0o644)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
@ -4346,7 +4346,7 @@ org_settings:
|
|||
policies:
|
||||
reports:
|
||||
`
|
||||
noTeamTemplate = `name: No team
|
||||
noTeamTemplate = `name: Unassigned
|
||||
controls:
|
||||
policies:
|
||||
software:
|
||||
|
|
@ -4388,7 +4388,7 @@ settings:
|
|||
require.NoError(t, err)
|
||||
err = noTeamFile.Close()
|
||||
require.NoError(t, err)
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "no-team.yml")
|
||||
noTeamFilePath := filepath.Join(filepath.Dir(noTeamFile.Name()), "unassigned.yml")
|
||||
err = os.Rename(noTeamFile.Name(), noTeamFilePath)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
|
|||
|
|
@ -234,7 +234,13 @@ func GroupFromBytes(b []byte, options ...GroupFromBytesOpts) (*Group, error) {
|
|||
if err := yaml.Unmarshal(s.Spec, &rawTeam); err != nil {
|
||||
return nil, fmt.Errorf("unmarshaling %s spec: %w", kind, err)
|
||||
}
|
||||
specs.Teams = append(specs.Teams, rawTeam["team"])
|
||||
teamRaw := rawTeam["team"]
|
||||
var err error
|
||||
teamRaw, deprecatedKeysMap, err = rewriteNewToOldKeys(teamRaw, fleet.TeamSpec{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("in %s spec: %w", kind, err)
|
||||
}
|
||||
specs.Teams = append(specs.Teams, teamRaw)
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown kind %q", s.Kind)
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import (
|
|||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/mdm"
|
||||
"github.com/fleetdm/fleet/v4/server/mdm/apple/mobileconfig"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/endpointer"
|
||||
"github.com/fleetdm/fleet/v4/server/ptr"
|
||||
kithttp "github.com/go-kit/kit/transport/http"
|
||||
)
|
||||
|
|
@ -161,6 +162,12 @@ func (c *Client) doContextWithHeaders(ctx context.Context, verb, path, rawQuery
|
|||
if err != nil {
|
||||
return nil, ctxerr.Wrap(ctx, err, "marshaling json")
|
||||
}
|
||||
if rules := endpointer.ExtractAliasRules(params); len(rules) > 0 {
|
||||
bodyBytes, err = endpointer.RewriteOldToNewKeys(bodyBytes, rules)
|
||||
if err != nil {
|
||||
return nil, ctxerr.Wrap(ctx, err, "rewriting deprecated keys")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return c.doContextWithBodyAndHeaders(ctx, verb, path, rawQuery, bodyBytes, headers)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/endpointer"
|
||||
)
|
||||
|
||||
func (c *Client) CreateGlobalPolicy(name, query, description, resolution, platform string) error {
|
||||
|
|
@ -27,15 +25,7 @@ func (c *Client) ApplyPolicies(specs []*fleet.PolicySpec) error {
|
|||
req := applyPolicySpecsRequest{Specs: specs}
|
||||
verb, path := "POST", "/api/latest/fleet/spec/policies"
|
||||
var responseBody applyPolicySpecsResponse
|
||||
data, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
data, err = endpointer.RewriteOldToNewKeys(data, endpointer.ExtractAliasRules(req))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.authenticatedRequest(data, verb, path, &responseBody)
|
||||
return c.authenticatedRequest(req, verb, path, &responseBody)
|
||||
}
|
||||
|
||||
// GetPolicies retrieves the list of Policies. Inherited policies are excluded.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/platform/endpointer"
|
||||
)
|
||||
|
||||
// ApplyQueries sends the list of Queries to be applied (upserted) to the
|
||||
|
|
@ -15,15 +13,7 @@ func (c *Client) ApplyQueries(specs []*fleet.QuerySpec) error {
|
|||
req := applyQuerySpecsRequest{Specs: specs}
|
||||
verb, path := "POST", "/api/latest/fleet/spec/reports"
|
||||
var responseBody applyQuerySpecsResponse
|
||||
data, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
data, err = endpointer.RewriteOldToNewKeys(data, endpointer.ExtractAliasRules(req))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.authenticatedRequest(data, verb, path, &responseBody)
|
||||
return c.authenticatedRequest(req, verb, path, &responseBody)
|
||||
}
|
||||
|
||||
// GetQuerySpec returns the query spec of a query by its team+name.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
)
|
||||
|
||||
|
|
@ -20,7 +18,7 @@ func (c *Client) SearchTargets(query string, hostIDs, labelIDs []uint) (*fleet.T
|
|||
var responseBody searchTargetsResponse
|
||||
err := c.authenticatedRequest(req, verb, path, &responseBody)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("SearchTargets: %s", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
hosts := make([]*fleet.Host, len(responseBody.Targets.Hosts))
|
||||
|
|
|
|||
Loading…
Reference in a new issue