Merge branch 'master' of https://github.com/xiaohuiz/grafana-zabbix into xiaohuiz-master

This commit is contained in:
Alexander Zobnin
2016-07-30 18:03:16 +03:00
3 changed files with 62 additions and 1 deletions

View File

@@ -47,6 +47,7 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
}, },
// Handle API errors // Handle API errors
function(error) { function(error) {
console.log('Zabbix error: '+error.data);
if (isNotAuthorized(error.data)) { if (isNotAuthorized(error.data)) {
return self.loginOnce().then( return self.loginOnce().then(
function() { function() {
@@ -113,6 +114,13 @@ function ZabbixAPIService($q, alertSrv, zabbixAPICoreService) {
//////////////////////////////// ////////////////////////////////
// Zabbix API method wrappers // // Zabbix API method wrappers //
//////////////////////////////// ////////////////////////////////
acknowledgeEvent(eventid,message){
var params = {
eventids:eventid,
message:message
};
return this.request('event.acknowledge',params);
}
getGroups() { getGroups() {
var params = { var params = {

View File

@@ -94,6 +94,15 @@
<small>{{ack.message}}</small> <small>{{ack.message}}</small>
</td> </td>
</tr> </tr>
<tr ng-if="trigger.newAct">
<td>
<small>{{trigger.newAct.time}}</small>
</td>
<td>
<small>{{trigger.newAct.user}}</small>
</td>
<td><input ng-model="trigger.newAct.message" size="80" ng-blur="ctrl.acknowledgeTrigger({keyCode:13},trigger,trigger.newAct)" ng-keyup="ctrl.acknowledgeTrigger($event,trigger,trigger.newAct)"/></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@@ -127,6 +136,14 @@
bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'"> bs-tooltip="'Acknowledges ({{trigger.acknowledges.length}})'">
<i class="fa fa-comments"></i> <i class="fa fa-comments"></i>
</a> </a>
<!-- Acknowledge events -->
<a ng-if="trigger.acknowledges === undefined"
role="button"
ng-click="ctrl.addAcknowledgeMessage(trigger)"
bs-tooltip="'acknowledge this event'">
<i class="fa fa-comments-o"></i>
</a>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View File

@@ -59,10 +59,11 @@ var defaultTimeFormat = "DD MMM YYYY HH:mm:ss";
class TriggerPanelCtrl extends MetricsPanelCtrl { class TriggerPanelCtrl extends MetricsPanelCtrl {
/** @ngInject */ /** @ngInject */
constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv) { constructor($scope, $injector, $q, $element, datasourceSrv, templateSrv,contextSrv) {
super($scope, $injector); super($scope, $injector);
this.datasourceSrv = datasourceSrv; this.datasourceSrv = datasourceSrv;
this.templateSrv = templateSrv; this.templateSrv = templateSrv;
this.contextSrv = contextSrv;
this.triggerStatusMap = triggerStatusMap; this.triggerStatusMap = triggerStatusMap;
this.defaultTimeFormat = defaultTimeFormat; this.defaultTimeFormat = defaultTimeFormat;
@@ -227,6 +228,41 @@ class TriggerPanelCtrl extends MetricsPanelCtrl {
switchAcknowledges(trigger) { switchAcknowledges(trigger) {
trigger.showAcknowledges = !trigger.showAcknowledges; trigger.showAcknowledges = !trigger.showAcknowledges;
} }
addAcknowledgeMessage(trigger){
trigger.showAcknowledges = true;
trigger.newAct={
time:new Date(),
user:this.contextSrv.user.name+'(Grafana)',
eventid:trigger.lastEvent.eventid,
message:''
};
}
acknowledgeTrigger($event,trigger,newAct){
if($event.keyCode!=13) return;
if(newAct.message.trim() === ""){
delete trigger.newAct;
trigger.showAcknowledges = false;
return;
}
this.datasourceSrv.get(this.panel.datasource).then(datasource => {
var zabbix = datasource.zabbixAPI;
zabbix.acknowledgeEvent(newAct.eventid,newAct.user+': '+newAct.message)
.then(rs=>{
zabbix.getAcknowledges(rs.eventids).then(events => {
_.each(events, event => {
trigger.acknowledges = _.map(event.acknowledges, ack => {
var time = new Date(+ack.clock * 1000);
ack.time = time.toLocaleString();
ack.user = ack.alias + ' (' + ack.name + ' ' + ack.surname + ')';
return ack;
});
});
delete trigger.newAct;
console.log('event id '+ rs.eventids.join() + ' new message added: ' + ack.message );
});
});
});
}
} }
TriggerPanelCtrl.templateUrl = 'panel-triggers/module.html'; TriggerPanelCtrl.templateUrl = 'panel-triggers/module.html';