mirror of
https://github.com/fleetdm/fleet
synced 2026-05-22 08:28:52 +00:00
Do not log error if missing EULA (#31598)
fixes #29833 Checks if the error is a not found error and then return a notFoundError that does not get logged as an error but as an info log instead. `level=info ts=2025-08-05T10:46:06.237581Z component=http path=/api/latest/fleet/setup_experience/eula/metadata took=1.939958ms uuid=0ab0c579-07c5-48be-b6bd-5e4ebd81212d err="not found"` # 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 - [x] QA'd all new/changed functionality manually
This commit is contained in:
parent
7ea3a39ee3
commit
893563777b
3 changed files with 47 additions and 2 deletions
1
changes/29833-do-not-log-error-for-missing-eula
Normal file
1
changes/29833-do-not-log-error-for-missing-eula
Normal file
|
|
@ -0,0 +1 @@
|
|||
* Do not log an error if EULA is missing for the `/setup_experience/eula/metadata` endpoint
|
||||
|
|
@ -13,6 +13,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/fleetdm/fleet/v4/pkg/fleethttp"
|
||||
"github.com/fleetdm/fleet/v4/server/datastore/redis/redistest"
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/fleetdm/fleet/v4/server/ptr"
|
||||
"github.com/fleetdm/fleet/v4/server/service/contract"
|
||||
|
|
@ -42,8 +43,15 @@ func (s *integrationLoggerTestSuite) SetupSuite() {
|
|||
s.buf = new(bytes.Buffer)
|
||||
logger := log.NewJSONLogger(s.buf)
|
||||
logger = level.NewFilter(logger, level.AllowDebug())
|
||||
redisPool := redistest.SetupRedis(s.T(), "zz", false, false, false)
|
||||
|
||||
users, server := RunServerForTestsWithDS(s.T(), s.ds, &TestServerOpts{Logger: logger})
|
||||
users, server := RunServerForTestsWithDS(s.T(), s.ds, &TestServerOpts{
|
||||
License: &fleet.LicenseInfo{
|
||||
Tier: fleet.TierPremium,
|
||||
},
|
||||
Logger: logger,
|
||||
Pool: redisPool,
|
||||
})
|
||||
s.server = server
|
||||
s.users = users
|
||||
}
|
||||
|
|
@ -304,3 +312,34 @@ func (s *integrationLoggerTestSuite) TestEnrollAgentLogsErrors() {
|
|||
assert.Contains(t, string(logData["err"]), `"enroll failed:`)
|
||||
assert.Contains(t, string(logData["err"]), `no matching secret found`)
|
||||
}
|
||||
|
||||
func (s *integrationLoggerTestSuite) TestSetupExperienceEULAMetadataDoesNotLogErrorIfNotFound() {
|
||||
t := s.T()
|
||||
|
||||
appConf, err := s.ds.AppConfig(context.Background())
|
||||
require.NoError(s.T(), err)
|
||||
originalAppConf := *appConf
|
||||
|
||||
appConf.MDM.EnabledAndConfigured = true
|
||||
appConf.MDM.WindowsEnabledAndConfigured = true
|
||||
appConf.MDM.AppleBMEnabledAndConfigured = true
|
||||
err = s.ds.SaveAppConfig(context.Background(), appConf)
|
||||
require.NoError(t, err)
|
||||
|
||||
s.token = getTestAdminToken(t, s.server)
|
||||
s.Do("GET", "/api/v1/fleet/setup_experience/eula/metadata", nil, http.StatusNotFound)
|
||||
|
||||
logs := strings.Split(strings.TrimSpace(s.buf.String()), "\n")
|
||||
require.Len(t, logs, 2) // Login and not found
|
||||
|
||||
logData := make(map[string]json.RawMessage)
|
||||
log := logs[1]
|
||||
|
||||
assert.NoError(t, json.Unmarshal([]byte(log), &logData))
|
||||
assert.Equal(t, `"info"`, string(logData["level"]))
|
||||
assert.Equal(t, string(logData["err"]), `"not found"`)
|
||||
|
||||
// restore app config
|
||||
err = s.ds.SaveAppConfig(context.Background(), &originalAppConf)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -368,10 +368,15 @@ func (r getMDMEULAMetadataResponse) Error() error { return r.Err }
|
|||
|
||||
func getMDMEULAMetadataEndpoint(ctx context.Context, request interface{}, svc fleet.Service) (fleet.Errorer, error) {
|
||||
eula, err := svc.MDMGetEULAMetadata(ctx)
|
||||
if err != nil {
|
||||
if err != nil && !fleet.IsNotFound(err) {
|
||||
return getMDMEULAMetadataResponse{Err: err}, nil
|
||||
}
|
||||
|
||||
if eula == nil {
|
||||
// We return the error here not as part of the response object, to signal an error to the server, but avoid logging it as an error.
|
||||
return nil, newNotFoundError()
|
||||
}
|
||||
|
||||
return getMDMEULAMetadataResponse{MDMEULA: eula}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue