mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
feat(alerting): renamed scheduler to handler
This commit is contained in:
@@ -14,7 +14,7 @@ type Alert struct {
|
|||||||
Name string
|
Name string
|
||||||
Description string
|
Description string
|
||||||
State string
|
State string
|
||||||
Scheduler int64
|
Handler int64
|
||||||
Enabled bool
|
Enabled bool
|
||||||
|
|
||||||
Created time.Time
|
Created time.Time
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func (e *DashAlertExtractor) GetAlerts() ([]*m.Alert, error) {
|
|||||||
PanelId: panel.Get("id").MustInt64(),
|
PanelId: panel.Get("id").MustInt64(),
|
||||||
Id: jsonAlert.Get("id").MustInt64(),
|
Id: jsonAlert.Get("id").MustInt64(),
|
||||||
Name: jsonAlert.Get("name").MustString(),
|
Name: jsonAlert.Get("name").MustString(),
|
||||||
Scheduler: jsonAlert.Get("scheduler").MustInt64(),
|
Handler: jsonAlert.Get("handler").MustInt64(),
|
||||||
Enabled: jsonAlert.Get("enabled").MustBool(),
|
Enabled: jsonAlert.Get("enabled").MustBool(),
|
||||||
Description: jsonAlert.Get("description").MustString(),
|
Description: jsonAlert.Get("description").MustString(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ func TestAlertRuleExtraction(t *testing.T) {
|
|||||||
"alert": {
|
"alert": {
|
||||||
"name": "name1",
|
"name": "name1",
|
||||||
"description": "desc1",
|
"description": "desc1",
|
||||||
"scheduler": 1,
|
"handler": 1,
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"critical": {
|
"critical": {
|
||||||
"level": 20,
|
"level": 20,
|
||||||
@@ -74,7 +74,7 @@ func TestAlertRuleExtraction(t *testing.T) {
|
|||||||
"alert": {
|
"alert": {
|
||||||
"name": "name2",
|
"name": "name2",
|
||||||
"description": "desc2",
|
"description": "desc2",
|
||||||
"scheduler": 0,
|
"handler": 0,
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"critical": {
|
"critical": {
|
||||||
"level": 20,
|
"level": 20,
|
||||||
@@ -197,9 +197,9 @@ func TestAlertRuleExtraction(t *testing.T) {
|
|||||||
So(v.Description, ShouldNotBeEmpty)
|
So(v.Description, ShouldNotBeEmpty)
|
||||||
}
|
}
|
||||||
|
|
||||||
Convey("should extract scheduler property", func() {
|
Convey("should extract handler property", func() {
|
||||||
So(alerts[0].Scheduler, ShouldEqual, 1)
|
So(alerts[0].Handler, ShouldEqual, 1)
|
||||||
So(alerts[1].Scheduler, ShouldEqual, 0)
|
So(alerts[1].Handler, ShouldEqual, 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
Convey("should extract panel idc", func() {
|
Convey("should extract panel idc", func() {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func addAlertMigrations(mg *Migrator) {
|
|||||||
{Name: "description", Type: DB_NVarchar, Length: 255, Nullable: false},
|
{Name: "description", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||||
{Name: "state", Type: DB_NVarchar, Length: 255, Nullable: false},
|
{Name: "state", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||||
{Name: "settings", Type: DB_Text, Nullable: false},
|
{Name: "settings", Type: DB_Text, Nullable: false},
|
||||||
{Name: "scheduler", Type: DB_BigInt, Nullable: false},
|
{Name: "handler", Type: DB_BigInt, Nullable: false},
|
||||||
{Name: "enabled", Type: DB_Bool, Nullable: false},
|
{Name: "enabled", Type: DB_Bool, Nullable: false},
|
||||||
{Name: "created", Type: DB_DateTime, Nullable: false},
|
{Name: "created", Type: DB_DateTime, Nullable: false},
|
||||||
{Name: "updated", Type: DB_DateTime, Nullable: false},
|
{Name: "updated", Type: DB_DateTime, Nullable: false},
|
||||||
|
|||||||
@@ -58,15 +58,11 @@ export class AlertHandleManager {
|
|||||||
isMoving = false;
|
isMoving = false;
|
||||||
// calculate graph level
|
// calculate graph level
|
||||||
var graphLevel = plot.c2p({left: 0, top: posTop}).y;
|
var graphLevel = plot.c2p({left: 0, top: posTop}).y;
|
||||||
console.log('canvasPos:' + posTop + ' Graph level: ' + graphLevel);
|
|
||||||
graphLevel = parseInt(graphLevel.toFixed(0));
|
graphLevel = parseInt(graphLevel.toFixed(0));
|
||||||
levelModel.level = graphLevel;
|
levelModel.level = graphLevel;
|
||||||
console.log(levelModel);
|
|
||||||
|
|
||||||
var levelCanvasPos = plot.p2c({x: 0, y: graphLevel});
|
var levelCanvasPos = plot.p2c({x: 0, y: graphLevel});
|
||||||
console.log('canvas pos', levelCanvasPos);
|
|
||||||
|
|
||||||
console.log('stopped');
|
|
||||||
handleElem.off("mousemove", dragging);
|
handleElem.off("mousemove", dragging);
|
||||||
handleElem.off("mouseup", dragging);
|
handleElem.off("mouseup", dragging);
|
||||||
|
|
||||||
@@ -80,7 +76,6 @@ export class AlertHandleManager {
|
|||||||
isMoving = true;
|
isMoving = true;
|
||||||
lastY = null;
|
lastY = null;
|
||||||
posTop = handleElem.position().top;
|
posTop = handleElem.position().top;
|
||||||
console.log('start pos', posTop);
|
|
||||||
|
|
||||||
handleElem.on("mousemove", dragging);
|
handleElem.on("mousemove", dragging);
|
||||||
handleElem.on("mouseup", stopped);
|
handleElem.on("mouseup", stopped);
|
||||||
@@ -109,12 +104,10 @@ export class AlertHandleManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (handleElem.length === 0) {
|
if (handleElem.length === 0) {
|
||||||
console.log('creating handle');
|
|
||||||
handleElem = $(this.getFullHandleHtml(type, model.op, levelStr));
|
handleElem = $(this.getFullHandleHtml(type, model.op, levelStr));
|
||||||
this.placeholder.append(handleElem);
|
this.placeholder.append(handleElem);
|
||||||
this.setupDragging(handleElem, model);
|
this.setupDragging(handleElem, model);
|
||||||
} else {
|
} else {
|
||||||
console.log('reusing handle!');
|
|
||||||
handleElem.html(this.getHandleInnerHtml(type, model.op, levelStr));
|
handleElem.html(this.getHandleInnerHtml(type, model.op, levelStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export class AlertTabCtrl {
|
|||||||
panel: any;
|
panel: any;
|
||||||
panelCtrl: any;
|
panelCtrl: any;
|
||||||
metricTargets = [{ refId: '- select query -' } ];
|
metricTargets = [{ refId: '- select query -' } ];
|
||||||
schedulers = [{text: 'Grafana', value: 1}, {text: 'External', value: 0}];
|
handlers = [{text: 'Grafana', value: 1}, {text: 'External', value: 0}];
|
||||||
transforms = [
|
transforms = [
|
||||||
{
|
{
|
||||||
text: 'Aggregation',
|
text: 'Aggregation',
|
||||||
@@ -49,7 +49,7 @@ export class AlertTabCtrl {
|
|||||||
frequency: '60s',
|
frequency: '60s',
|
||||||
notify: [],
|
notify: [],
|
||||||
enabled: false,
|
enabled: false,
|
||||||
scheduler: 1,
|
handler: 1,
|
||||||
warn: { op: '>', level: undefined },
|
warn: { op: '>', level: undefined },
|
||||||
critical: { op: '>', level: undefined },
|
critical: { op: '>', level: undefined },
|
||||||
query: {
|
query: {
|
||||||
@@ -104,7 +104,6 @@ export class AlertTabCtrl {
|
|||||||
|
|
||||||
// init the query part components model
|
// init the query part components model
|
||||||
this.query = new QueryPart(this.queryParams, alertQueryDef);
|
this.query = new QueryPart(this.queryParams, alertQueryDef);
|
||||||
this.convertThresholdsToAlertThresholds();
|
|
||||||
this.transformDef = _.findWhere(this.transforms, {type: this.alert.transform.type});
|
this.transformDef = _.findWhere(this.transforms, {type: this.alert.transform.type});
|
||||||
|
|
||||||
this.panelCtrl.editingAlert = true;
|
this.panelCtrl.editingAlert = true;
|
||||||
@@ -136,22 +135,8 @@ export class AlertTabCtrl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
convertThresholdsToAlertThresholds() {
|
operatorChanged() {
|
||||||
// if (this.panel.grid
|
this.panelCtrl.render();
|
||||||
// && this.panel.grid.threshold1
|
|
||||||
// && this.alert.warnLevel === undefined
|
|
||||||
// ) {
|
|
||||||
// this.alert.warning.op = '>';
|
|
||||||
// this.alert.warning.level = this.panel.grid.threshold1;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (this.panel.grid
|
|
||||||
// && this.panel.grid.threshold2
|
|
||||||
// && this.alert.critical.level === undefined
|
|
||||||
// ) {
|
|
||||||
// this.alert.critical.op = '>';
|
|
||||||
// this.alert.critical.level = this.panel.grid.threshold2;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete() {
|
delete() {
|
||||||
|
|||||||
@@ -41,21 +41,21 @@
|
|||||||
<div class="gf-form-group section">
|
<div class="gf-form-group section">
|
||||||
<h5 class="section-heading">Levels</h5>
|
<h5 class="section-heading">Levels</h5>
|
||||||
<div class="gf-form-inline">
|
<div class="gf-form-inline">
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label">
|
|
||||||
<i class="icon-gf icon-gf-warn alert-icon-warn"></i>
|
|
||||||
Warn if
|
|
||||||
</span>
|
|
||||||
<metric-segment-model property="ctrl.alert.warn.op" options="ctrl.levelOpList" custom="false" css-class="query-segment-operator"></metric-segment-model>
|
|
||||||
<input class="gf-form-input max-width-7" type="number" ng-model="ctrl.alert.warn.level" ng-change="ctrl.levelsUpdated()"></input>
|
|
||||||
</div>
|
|
||||||
<div class="gf-form">
|
|
||||||
<span class="gf-form-label">
|
<span class="gf-form-label">
|
||||||
<i class="icon-gf icon-gf-warn alert-icon-critical"></i>
|
<i class="icon-gf icon-gf-warn alert-icon-critical"></i>
|
||||||
Critcal if
|
Critcal if
|
||||||
</span>
|
</span>
|
||||||
<metric-segment-model property="ctrl.alert.critical.op" options="ctrl.levelOpList" custom="false" css-class="query-segment-operator"></metric-segment-model>
|
<metric-segment-model property="ctrl.alert.critical.op" options="ctrl.levelOpList" custom="false" css-class="query-segment-operator" on-change="ctrl.operatorChanged()"></metric-segment-model>
|
||||||
<input class="gf-form-input max-width-7" type="number" ng-model="ctrl.alert.critical.level" ng-change="ctrl.levelsUpdated()"></input>
|
<input class="gf-form-input max-width-7" type="number" ng-model="ctrl.alert.critical.level" ng-change="ctrl.levelsUpdated()"></input>
|
||||||
|
</div>
|
||||||
|
<div class="gf-form">
|
||||||
|
<span class="gf-form-label">
|
||||||
|
<i class="icon-gf icon-gf-warn alert-icon-warn"></i>
|
||||||
|
Warn if
|
||||||
|
</span>
|
||||||
|
<metric-segment-model property="ctrl.alert.warn.op" options="ctrl.levelOpList" custom="false" css-class="query-segment-operator" on-change="ctrl.operatorChanged()"></metric-segment-model>
|
||||||
|
<input class="gf-form-input max-width-7" type="number" ng-model="ctrl.alert.warn.level" ng-change="ctrl.levelsUpdated()"></input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,11 +66,11 @@
|
|||||||
<h5 class="section-heading">Execution</h5>
|
<h5 class="section-heading">Execution</h5>
|
||||||
<div class="gf-form-inline">
|
<div class="gf-form-inline">
|
||||||
<div class="gf-form">
|
<div class="gf-form">
|
||||||
<span class="gf-form-label">Scheduler</span>
|
<span class="gf-form-label">Handler</span>
|
||||||
<div class="gf-form-select-wrapper">
|
<div class="gf-form-select-wrapper">
|
||||||
<select class="gf-form-input"
|
<select class="gf-form-input"
|
||||||
ng-model="ctrl.alert.scheduler"
|
ng-model="ctrl.alert.handler"
|
||||||
ng-options="f.value as f.text for f in ctrl.schedulers">
|
ng-options="f.value as f.text for f in ctrl.handlers">
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user