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/alerting"
|
||||||
"github.com/grafana/grafana/pkg/services/datasources"
|
"github.com/grafana/grafana/pkg/services/datasources"
|
||||||
"github.com/grafana/grafana/pkg/services/guardian"
|
"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/services/search"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/util"
|
"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 {
|
func (hs *HTTPServer) GetAlertNotifiers(ngalertEnabled bool) func(*models.ReqContext) response.Response {
|
||||||
return func(_ *models.ReqContext) response.Response {
|
return func(_ *models.ReqContext) response.Response {
|
||||||
if ngalertEnabled {
|
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
|
// 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.
|
// 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/components/simplejson"
|
||||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels"
|
"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
|
// 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) {
|
func (e *EmbeddedContactPoint) SecretKeys() ([]string, error) {
|
||||||
switch e.Type {
|
notifiers := channels_config.GetAvailableNotifiers()
|
||||||
case "alertmanager":
|
for _, n := range notifiers {
|
||||||
return []string{"basicAuthPassword"}, nil
|
if n.Type == e.Type {
|
||||||
case "dingding":
|
secureFields := []string{}
|
||||||
return []string{}, nil
|
for _, field := range n.Options {
|
||||||
case "discord":
|
if field.Secure {
|
||||||
return []string{}, nil
|
secureFields = append(secureFields, field.PropertyName)
|
||||||
case "email":
|
}
|
||||||
return []string{}, nil
|
}
|
||||||
case "googlechat":
|
return secureFields, nil
|
||||||
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
|
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("no secrets configured for type '%s'", e.Type)
|
return nil, fmt.Errorf("no secrets configured for type '%s'", e.Type)
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package notifier
|
package channels_config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/grafana/pkg/services/alerting"
|
"github.com/grafana/grafana/pkg/services/alerting"
|
@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/models"
|
"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/services/user"
|
||||||
"github.com/grafana/grafana/pkg/tests/testinfra"
|
"github.com/grafana/grafana/pkg/tests/testinfra"
|
||||||
)
|
)
|
||||||
@ -44,7 +44,7 @@ func TestAvailableChannels(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 200, resp.StatusCode)
|
require.Equal(t, 200, resp.StatusCode)
|
||||||
|
|
||||||
expNotifiers := notifier.GetAvailableNotifiers()
|
expNotifiers := channels_config.GetAvailableNotifiers()
|
||||||
expJson, err := json.Marshal(expNotifiers)
|
expJson, err := json.Marshal(expNotifiers)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(expJson), string(b))
|
require.Equal(t, string(expJson), string(b))
|
||||||
|
Loading…
Reference in New Issue
Block a user