diff --git a/changes/16431-scripts-result-message b/changes/16431-scripts-result-message new file mode 100644 index 0000000000..3d29c82fd1 --- /dev/null +++ b/changes/16431-scripts-result-message @@ -0,0 +1 @@ +- Fixes issue where an inaccurate message was returned after running an async (queued) script. \ No newline at end of file diff --git a/server/fleet/errors.go b/server/fleet/errors.go index 7b3653bc03..70bcb88147 100644 --- a/server/fleet/errors.go +++ b/server/fleet/errors.go @@ -546,6 +546,7 @@ const ( RunScriptScriptsDisabledGloballyErrMsg = "Running scripts is disabled in organization settings." RunScriptDisabledErrMsg = "Scripts are disabled for this host. To run scripts, deploy the fleetd agent with scripts enabled." RunScriptScriptTimeoutErrMsg = "Timeout. Fleet stopped the script after 5 minutes to protect host performance." + RunScriptAsyncScriptEnqueuedErrMsg = "Script is running or will run when the host comes online." // End user authentication EndUserAuthDEPWebURLConfiguredErrMsg = `End user authentication can't be configured when the configured automatic enrollment (DEP) profile specifies a configuration_web_url.` // #nosec G101 diff --git a/server/fleet/scripts.go b/server/fleet/scripts.go index 56558cc10f..79593d3f70 100644 --- a/server/fleet/scripts.go +++ b/server/fleet/scripts.go @@ -223,6 +223,11 @@ func (hsr HostScriptResult) UserMessage(hostTimeout bool) string { if hsr.HostTimeout(scripts.MaxServerWaitTime) { return RunScriptHostTimeoutErrMsg } + + if !hsr.SyncRequest { + return RunScriptAsyncScriptEnqueuedErrMsg + } + return RunScriptAlreadyRunningErrMsg } diff --git a/server/service/integration_enterprise_test.go b/server/service/integration_enterprise_test.go index df8badb00f..b4a37e595d 100644 --- a/server/service/integration_enterprise_test.go +++ b/server/service/integration_enterprise_test.go @@ -4466,7 +4466,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostScript() { require.Equal(t, "echo", scriptResultResp.ScriptContents) require.Nil(t, scriptResultResp.ExitCode) require.False(t, scriptResultResp.HostTimeout) - require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg) + require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg) // an async script doesn't care about timeouts now := time.Now() @@ -4483,7 +4483,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostScript() { require.Equal(t, "echo", scriptResultResp.ScriptContents) require.Nil(t, scriptResultResp.ExitCode) require.False(t, scriptResultResp.HostTimeout) - require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg) + require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg) // Disable scripts and verify that there are no Orbit notifs acr := appConfigResponse{} @@ -4749,7 +4749,7 @@ func (s *integrationEnterpriseTestSuite) TestRunHostSavedScript() { require.Equal(t, "echo 'no team'", scriptResultResp.ScriptContents) require.Nil(t, scriptResultResp.ExitCode) require.False(t, scriptResultResp.HostTimeout) - require.Contains(t, scriptResultResp.Message, fleet.RunScriptAlreadyRunningErrMsg) + require.Contains(t, scriptResultResp.Message, fleet.RunScriptAsyncScriptEnqueuedErrMsg) require.NotNil(t, scriptResultResp.ScriptID) require.Equal(t, savedNoTmScript.ID, *scriptResultResp.ScriptID)