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
00549f39
Commit
00549f39
authored
Feb 08, 2017
by
bergquist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style(hipchat): improves code style
parent
53942f79
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
24 deletions
+29
-24
pkg/services/alerting/notifiers/hipchat.go
+28
-24
public/app/features/alerting/alert_tab_ctrl.ts
+1
-0
No files found.
pkg/services/alerting/notifiers/hipchat.go
View file @
00549f39
...
...
@@ -2,13 +2,15 @@ package notifiers
import
(
"encoding/json"
"strconv"
"strings"
"fmt"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/log"
m
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/alerting"
"strconv"
"strings"
"time"
)
func
init
()
{
...
...
@@ -20,15 +22,15 @@ func init() {
OptionsTemplate
:
`
<h3 class="page-heading">HipChat settings</h3>
<div class="gf-form max-width-30">
<span class="gf-form-label width-
6
">Hip Chat Url</span>
<input type="text" required class="gf-form-input max-width-30" ng-model="ctrl.model.settings.url" placeholder="HipChat URL"></input>
<span class="gf-form-label width-
8
">Hip Chat Url</span>
<input type="text" required class="gf-form-input max-width-30" ng-model="ctrl.model.settings.url" placeholder="HipChat URL
(ex https://grafana.hipchat.com)
"></input>
</div>
<div class="gf-form max-width-30">
<span class="gf-form-label width-
6
">API Key</span>
<span class="gf-form-label width-
8
">API Key</span>
<input type="text" required class="gf-form-input max-width-30" ng-model="ctrl.model.settings.apikey" placeholder="HipChat API Key"></input>
</div>
<div class="gf-form max-width-30">
<span class="gf-form-label width-
6
">Room ID</span>
<span class="gf-form-label width-
8
">Room ID</span>
<input type="text"
class="gf-form-input max-width-30"
ng-model="ctrl.model.settings.roomid"
...
...
@@ -40,7 +42,11 @@ func init() {
}
func
NewHipChatNotifier
(
model
*
m
.
AlertNotification
)
(
alerting
.
Notifier
,
error
)
{
const
(
maxFieldCount
int
=
4
)
func
NewHipChatNotifier
(
model
*
models
.
AlertNotification
)
(
alerting
.
Notifier
,
error
)
{
url
:=
model
.
Settings
.
Get
(
"url"
)
.
MustString
()
if
strings
.
HasSuffix
(
url
,
"/"
)
{
url
=
url
[
:
len
(
url
)
-
1
]
...
...
@@ -50,13 +56,13 @@ func NewHipChatNotifier(model *m.AlertNotification) (alerting.Notifier, error) {
}
apikey
:=
model
.
Settings
.
Get
(
"apikey"
)
.
MustString
()
room
i
d
:=
model
.
Settings
.
Get
(
"roomid"
)
.
MustString
()
room
I
d
:=
model
.
Settings
.
Get
(
"roomid"
)
.
MustString
()
return
&
HipChatNotifier
{
NotifierBase
:
NewNotifierBase
(
model
.
Id
,
model
.
IsDefault
,
model
.
Name
,
model
.
Type
,
model
.
Settings
),
Url
:
url
,
ApiKey
:
apikey
,
RoomId
:
room
i
d
,
RoomId
:
room
I
d
,
log
:
log
.
New
(
"alerting.notifier.hipchat"
),
},
nil
}
...
...
@@ -70,9 +76,6 @@ type HipChatNotifier struct {
}
func
(
this
*
HipChatNotifier
)
Notify
(
evalContext
*
alerting
.
EvalContext
)
error
{
var
message
string
var
color
string
this
.
log
.
Info
(
"Executing hipchat notification"
,
"ruleId"
,
evalContext
.
Rule
.
Id
,
"notification"
,
this
.
Name
)
ruleUrl
,
err
:=
evalContext
.
GetRuleUrl
()
...
...
@@ -81,9 +84,8 @@ func (this *HipChatNotifier) Notify(evalContext *alerting.EvalContext) error {
return
err
}
message
=
evalContext
.
GetNotificationTitle
()
+
" in state "
+
evalContext
.
GetStateModel
()
.
Text
+
"<br><a href="
+
ruleUrl
+
">Check Dasboard</a>"
message
:
=
evalContext
.
GetNotificationTitle
()
+
" in state "
+
evalContext
.
GetStateModel
()
.
Text
+
"<br><a href="
+
ruleUrl
+
">Check Dasboard</a>"
fields
:=
make
([]
map
[
string
]
interface
{},
0
)
fieldLimitCount
:=
4
message
+=
"<br>"
for
index
,
evt
:=
range
evalContext
.
EvalMatches
{
message
+=
evt
.
Metric
+
" :: "
+
strconv
.
FormatFloat
(
evt
.
Value
.
Float64
,
'f'
,
-
1
,
64
)
+
"<br>"
...
...
@@ -92,7 +94,7 @@ func (this *HipChatNotifier) Notify(evalContext *alerting.EvalContext) error {
"value"
:
evt
.
Value
,
"short"
:
true
,
})
if
index
>
fieldLimit
Count
{
if
index
>
maxField
Count
{
break
}
}
...
...
@@ -105,16 +107,17 @@ func (this *HipChatNotifier) Notify(evalContext *alerting.EvalContext) error {
})
}
if
evalContext
.
Rule
.
State
!=
m
.
AlertStateOK
{
//dont add message when going back to alert state ok.
if
evalContext
.
Rule
.
State
!=
m
odels
.
AlertStateOK
{
//dont add message when going back to alert state ok.
message
+=
" "
+
evalContext
.
Rule
.
Message
}
//HipChat has a set list of colors
var
color
string
switch
evalContext
.
Rule
.
State
{
case
m
.
AlertStateOK
:
case
m
odels
.
AlertStateOK
:
color
=
"green"
case
m
.
AlertStateNoData
:
case
m
odels
.
AlertStateNoData
:
color
=
"grey"
case
m
.
AlertStateAlerting
:
case
m
odels
.
AlertStateAlerting
:
color
=
"red"
}
...
...
@@ -128,7 +131,7 @@ func (this *HipChatNotifier) Notify(evalContext *alerting.EvalContext) error {
"icon"
:
map
[
string
]
interface
{}{
"url"
:
"http://grafana.org/assets/img/fav32.png"
,
},
"date"
:
time
.
Now
()
.
Unix
(),
"date"
:
evalContext
.
EndTime
.
Unix
(),
}
body
:=
map
[
string
]
interface
{}{
...
...
@@ -138,9 +141,10 @@ func (this *HipChatNotifier) Notify(evalContext *alerting.EvalContext) error {
"color"
:
color
,
"card"
:
card
,
}
hipUrl
:=
this
.
Url
+
"/v2/room/"
+
this
.
RoomId
+
"/notification?auth_token="
+
this
.
ApiKey
hipUrl
:=
fmt
.
Sprintf
(
"%s/v2/room/%s/notification?auth_token=%s"
,
this
.
Url
,
this
.
RoomId
,
this
.
ApiKey
)
data
,
_
:=
json
.
Marshal
(
&
body
)
cmd
:=
&
m
.
SendWebhookSync
{
Url
:
hipUrl
,
Body
:
string
(
data
)}
cmd
:=
&
m
odels
.
SendWebhookSync
{
Url
:
hipUrl
,
Body
:
string
(
data
)}
if
err
:=
bus
.
DispatchCtx
(
evalContext
.
Ctx
,
cmd
);
err
!=
nil
{
this
.
log
.
Error
(
"Failed to send hipchat notification"
,
"error"
,
err
,
"webhook"
,
this
.
Name
)
...
...
public/app/features/alerting/alert_tab_ctrl.ts
View file @
00549f39
...
...
@@ -104,6 +104,7 @@ export class AlertTabCtrl {
case
"webhook"
:
return
"fa fa-cubes"
;
case
"pagerduty"
:
return
"fa fa-bullhorn"
;
case
"opsgenie"
:
return
"fa fa-bell"
;
case
"hipchat"
:
return
"fa fa-mail-forward"
;
}
}
...
...
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