mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: use static channel configuration to determinate secure fields (#52527)
* Alerting: use static channel configuration to determinate secure fields * move to channels package * introduce channel_config package to fix cyclic import * add missing changes * compare type to type
This commit is contained in:
parent
7d90f2f1a3
commit
ba9c18d9c3
@ -13,7 +13,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/services/alerting"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
"github.com/grafana/grafana/pkg/services/guardian"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels_config"
|
||||
"github.com/grafana/grafana/pkg/services/search"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
@ -198,7 +198,7 @@ func (hs *HTTPServer) GetAlert(c *models.ReqContext) response.Response {
|
||||
func (hs *HTTPServer) GetAlertNotifiers(ngalertEnabled bool) func(*models.ReqContext) response.Response {
|
||||
return func(_ *models.ReqContext) response.Response {
|
||||
if ngalertEnabled {
|
||||
return response.JSON(http.StatusOK, notifier.GetAvailableNotifiers())
|
||||
return response.JSON(http.StatusOK, channels_config.GetAvailableNotifiers())
|
||||
}
|
||||
// TODO(codesome): This wont be required in 8.0 since ngalert
|
||||
// will be enabled by default with no disabling. This is to be removed later.
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels_config"
|
||||
)
|
||||
|
||||
// swagger:route GET /api/v1/provisioning/contact-points provisioning stable RouteGetContactpoints
|
||||
@ -118,43 +119,17 @@ func (e *EmbeddedContactPoint) Valid(decryptFunc channels.GetDecryptedValueFn) e
|
||||
}
|
||||
|
||||
func (e *EmbeddedContactPoint) SecretKeys() ([]string, error) {
|
||||
switch e.Type {
|
||||
case "alertmanager":
|
||||
return []string{"basicAuthPassword"}, nil
|
||||
case "dingding":
|
||||
return []string{}, nil
|
||||
case "discord":
|
||||
return []string{}, nil
|
||||
case "email":
|
||||
return []string{}, nil
|
||||
case "googlechat":
|
||||
return []string{}, nil
|
||||
case "kafka":
|
||||
return []string{}, nil
|
||||
case "line":
|
||||
return []string{"token"}, nil
|
||||
case "opsgenie":
|
||||
return []string{"apiKey"}, nil
|
||||
case "pagerduty":
|
||||
return []string{"integrationKey"}, nil
|
||||
case "pushover":
|
||||
return []string{"userKey", "apiToken"}, nil
|
||||
case "sensugo":
|
||||
return []string{"apiKey"}, nil
|
||||
case "slack":
|
||||
return []string{"url", "token"}, nil
|
||||
case "teams":
|
||||
return []string{}, nil
|
||||
case "telegram":
|
||||
return []string{"bottoken"}, nil
|
||||
case "threema":
|
||||
return []string{"api_secret"}, nil
|
||||
case "victorops":
|
||||
return []string{}, nil
|
||||
case "webhook":
|
||||
return []string{}, nil
|
||||
case "wecom":
|
||||
return []string{"url"}, nil
|
||||
notifiers := channels_config.GetAvailableNotifiers()
|
||||
for _, n := range notifiers {
|
||||
if n.Type == e.Type {
|
||||
secureFields := []string{}
|
||||
for _, field := range n.Options {
|
||||
if field.Secure {
|
||||
secureFields = append(secureFields, field.PropertyName)
|
||||
}
|
||||
}
|
||||
return secureFields, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("no secrets configured for type '%s'", e.Type)
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package notifier
|
||||
package channels_config
|
||||
|
||||
import (
|
||||
"github.com/grafana/grafana/pkg/services/alerting"
|
@ -10,7 +10,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels_config"
|
||||
"github.com/grafana/grafana/pkg/services/user"
|
||||
"github.com/grafana/grafana/pkg/tests/testinfra"
|
||||
)
|
||||
@ -44,7 +44,7 @@ func TestAvailableChannels(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 200, resp.StatusCode)
|
||||
|
||||
expNotifiers := notifier.GetAvailableNotifiers()
|
||||
expNotifiers := channels_config.GetAvailableNotifiers()
|
||||
expJson, err := json.Marshal(expNotifiers)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, string(expJson), string(b))
|
||||
|
Loading…
Reference in New Issue
Block a user