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

Commit

Permalink
Merge branch 'master' into integration-latest-of-everything
Browse files Browse the repository at this point in the history
 Conflicts:
	console/src/main/scripts/plugins/metrics/ts/alertsManager.ts
	console/src/main/scripts/plugins/metrics/ts/metricsResponsePage.ts
  • Loading branch information
jkremser committed Jul 22, 2015
2 parents a05d8ba + 21ab7d3 commit 8c21500
Show file tree
Hide file tree
Showing 9 changed files with 250 additions and 140 deletions.
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ the overall Hawkular instance

ifdef::env-github[]
[link=https://travis-ci.org/hawkular/hawkular]
image:https://travis-ci.org/hawkular/hawkular.svg["Build Status", link="https://travis-ci.org/hawkular/hawkular"]
image:https://travis-ci.org/hawkular/hawkular.svg?branch=master["Build Status", link="https://travis-ci.org/hawkular/hawkular"]
endif::[]

== Building
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
/// limitations under the License.
///

/// <reference path="../../includes.ts"/>
module HawkularAccounts {
export var pluginName = 'hawkular-accounts';
export var log:Logging.Logger = Logger.get(pluginName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
/// limitations under the License.
///

/// <reference path='../../includes.ts'/>
/// <reference path='accountsGlobals.ts'/>
module HawkularAccounts {
export var _module = angular.module(HawkularAccounts.pluginName, ['ui.bootstrap']);
Expand Down
14 changes: 4 additions & 10 deletions console/src/main/scripts/plugins/metrics/html/availability.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,11 @@ <h3 class="pull-left">Availability Status</h3>
<span class="hk-item">Availability</span>
</div>
<div class="col-sm-3 hk-summary-item">
<!--
<span class="hk-data" ng-if="vm.downtimeDuration < 60000">{{ vm.downtimeDuration / 1000 | nduration:'s\' seconds\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 60000 && vm.downtimeDuration < 7200000">{{ vm.downtimeDuration | nduration:'m\' minutes and \'ss\' seconds\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 7200000 && vm.downtimeDuration < 172800000">{{ vm.downtimeDuration | nduration:'h\' hours and \'m\' minutes\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 172800000">{{ vm.downtimeDuration | nduration:'d\' days and \'h\' hours\'' }}</span>
-->
<span class="hk-data" ng-hide="vm.downtimeDuration">Always Up</span>
<span class="hk-data" ng-if="vm.downtimeDuration && vm.downtimeDuration < 60000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'ss\'s\'' }}">{{ vm.downtimeDuration | duration:'s\' seconds\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 60000 && vm.downtimeDuration < 7200000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'mm\'m\'ss\'s\'' }}">{{ vm.downtimeDuration | duration:'m\' minutes\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 7200000 && vm.downtimeDuration < 172800000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'hh\'h\'mm\'m\'ss\'s\'' }}">{{ vm.downtimeDuration | duration:'h\' hours\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 172800000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'d\'d \'hh\'h\'mm\'m\'ss\'s\'' }}">{{ vm.downtimeDuration | duration:'d\' days\'' }}</span>
<span class="hk-data" ng-if="vm.downtimeDuration && vm.downtimeDuration < 60000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'ss\'s\'' }}" ng-bind-html="vm.downtimeDuration | duration:'s\'<span> seconds</span>\''"></span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 60000 && vm.downtimeDuration < 7200000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'mm\'m\'ss\'s\'' }}" ng-bind-html="vm.downtimeDuration | duration:'m\'<span> minutes</span>\' s\'<span> seconds</span>\''"></span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 7200000 && vm.downtimeDuration < 172800000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'hh\'h\'mm\'m\'ss\'s\'' }}" ng-bind-html="vm.downtimeDuration | duration:'h\'<span> hours</span>\' m\'<span> minutes</span>\''"></span>
<span class="hk-data" ng-if="vm.downtimeDuration >= 172800000" tooltip-trigger tooltip-placement="top" tooltip-popup-delay="1500" tooltip="{{ vm.downtimeDuration | duration:'d\'d \'hh\'h\'mm\'m\'ss\'s\'' }}" ng-bind-html="vm.downtimeDuration | duration:'d\'<span> days</span>\' h\'<span> hours</span>\''"></span>
<span class="hk-item">Total Downtime Duration</span>
</div>
<div class="col-sm-3 hk-summary-item">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ <h3 class="pull-left">Response Time Status</h3>
<!-- Alerts -->
<div class="hk-info-top clearfix">
<h3 class="pull-left" data-toggle="tooltip" data-placement="top" title="" data-original-title="Expand/collapse">
<button class="btn btn-link hk-trigger" ng-click="showAllAlerts = !showAllAlerts"><i class="fa" ng-show="vm.alertList.length > 0" ng-class="showAllAlerts ? 'fa-minus-square-o' : 'fa-plus-square-o'"></i> Alerts <span ng-show="vm.alertList.length > 0">({{showAllAlerts ? vm.alertList.length : vm.math.min(vm.alertList.length, 3)}} of {{vm.alertList.length}})</span></button>
<button class="btn btn-link hk-trigger" ng-click="showAllAlerts = !showAllAlerts">
<i class="fa" ng-show="vm.alertList.length > 0" ng-class="showAllAlerts ? 'fa-minus-square-o' : 'fa-plus-square-o'"></i>
Alerts <span ng-show="vm.alertList.length > 0">({{showAllAlerts ? vm.alertList.length : MetricsViewController.min(vm.alertList.length, 3)}} of {{vm.alertList.length}})</span></button>
</h3>
<span class="hk-settings pull-right"><a href="#" ng-controller="MetricsAlertController as mac" ng-click="mac.openSetup()"><i class="fa fa-cog"></i>Alert Settings</a></span>
</div>
Expand Down
77 changes: 40 additions & 37 deletions console/src/main/scripts/plugins/metrics/ts/alertsManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,40 +26,41 @@ module HawkularMetrics {
}

export interface IHawkularAlertsManager {
addEmailAction(email: string): ng.IPromise<void>;
createAction(email: string): ng.IPromise<void>;
updateTrigger(triggerId: string, data: any): ng.IPromise<void>;
createTrigger(id: string, triggerName: string, enabled: boolean, conditionType: string,
email: string): ng.IPromise<void>;
deleteTrigger(triggerId: string): ng.IPromise<void>;
createCondition(triggerId: string, condition: any): ng.IPromise<void>;
updateCondition(triggerId: string, conditionId: string, condition: any): ng.IPromise<void>;
createDampening(triggerId: string, duration: number, triggerMode?: string): ng.IPromise<void>;
updateDampening(triggerId: string, dampeningId: string, dampening: any): ng.IPromise<void>;
getAction(email: string): ng.IPromise<void>;
getActions(triggerId: string): ng.IPromise<void>;
getTrigger(triggerId: string): ng.IPromise<void>;
setEmail(triggerId: string, email: string): ng.IPromise<void>;
setResponseTime(triggerId: string, treshold: number, duration: number, enabled: boolean): ng.IPromise<void>;
setDowntime(triggerId: string, duration: number, enabled: boolean): ng.IPromise<void>;
queryConsoleAlerts(metricId: string, startTime?:TimestampInMillis, endTime?:TimestampInMillis, type?:AlertType,
addEmailAction(email: EmailType): ng.IPromise<void>;
createAction(email: EmailType): ng.IPromise<void>;
updateTrigger(triggerId: TriggerId, data: any): ng.IPromise<void>;
createTrigger(triggerId: TriggerId, triggerName: string, enabled: boolean, conditionType: string,
email: EmailType): ng.IPromise<void>;
deleteTrigger(triggerId: TriggerId): ng.IPromise<void>;
createCondition(triggerId: TriggerId, condition: any): ng.IPromise<void>;
updateCondition(triggerId: TriggerId, conditionId: ConditionId, condition: any): ng.IPromise<void>;
createDampening(triggerId: TriggerId, duration: number, triggerMode?: string): ng.IPromise<void>;
updateDampening(triggerId: TriggerId, dampeningId: DampeningId, dampening: any): ng.IPromise<void>;
getAction(email: EmailType): ng.IPromise<void>;
getActions(triggerId: TriggerId): ng.IPromise<void>;
getTrigger(triggerId: TriggerId): ng.IPromise<void>;
setEmail(triggerId: TriggerId, email: EmailType): ng.IPromise<void>;
setResponseTime(triggerId: TriggerId, treshold: number, duration: number, enabled: boolean): ng.IPromise<void>;
setDowntime(triggerId: TriggerId, duration: number, enabled: boolean): ng.IPromise<void>;
queryConsoleAlerts(metricId: MetricId, startTime?:TimestampInMillis, endTime?:TimestampInMillis, type?:AlertType,
currentPage?:number, perPage?:number): any;
}

export class HawkularAlertsManager implements IHawkularAlertsManager{

public static $inject = ['HawkularAlert', '$q', '$log', '$moment'];
public static $inject = ['HawkularAlert', '$q', '$log', '$moment','AlertService'];

constructor(private HawkularAlert: any,
private $q: ng.IQService,
private $log: ng.ILogService,
private $moment: any) {
private $moment: any,
private AlertService:any) {
}

public createTrigger(id: string, triggerName: string, enabled: boolean,
conditionType: string, email: string): ng.IPromise<void> {
public createTrigger(id: TriggerId, triggerName: string, enabled: boolean,
conditionType: string, email: EmailType): ng.IPromise<void> {
// Create a trigger
var triggerId: string;
var triggerId: TriggerId;
var DEFAULT_RESOLVE_THRESHOLD = 1000;
var DEFAULT_DAMPENING_INTERVAL = 7 * 60000;
var DEFAULT_AUTORESOLVE_INTERVAL = 5 * 60000;
Expand Down Expand Up @@ -122,23 +123,23 @@ module HawkularMetrics {
});
}

public deleteTrigger(triggerId: string): ng.IPromise<void> {
public deleteTrigger(triggerId: TriggerId): ng.IPromise<void> {
return this.HawkularAlert.Trigger.delete({triggerId: triggerId}).$promise;
}

public updateTrigger(triggerId: string, data: any): ng.IPromise<void> {
public updateTrigger(triggerId: TriggerId, data: any): ng.IPromise<void> {
data.id = triggerId;
return this.HawkularAlert.Trigger.put({triggerId: triggerId}, data).$promise;
}

public getAction(email: string): ng.IPromise<void> {
public getAction(email: EmailType): ng.IPromise<void> {
return this.HawkularAlert.Action.get({
pluginId: 'email',
actionId: email
}).$promise;
}

public createAction(email: string): ng.IPromise<void> {
public createAction(email: EmailType): ng.IPromise<void> {
return this.HawkularAlert.Action.save({
actionPlugin: 'email',
actionId: email,
Expand All @@ -147,7 +148,7 @@ module HawkularMetrics {
}).$promise;
}

public addEmailAction(email: string): ng.IPromise<void> {
public addEmailAction(email: EmailType): ng.IPromise<void> {
return this.getAction(email).then((promiseValue: any) => {
return promiseValue;
}, (reason: any) => {
Expand All @@ -159,7 +160,7 @@ module HawkularMetrics {
});
}

public updateAction(email: string): ng.IPromise<void> {
public updateAction(email: EmailType): ng.IPromise<void> {
return this.HawkularAlert.Action.put({
actionPlugin: 'email',
actionId: email,
Expand All @@ -168,15 +169,15 @@ module HawkularMetrics {
}).$promise;
}

public createCondition(triggerId: string, condition: any): ng.IPromise<void> {
public createCondition(triggerId: TriggerId, condition: any): ng.IPromise<void> {
return this.HawkularAlert.Condition.save({triggerId: triggerId}, condition).$promise;
}

public updateCondition(triggerId: string, conditionId: string, condition: any): ng.IPromise<void> {
public updateCondition(triggerId: TriggerId, conditionId: ConditionId, condition: any): ng.IPromise<void> {
return this.HawkularAlert.Condition.put({triggerId: triggerId, conditionId: conditionId}, condition).$promise;
}

public createDampening(triggerId: string, duration: number, triggerMode?: string): ng.IPromise<void> {
public createDampening(triggerId: TriggerId, duration: number, triggerMode?: string): ng.IPromise<void> {
return this.HawkularAlert.Dampening.save({ triggerId: triggerId }, {
triggerId: triggerId,
evalTimeSetting: duration,
Expand All @@ -185,20 +186,20 @@ module HawkularMetrics {
}).$promise;
}

public updateDampening(triggerId: string, dampeningId: string, dampening: any): ng.IPromise<void> {
public updateDampening(triggerId: TriggerId, dampeningId: DampeningId, dampening: any): ng.IPromise<void> {
dampening.dampeningId = dampeningId;
return this.HawkularAlert.Dampening.put({ triggerId: triggerId, dampeningId: dampeningId }, dampening).$promise;
}

public getActions(triggerId:string): ng.IPromise<void> {
public getActions(triggerId:TriggerId): ng.IPromise<void> {
return undefined;
}

public getTrigger(triggerId: string): ng.IPromise<void> {
public getTrigger(triggerId: TriggerId): ng.IPromise<void> {
return this.HawkularAlert.Trigger.get({ triggerId: triggerId }).$promise;
}

public setEmail(triggerId:string, email:string):ng.IPromise<void> {
public setEmail(triggerId:TriggerId, email:EmailType):ng.IPromise<void> {
var actions = this.getActions(triggerId);
return actions.then((actions)=> {

Expand All @@ -220,11 +221,11 @@ module HawkularMetrics {
});
}

public setResponseTime(triggerId:string, treshold:number, duration:number, enabled:boolean):ng.IPromise<void> {
public setResponseTime(triggerId:TriggerId, treshold:number, duration:number, enabled:boolean):ng.IPromise<void> {
return undefined;
}

public setDowntime(triggerId:string, duration:number, enabled:boolean):ng.IPromise<void> {
public setDowntime(triggerId:TriggerId, duration:number, enabled:boolean):ng.IPromise<void> {
return undefined;
}

Expand Down Expand Up @@ -332,6 +333,8 @@ module HawkularMetrics {
};
});
}


}

_module.service('HawkularAlertsManager', HawkularAlertsManager);
Expand Down
136 changes: 136 additions & 0 deletions console/src/main/scripts/plugins/metrics/ts/metricService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
///
/// Copyright 2015 Red Hat, Inc. and/or its affiliates
/// and other contributors as indicated by the @author tags.
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///

/// <reference path="metricsPlugin.ts"/>
/// @TODO Move to shared service location

module HawkularMetrics {


export interface IMetricResponse {
timestamp: number;
value?: number;
avg: number;
min: number;
max: number;
percentile95th?: number;
median?: number;
}


export interface IContextChartDataPoint {
timestamp: number;
start?: number;
end?: number;
value: number;
avg: number;
empty: boolean;
}

export interface IChartDataPoint extends IContextChartDataPoint {
date: Date;
min: number;
max: number;
percentile95th: number;
median: number;
}

export interface IChartData {
id: MetricId;
startTimeStamp: TimestampInMillis;
endTimeStamp: TimestampInMillis;
dataPoints: IChartDataPoint[];
contextDataPoints: IChartDataPoint[];
annotationDataPoints: IChartDataPoint[];
}

export interface IMetricService {
retrieveGaugeMetric(personaId:PersonaId, metricId:MetricId,
startTime?:TimestampInMillis,
endTime?:TimestampInMillis,
buckets?:number):ng.IPromise<IChartDataPoint[]>;
}

export class MetricService implements IMetricService {

public static $inject = ['$log', 'HawkularMetric', 'AlertService'];

constructor(private $log:ng.ILogService,
private HawkularMetric:any,
private AlertService:IAlertService) {
}


/**
* formatBucketedChartOutput
* @param response
* @returns {any}
*/
public static formatBucketedChartOutput(response):IChartDataPoint[] {
// The schema is different for bucketed output
return _.map(response, (point:IChartDataPoint) => {
return {
timestamp: point.start,
date: new Date(point.start),
value: !angular.isNumber(point.value) ? 0 : point.value,
avg: (point.empty) ? 0 : point.avg,
min: !angular.isNumber(point.min) ? 0 : point.min,
max: !angular.isNumber(point.max) ? 0 : point.max,
percentile95th: !angular.isNumber(point.percentile95th) ? 0 : point.percentile95th,
median: !angular.isNumber(point.median) ? 0 : point.median,
empty: point.empty
};
});
}

/**
* RetrieveGaugeMetric
* @param personaId
* @param metricId
* @param startTime
* @param endTime
* @param buckets
* @returns ng.IPromise<IChartDataPoint[]>
*/
public retrieveGaugeMetric(personaId:PersonaId,
metricId:MetricId,
startTime?:TimestampInMillis,
endTime?:TimestampInMillis,
buckets = 120):ng.IPromise<IChartDataPoint[]> {

// calling refreshChartData without params use the model values
if (!endTime) {
endTime = Date.now();
}
if (!startTime) {
startTime = Date.now() - (8 * 60 * 60 * 1000);
}

return this.HawkularMetric.GaugeMetricData(personaId).queryMetrics({
gaugeId: metricId,
start: startTime,
end: endTime,
buckets: buckets
}).$promise;

}


}

_module.service('MetricService', MetricService);
}
Loading

0 comments on commit 8c21500

Please sign in to comment.