Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Unify queryAlerts() methods
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasponce committed Sep 16, 2015
1 parent e3fecac commit acee724
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 216 deletions.
4 changes: 3 additions & 1 deletion console/src/main/scripts/plugins/metrics/ts/metricsAlerts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,9 @@ module HawkularMetrics {
this.alertsTimeEnd = this.$routeParams.endTime ? this.$routeParams.endTime : (new Date()).getTime();
this.alertsTimeStart = this.alertsTimeEnd - this.alertsTimeOffset;

this.HawkularAlertsManager.queryConsoleAlerts(this.metricId, this.alertsTimeStart, this.alertsTimeEnd, undefined,
let triggerIds = this.metricId + '_trigger_avail,' + this.metricId + '_trigger_thres';

this.HawkularAlertsManager.queryAlerts(triggerIds, this.alertsTimeStart, this.alertsTimeEnd,
this.resCurPage, this.resPerPage).then((queriedAlerts)=> {
this.headerLinks = this.HkHeaderParser.parse(queriedAlerts.headers);
_.forEach(queriedAlerts.alertList, (item) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ module HawkularMetrics {
}

private getAlerts(metricId:string, startTime:TimestampInMillis, endTime:TimestampInMillis):void {
this.HawkularAlertsManager.queryConsoleAlerts(metricId, startTime, endTime,
HawkularMetrics.AlertType.AVAILABILITY).then((alertAvailData)=> {
let triggerIds = metricId + '_trigger_avail';
this.HawkularAlertsManager.queryAlerts(triggerIds, startTime, endTime).then((alertAvailData)=> {
_.forEach(alertAvailData.alertList, (item) => { item['alertType']='PINGAVAIL';});
this.alertList = alertAvailData.alertList;
}, (error) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ module HawkularMetrics {
}

private getAlerts(metricId:MetricId, startTime:TimestampInMillis, endTime:TimestampInMillis):void {
this.HawkularAlertsManager.queryConsoleAlerts(metricId, startTime, endTime,
HawkularMetrics.AlertType.THRESHOLD).then((responseAlertData)=> {
let triggerIds = metricId + '_trigger_thres';
this.HawkularAlertsManager.queryAlerts(triggerIds, startTime, endTime).then((responseAlertData)=> {
_.forEach(responseAlertData.alertList, (item) => { item['alertType']='PINGRESPONSE';});
this.alertList = responseAlertData.alertList;
}, (error) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ module HawkularMetrics {
export type PathId = string;
export type MetricId = string;
export type TriggerId = string;
export type TriggerIds = string;
export type ConditionId = string;
export type DampeningId = string;
export type EmailType = string;
Expand Down
328 changes: 117 additions & 211 deletions console/src/main/scripts/plugins/metrics/ts/services/alertsManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,6 @@ module HawkularMetrics {
getAction(email: EmailType): ng.IPromise<void>;
getActions(triggerId: TriggerId): ng.IPromise<void>;
setEmail(triggerId: TriggerId, email: EmailType): ng.IPromise<void>;
queryConsoleAlerts(metricId: MetricId, startTime?:TimestampInMillis, endTime?:TimestampInMillis, type?:AlertType,
currentPage?:number, perPage?:number): any;
queryAlerts(metricId: MetricId, startTime?:TimestampInMillis,
endTime?:TimestampInMillis, currentPage?:number, perPage?:number): any;

// Alerts

Expand All @@ -47,6 +43,20 @@ module HawkularMetrics {
*/
queryAllAlerts(): ng.IPromise<any>;

/**
* @name queryAlerts
* @desc Fetch Alerts with different criterias
* @param triggerdIds - A string with a comma separated list with triggersId to query
* @param startTime - Start time of Alerts interval to fetch
* @param endTime - End time of Alerts interval to fetch
* @param currentPage - Page to fetch
* @param perPage - Number of Alerts per page to fetch
* @returns {ng.IPromise} with a list of Alerts
*/
queryAlerts(triggerIds: TriggerIds, startTime?:TimestampInMillis,
endTime?:TimestampInMillis, currentPage?:number, perPage?:number): ng.IPromise<any>;


/**
* @name resolveAlerts
* @desc Mark as resolved a list of alerts*
Expand Down Expand Up @@ -154,10 +164,112 @@ module HawkularMetrics {
private ErrorsManager: HawkularMetrics.IErrorsManager) {
}

queryAllAlerts(): ng.IPromise<any> {
public queryAllAlerts(): ng.IPromise<any> {
return this.HawkularAlert.Alert.query({statuses: 'OPEN'}).$promise;
}


public queryAlerts(triggerIds: TriggerIds, startTime?:TimestampInMillis, endTime?:TimestampInMillis,
currentPage?:number, perPage?:number): ng.IPromise<any> {
let alertList = [];
let headers;

/* Format of Alerts:
alert: {
type: 'THRESHOLD' or 'AVAILABILITY',
avg: Average value based on the evalSets 'values',
start: The time of the first data ('dataTimestamp') in evalSets,
threshold: The threshold taken from condition.threshold,
end: The time when the alert was sent ('ctime')
}
*/

let queryParams = {
statuses:'OPEN'
};

if (currentPage || currentPage === 0) {
queryParams['page'] = currentPage;
}

if (perPage) {
queryParams['per_page'] = perPage;
}

queryParams['triggerIds'] = triggerIds;

if (startTime) {
queryParams['startTime'] = startTime;
}

if (endTime) {
queryParams['endTime'] = endTime;
}

return this.HawkularAlert.Alert.query(queryParams, (serverAlerts: any, getHeaders: any) => {

headers = getHeaders();
let momentNow = this.$moment();

for (let i = 0; i < serverAlerts.length; i++) {
let consoleAlert: any = {};
let serverAlert = serverAlerts[i];

consoleAlert.id = serverAlert.alertId;

consoleAlert.dataId = serverAlert.evalSets[0][0].condition.dataId;

consoleAlert.end = serverAlert.ctime;

let sum: number = 0.0;
let count: number = 0.0;

for (let j = 0; j < serverAlert.evalSets.length; j++) {
let evalItem = serverAlert.evalSets[j][0];

if (!consoleAlert.start && evalItem.dataTimestamp) {
consoleAlert.start = evalItem.dataTimestamp;
}

if (!consoleAlert.threshold && evalItem.condition.threshold) {
consoleAlert.threshold = evalItem.condition.threshold;
}

if (!consoleAlert.type && evalItem.condition.type) {
consoleAlert.type = evalItem.condition.type;
}

let momentAlert = this.$moment(consoleAlert.end);

if (momentAlert.year() === momentNow.year()) {
consoleAlert.isThisYear = true;
if (momentAlert.dayOfYear() === momentNow.dayOfYear()) {
consoleAlert.isToday = true;
}
}

sum += evalItem.value;
count++;
}

consoleAlert.avg = sum/count;

consoleAlert.durationTime = consoleAlert.end - consoleAlert.start;

alertList.push(consoleAlert);
}
}, (error) => {
this.$log.debug('querying data error', error);
}).$promise.then(()=> {
return {
alertList: alertList,
headers: headers
};
});
}

public resolveAlerts(resolvedAlerts: any): ng.IPromise<any> {
return this.HawkularAlert.Alert.resolve(resolvedAlerts, {}).$promise;
}
Expand Down Expand Up @@ -343,212 +455,6 @@ module HawkularMetrics {
});
}

public queryConsoleAlerts(metricId: MetricId, startTime?:TimestampInMillis,
endTime?:TimestampInMillis, alertType?:AlertType,
currentPage?:number, perPage?:number): any {
let alertList = [];
let headers;

/* Format of Alerts:
alert: {
type: 'THRESHOLD' or 'AVAILABILITY'
avg: Average value based on the evalSets 'values'
start: The time of the first data ('dataTimestamp') in evalSets
threshold: The threshold taken from condition.threshold
end: The time when the alert was sent ('ctime')
}
*/

let queryParams = {
statuses:'OPEN'
};

if (currentPage || currentPage === 0) {
queryParams['page'] = currentPage;
}

if (perPage) {
queryParams['per_page'] = perPage;
}

if (alertType === AlertType.AVAILABILITY) {
queryParams['triggerIds'] = metricId+'_trigger_avail';
} else if (alertType === AlertType.THRESHOLD) {
queryParams['triggerIds'] = metricId+'_trigger_thres';
} else {
queryParams['triggerIds'] = metricId+'_trigger_avail,' + metricId+'_trigger_thres';
}

if (startTime) {
queryParams['startTime'] = startTime;
}

if (endTime) {
queryParams['endTime'] = endTime;
}

return this.HawkularAlert.Alert.query(queryParams, (serverAlerts: any, getHeaders: any) => {

headers = getHeaders();
let momentNow = this.$moment();

for (let i = 0; i < serverAlerts.length; i++) {
let consoleAlert: any = {};
let serverAlert = serverAlerts[i];

consoleAlert.id = serverAlert.alertId;
consoleAlert.end = serverAlert.ctime;

let sum: number = 0.0;
let count: number = 0.0;

for (let j = 0; j < serverAlert.evalSets.length; j++) {
let evalItem = serverAlert.evalSets[j][0];

if (!consoleAlert.start && evalItem.dataTimestamp) {
consoleAlert.start = evalItem.dataTimestamp;
}

if (!consoleAlert.threshold && evalItem.condition.threshold) {
consoleAlert.threshold = evalItem.condition.threshold;
}

if (!consoleAlert.type && evalItem.condition.type) {
consoleAlert.type = evalItem.condition.type;
}

let momentAlert = this.$moment(consoleAlert.end);

if (momentAlert.year() === momentNow.year()) {
consoleAlert.isThisYear = true;
if (momentAlert.dayOfYear() === momentNow.dayOfYear()) {
consoleAlert.isToday = true;
}
}

sum += evalItem.value;
count++;
}

consoleAlert.avg = sum/count;

consoleAlert.durationTime = consoleAlert.end - consoleAlert.start;

alertList.push(consoleAlert);
}
}, (error) => {
this.$log.debug('querying data error', error);
}).$promise.then(()=> {
return {
alertList: alertList,
headers: headers
};
});
}


public queryAlerts(metricId: MetricId, startTime?:TimestampInMillis, endTime?:TimestampInMillis,
currentPage?:number, perPage?:number): any {
let alertList = [];
let headers;

/* Format of Alerts:
alert: {
type: 'THRESHOLD' or 'AVAILABILITY'
avg: Average value based on the evalSets 'values'
start: The time of the first data ('dataTimestamp') in evalSets
threshold: The threshold taken from condition.threshold
end: The time when the alert was sent ('ctime')
}
*/

let queryParams = {
statuses:'OPEN'
};

if (currentPage || currentPage === 0) {
queryParams['page'] = currentPage;
}

if (perPage) {
queryParams['per_page'] = perPage;
}

queryParams['triggerIds'] = metricId;

if (startTime) {
queryParams['startTime'] = startTime;
}

if (endTime) {
queryParams['endTime'] = endTime;
}

return this.HawkularAlert.Alert.query(queryParams, (serverAlerts: any, getHeaders: any) => {

headers = getHeaders();
let momentNow = this.$moment();

for (let i = 0; i < serverAlerts.length; i++) {
let consoleAlert: any = {};
let serverAlert = serverAlerts[i];

consoleAlert.id = serverAlert.alertId;

consoleAlert.dataId = serverAlert.evalSets[0][0].condition.dataId;

consoleAlert.end = serverAlert.ctime;

let sum: number = 0.0;
let count: number = 0.0;

for (let j = 0; j < serverAlert.evalSets.length; j++) {
let evalItem = serverAlert.evalSets[j][0];

if (!consoleAlert.start && evalItem.dataTimestamp) {
consoleAlert.start = evalItem.dataTimestamp;
}

if (!consoleAlert.threshold && evalItem.condition.threshold) {
consoleAlert.threshold = evalItem.condition.threshold;
}

if (!consoleAlert.type && evalItem.condition.type) {
consoleAlert.type = evalItem.condition.type;
}

let momentAlert = this.$moment(consoleAlert.end);

if (momentAlert.year() === momentNow.year()) {
consoleAlert.isThisYear = true;
if (momentAlert.dayOfYear() === momentNow.dayOfYear()) {
consoleAlert.isToday = true;
}
}

sum += evalItem.value;
count++;
}

consoleAlert.avg = sum/count;

consoleAlert.durationTime = consoleAlert.end - consoleAlert.start;

alertList.push(consoleAlert);
}
}, (error) => {
this.$log.debug('querying data error', error);
}).$promise.then(()=> {
return {
alertList: alertList,
headers: headers
};
});
}


}
Expand Down

0 comments on commit acee724

Please sign in to comment.