func extractInternalError()

in internal/beater/api/config/agent/handler.go [161:213]


func extractInternalError(c *request.Context, err error) {
	msg := err.Error()
	var body interface{}
	var keyword string
	switch {
	case strings.Contains(msg, agentcfg.ErrMsgSendToKibanaFailed):
		body = authErrMsg(c, msg, agentcfg.ErrMsgSendToKibanaFailed)
		keyword = agentcfg.ErrMsgSendToKibanaFailed

	case strings.Contains(msg, agentcfg.ErrMsgReadKibanaResponse):
		body = authErrMsg(c, msg, agentcfg.ErrMsgReadKibanaResponse)
		keyword = agentcfg.ErrMsgReadKibanaResponse

	case strings.Contains(msg, agentcfg.ErrUnauthorized):
		fullMsg := "APM Server is not authorized to query Kibana. " +
			"Please configure apm-server.kibana.username and apm-server.kibana.password, " +
			"and ensure the user has the necessary privileges."
		body = authErrMsg(c, fullMsg, agentcfg.ErrUnauthorized)
		keyword = agentcfg.ErrUnauthorized

	case strings.Contains(msg, agentcfg.ErrNoValidElasticsearchConfig):
		body = "Your Elasticsearch configuration does not support agent config queries. Check your configurations at `output.elasticsearch` or `apm-server.agent.config.elasticsearch`."
		c.Result.Set(
			request.IDResponseErrorsForbidden,
			http.StatusForbidden,
			keyword,
			body,
			err,
		)
		return

	case strings.Contains(msg, agentcfg.ErrInfrastructureNotReady):
		body = "Agent configuration infrastructure is not ready. Please retry later."
		c.Result.Set(
			request.IDResponseErrorsServiceUnavailable,
			http.StatusServiceUnavailable,
			keyword,
			body,
			err,
		)
		return

	default:
		body = authErrMsg(c, msg, msgServiceUnavailable)
		keyword = msgServiceUnavailable
	}

	c.Result.Set(request.IDResponseErrorsServiceUnavailable,
		http.StatusServiceUnavailable,
		keyword,
		body,
		err)
}