Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
8bc04628
Commit
8bc04628
authored
Nov 04, 2016
by
Carl Bergquist
Committed by
GitHub
Nov 04, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6467 from utkarshcmu/slack_mention
Added Slack mention feature
parents
6fa89456
dc3a62da
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
101 additions
and
6 deletions
+101
-6
pkg/services/alerting/notifiers/slack.go
+5
-2
pkg/services/alerting/notifiers/slack_test.go
+81
-0
pkg/services/alerting/notifiers/webhook_test.go
+4
-4
public/app/features/alerting/partials/notification_edit.html
+11
-0
No files found.
pkg/services/alerting/notifiers/slack.go
View file @
8bc04628
...
...
@@ -23,11 +23,13 @@ func NewSlackNotifier(model *m.AlertNotification) (alerting.Notifier, error) {
}
recipient
:=
model
.
Settings
.
Get
(
"recipient"
)
.
MustString
()
mention
:=
model
.
Settings
.
Get
(
"mention"
)
.
MustString
()
return
&
SlackNotifier
{
NotifierBase
:
NewNotifierBase
(
model
.
Id
,
model
.
IsDefault
,
model
.
Name
,
model
.
Type
,
model
.
Settings
),
Url
:
url
,
Recipient
:
recipient
,
Mention
:
mention
,
log
:
log
.
New
(
"alerting.notifier.slack"
),
},
nil
}
...
...
@@ -36,6 +38,7 @@ type SlackNotifier struct {
NotifierBase
Url
string
Recipient
string
Mention
string
log
log
.
Logger
}
...
...
@@ -70,9 +73,9 @@ func (this *SlackNotifier) Notify(evalContext *alerting.EvalContext) error {
})
}
message
:=
""
message
:=
this
.
Mention
if
evalContext
.
Rule
.
State
!=
m
.
AlertStateOK
{
//dont add message when going back to alert state ok.
message
=
evalContext
.
Rule
.
Message
message
+=
" "
+
evalContext
.
Rule
.
Message
}
body
:=
map
[
string
]
interface
{}{
...
...
pkg/services/alerting/notifiers/slack_test.go
0 → 100644
View file @
8bc04628
package
notifiers
import
(
"testing"
"github.com/grafana/grafana/pkg/components/simplejson"
m
"github.com/grafana/grafana/pkg/models"
.
"github.com/smartystreets/goconvey/convey"
)
func
TestSlackNotifier
(
t
*
testing
.
T
)
{
Convey
(
"Slack notifier tests"
,
t
,
func
()
{
Convey
(
"Parsing alert notification from settings"
,
func
()
{
Convey
(
"empty settings should return error"
,
func
()
{
json
:=
`{ }`
settingsJSON
,
_
:=
simplejson
.
NewJson
([]
byte
(
json
))
model
:=
&
m
.
AlertNotification
{
Name
:
"ops"
,
Type
:
"slack"
,
Settings
:
settingsJSON
,
}
_
,
err
:=
NewSlackNotifier
(
model
)
So
(
err
,
ShouldNotBeNil
)
})
Convey
(
"from settings"
,
func
()
{
json
:=
`
{
"url": "http://google.com"
}`
settingsJSON
,
_
:=
simplejson
.
NewJson
([]
byte
(
json
))
model
:=
&
m
.
AlertNotification
{
Name
:
"ops"
,
Type
:
"slack"
,
Settings
:
settingsJSON
,
}
not
,
err
:=
NewSlackNotifier
(
model
)
slackNotifier
:=
not
.
(
*
SlackNotifier
)
So
(
err
,
ShouldBeNil
)
So
(
slackNotifier
.
Name
,
ShouldEqual
,
"ops"
)
So
(
slackNotifier
.
Type
,
ShouldEqual
,
"slack"
)
So
(
slackNotifier
.
Url
,
ShouldEqual
,
"http://google.com"
)
So
(
slackNotifier
.
Recipient
,
ShouldEqual
,
""
)
So
(
slackNotifier
.
Mention
,
ShouldEqual
,
""
)
})
Convey
(
"from settings with Recipient and Mention"
,
func
()
{
json
:=
`
{
"url": "http://google.com",
"recipient": "#ds-opentsdb",
"mention": "@carl"
}`
settingsJSON
,
_
:=
simplejson
.
NewJson
([]
byte
(
json
))
model
:=
&
m
.
AlertNotification
{
Name
:
"ops"
,
Type
:
"slack"
,
Settings
:
settingsJSON
,
}
not
,
err
:=
NewSlackNotifier
(
model
)
slackNotifier
:=
not
.
(
*
SlackNotifier
)
So
(
err
,
ShouldBeNil
)
So
(
slackNotifier
.
Name
,
ShouldEqual
,
"ops"
)
So
(
slackNotifier
.
Type
,
ShouldEqual
,
"slack"
)
So
(
slackNotifier
.
Url
,
ShouldEqual
,
"http://google.com"
)
So
(
slackNotifier
.
Recipient
,
ShouldEqual
,
"#ds-opentsdb"
)
So
(
slackNotifier
.
Mention
,
ShouldEqual
,
"@carl"
)
})
})
})
}
pkg/services/alerting/notifiers/webhook_test.go
View file @
8bc04628
...
...
@@ -40,12 +40,12 @@ func TestWebhookNotifier(t *testing.T) {
}
not
,
err
:=
NewWebHookNotifier
(
model
)
email
Notifier
:=
not
.
(
*
WebhookNotifier
)
webhook
Notifier
:=
not
.
(
*
WebhookNotifier
)
So
(
err
,
ShouldBeNil
)
So
(
email
Notifier
.
Name
,
ShouldEqual
,
"ops"
)
So
(
email
Notifier
.
Type
,
ShouldEqual
,
"email"
)
So
(
email
Notifier
.
Url
,
ShouldEqual
,
"http://google.com"
)
So
(
webhook
Notifier
.
Name
,
ShouldEqual
,
"ops"
)
So
(
webhook
Notifier
.
Type
,
ShouldEqual
,
"email"
)
So
(
webhook
Notifier
.
Url
,
ShouldEqual
,
"http://google.com"
)
})
})
})
...
...
public/app/features/alerting/partials/notification_edit.html
View file @
8bc04628
...
...
@@ -74,6 +74,17 @@
Override default channel or user, use #channel-name or @username
</info-popover>
</div>
<div
class=
"gf-form max-width-30"
>
<span
class=
"gf-form-label width-6"
>
Mention
</span>
<input
type=
"text"
class=
"gf-form-input max-width-30"
ng-model=
"ctrl.model.settings.mention"
data-placement=
"right"
>
</input>
<info-popover
mode=
"right-absolute"
>
Mention a user or a group using @ when notifying in a channel
</info-popover>
</div>
</div>
<div
class=
"gf-form-group section"
ng-if=
"ctrl.model.type === 'email'"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment