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

Commit

Permalink
Refactor alertsManager.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasponce committed Sep 15, 2015
1 parent 4bf868b commit 79e75a5
Show file tree
Hide file tree
Showing 6 changed files with 430 additions and 265 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ module HawkularMetrics {

let connTriggerId = this.resourceId + '_ds_conn';

let connDefinitionPromise = this.HawkularAlertsManager.getAlertDefinition(connTriggerId)
let connDefinitionPromise = this.HawkularAlertsManager.getTrigger(connTriggerId)
.then((alertDefinitionData) => {
this.$log.debug('alertDefinitionData', 'conn', alertDefinitionData);
this.triggerDefinition['conn'] = alertDefinitionData;
Expand All @@ -43,7 +43,7 @@ module HawkularMetrics {

let respTriggerId = this.resourceId + '_ds_resp';

let respDefinitionPromise = this.HawkularAlertsManager.getAlertDefinition(respTriggerId)
let respDefinitionPromise = this.HawkularAlertsManager.getTrigger(respTriggerId)
.then((alertDefinitionData) => {

this.$log.debug('alertDefinitionData', 'resp', alertDefinitionData);
Expand Down Expand Up @@ -93,7 +93,7 @@ module HawkularMetrics {
connAlertDefinition.conditions[0].threshold = this.adm.conn.conditionThreshold;
}

let connSavePromise = this.HawkularAlertsManager.saveAlertDefinition(connAlertDefinition,
let connSavePromise = this.HawkularAlertsManager.updateTrigger(connAlertDefinition,
errorCallback, this.triggerDefinition.conn);

// Responsiveness part
Expand All @@ -117,22 +117,33 @@ module HawkularMetrics {
let condWaitPromise = condWaitDefer.promise;

if (!this.adm.resp.waitTimeEnabled && this.admBak.resp.waitTimeEnabled) {
/*
FIXME: To update the trigger without this condition
NOTE: This is commented here, as in alerts 0.4.x conditions are managed as a block in one call
*/
// delete
/*
condWaitPromise = this.HawkularAlertsManager.deleteCondition(respTriggerId,
respAlertDefinition.conditions[idWait].conditionId);

*/
delete respAlertDefinition.conditions[idWait];
} else if (this.adm.resp.waitTimeEnabled && !this.admBak.resp.waitTimeEnabled) {
/*
FIXME: To update the trigger with a new condition
NOTE: This si commented here, as in alerts 0.4.x conditions are managed as a block in one call
*/
// create
let resId = respTriggerId.slice(0,-8);

/*
condWaitPromise = this.HawkularAlertsManager.createCondition(respTriggerId, {
triggerId: respTriggerId,
type: 'THRESHOLD',
dataId: 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Get Time',
threshold: this.adm.resp.waitTimeThreshold,
operator: 'GT'
});
*/
} else {
condWaitDefer.resolve();
}
Expand All @@ -143,22 +154,32 @@ module HawkularMetrics {

// FIXME: The condition id changes if previous was added/deleted ..
if (!self.adm.resp.creationTimeEnabled && self.admBak.resp.creationTimeEnabled) {
/*
FIXME: To update the trigger without this condition
NOTE: This is commented here, as in alerts 0.4.x conditions are managed as a block in one call
*/
// delete
/*
condCreaPromise = self.HawkularAlertsManager.deleteCondition(respTriggerId,
respAlertDefinition.conditions[idCreation].conditionId);

*/
delete respAlertDefinition.conditions[idCreation];
} else if (self.adm.resp.creationTimeEnabled && !self.admBak.resp.creationTimeEnabled) {
/*
FIXME: To update the trigger with a new condition
NOTE: This si commented here, as in alerts 0.4.x conditions are managed as a block in one call
*/
// create
let resId = respTriggerId.slice(0,-8);

/*
condCreaPromise = self.HawkularAlertsManager.createCondition(respTriggerId, {
triggerId: respTriggerId,
type: 'THRESHOLD',
dataId: 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Creation Time',
threshold: self.adm.resp.creationTimeThreshold,
operator: 'GT'
});
*/
} else {
condCreaDefer.resolve();
}
Expand All @@ -170,7 +191,7 @@ module HawkularMetrics {
respAlertDefinition.conditions[idCreation].threshold = this.adm.resp.creationTimeThreshold;
}

let respSavePromise = this.HawkularAlertsManager.saveAlertDefinition(respAlertDefinition,
let respSavePromise = this.HawkularAlertsManager.updateTrigger(respAlertDefinition,
errorCallback, this.triggerDefinition.resp);

console.log('@PROMISES', connSavePromise, respSavePromise, condWaitPromise, condCreaPromise);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,58 +110,93 @@ module HawkularMetrics {
public openSetup(resId):void {
// Check if trigger exists on alerts setup modal open. If not, create the trigger before opening the modal

let connTriggerPromise = this.HawkularAlertsManager.getTrigger(resId + '_ds_conn').then(() => {
let connTriggerPromise = this.HawkularAlertsManager.existTrigger(resId + '_ds_conn').then(() => {
// Datasource connection trigger exists, nothing to do
this.$log.debug('Datasource connection trigger exists, nothing to do');
}, () => {
/// Datasource connection trigger doesn't exist, need to create one

let triggerId:string = resId + '_ds_conn';
let dataId:string = 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Available Count';
let fullTrigger = {
trigger: {
name: triggerId,
id: triggerId,
actions: {email: [this.defaultEmail]}
},
dampenings: [
{
triggerId: triggerId,
evalTimeSetting: 7 * 60000,
triggerMode: 'FIRING',
type: 'STRICT_TIME'
}
],
conditions: [
{
triggerId: triggerId,
type: 'THRESHOLD',
dataId: dataId,
threshold: AppServerDatasourcesDetailsController.DEFAULT_CONN_THRESHOLD,
operator: 'LT'
}
]
};

return this.HawkularAlertsManager.createAlertDefinition({
name: triggerId,
id: triggerId,
actions: {email: [this.defaultEmail]}
}, {
triggerId: triggerId,
type: 'THRESHOLD',
dataId: dataId,
threshold: AppServerDatasourcesDetailsController.DEFAULT_CONN_THRESHOLD,
operator: 'LT'
return this.HawkularAlertsManager.createTrigger(fullTrigger, () => {
this.$log.error('Error on Trigger creation for ' + triggerId);
});
});

let respTriggerPromise = this.HawkularAlertsManager.getTrigger(resId + '_ds_resp').then(() => {
let respTriggerPromise = this.HawkularAlertsManager.existTrigger(resId + '_ds_resp').then(() => {
/// Datasource responsiveness trigger exists, nothing to do
this.$log.debug('Datasource responsiveness trigger exists, nothing to do');
}, () => {
/// Datasource responsiveness trigger doesn't exist, need to create one
let triggerId:string = resId + '_ds_resp';
let dataId:string = 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Get Time';

return this.HawkularAlertsManager.createAlertDefinition({
name: triggerId,
id: triggerId,
actions: {email: [this.defaultEmail]}
}, {
triggerId: triggerId,
type: 'THRESHOLD',
dataId: dataId,
threshold: AppServerDatasourcesDetailsController.DEFAULT_WAIT_THRESHOLD,
operator: 'GT'
}).then(()=> {
let triggerId:string = resId + '_ds_resp';
let dataId:string = 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Creation Time';

return this.HawkularAlertsManager.createCondition(triggerId, {
triggerId: triggerId,
type: 'THRESHOLD',
dataId: dataId,
threshold: AppServerDatasourcesDetailsController.DEFAULT_CREA_THRESHOLD,
operator: 'GT'
});
let dataId1:string = 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Get Time';
let dataId2:string = 'MI~R~[' + resId + ']~MT~Datasource Pool Metrics~Average Creation Time';
let fullTrigger = {
trigger: {
name: triggerId,
id: triggerId,
firingMatch: 'ANY',
actions: {email: [this.defaultEmail]}
},
dampenings: [
{
triggerId: triggerId,
evalTimeSetting: 7 * 60000,
triggerMode: 'FIRING',
type: 'STRICT_TIME'
}
],
conditions: [
{
triggerId: triggerId,
conditionSetSize: 2,
conditionSetIndex: 1,
type: 'THRESHOLD',
dataId: dataId1,
threshold: AppServerDatasourcesDetailsController.DEFAULT_WAIT_THRESHOLD,
operator: 'GT'
},
{
triggerId: triggerId,
conditionSetSize: 2,
conditionSetIndex: 2,
type: 'THRESHOLD',
dataId: dataId2,
threshold: AppServerDatasourcesDetailsController.DEFAULT_CREA_THRESHOLD,
operator: 'GT'
}
]
};

return this.HawkularAlertsManager.createTrigger(fullTrigger, () => {
this.$log.error('Error on Trigger creation for ' + triggerId);
});

});

let log = this.$log;
Expand Down

0 comments on commit 79e75a5

Please sign in to comment.