Commit 5bc194e1 by Torkel Ödegaard

Merge branch 'master' of github.com:grafana/grafana

parents d315ff2b 874a6e86
...@@ -2,6 +2,7 @@ package cloudwatch ...@@ -2,6 +2,7 @@ package cloudwatch
import ( import (
"encoding/json" "encoding/json"
"sort"
"github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/middleware"
"github.com/grafana/grafana/pkg/util" "github.com/grafana/grafana/pkg/util"
...@@ -69,8 +70,8 @@ func init() { ...@@ -69,8 +70,8 @@ func init() {
// Please update the region list in public/app/plugins/datasource/cloudwatch/partials/config.html // Please update the region list in public/app/plugins/datasource/cloudwatch/partials/config.html
func handleGetRegions(req *cwRequest, c *middleware.Context) { func handleGetRegions(req *cwRequest, c *middleware.Context) {
regions := []string{ regions := []string{
"us-east-1", "us-west-2", "us-west-1", "eu-west-1", "eu-central-1", "ap-southeast-1", "ap-northeast-1", "ap-southeast-1", "ap-southeast-2", "cn-north-1",
"ap-southeast-2", "ap-northeast-1", "sa-east-1", "cn-north-1", "eu-central-1", "eu-west-1", "sa-east-1", "us-east-1", "us-west-1", "us-west-2",
} }
result := []interface{}{} result := []interface{}{}
...@@ -82,8 +83,14 @@ func handleGetRegions(req *cwRequest, c *middleware.Context) { ...@@ -82,8 +83,14 @@ func handleGetRegions(req *cwRequest, c *middleware.Context) {
} }
func handleGetNamespaces(req *cwRequest, c *middleware.Context) { func handleGetNamespaces(req *cwRequest, c *middleware.Context) {
result := []interface{}{} keys := []string{}
for key := range metricsMap { for key := range metricsMap {
keys = append(keys, key)
}
sort.Sort(sort.StringSlice(keys))
result := []interface{}{}
for _, key := range keys {
result = append(result, util.DynMap{"text": key, "value": key}) result = append(result, util.DynMap{"text": key, "value": key})
} }
......
...@@ -105,6 +105,11 @@ function (angular, _, coreModule, config) { ...@@ -105,6 +105,11 @@ function (angular, _, coreModule, config) {
}); });
} }
// for Prometheus
if (!err.data.message && _.isString(err.data.error)) {
err.data.message = err.data.error;
}
throw err; throw err;
}); });
}; };
......
...@@ -34,11 +34,12 @@ var rangeOptions = [ ...@@ -34,11 +34,12 @@ var rangeOptions = [
{ from: 'now-15m', to: 'now', display: 'Last 15 minutes', section: 3 }, { from: 'now-15m', to: 'now', display: 'Last 15 minutes', section: 3 },
{ from: 'now-30m', to: 'now', display: 'Last 30 minutes', section: 3 }, { from: 'now-30m', to: 'now', display: 'Last 30 minutes', section: 3 },
{ from: 'now-1h', to: 'now', display: 'Last 1 hour', section: 3 }, { from: 'now-1h', to: 'now', display: 'Last 1 hour', section: 3 },
{ from: 'now-3h', to: 'now', display: 'Last 3 hours', section: 3 },
{ from: 'now-6h', to: 'now', display: 'Last 6 hours', section: 3 }, { from: 'now-6h', to: 'now', display: 'Last 6 hours', section: 3 },
{ from: 'now-12h', to: 'now', display: 'Last 12 hours', section: 3 }, { from: 'now-12h', to: 'now', display: 'Last 12 hours', section: 3 },
{ from: 'now-24h', to: 'now', display: 'Last 24 hours', section: 3 }, { from: 'now-24h', to: 'now', display: 'Last 24 hours', section: 3 },
{ from: 'now-7d', to: 'now', display: 'Last 7 days', section: 3 },
{ from: 'now-7d', to: 'now', display: 'Last 7 days', section: 0 },
{ from: 'now-30d', to: 'now', display: 'Last 30 days', section: 0 }, { from: 'now-30d', to: 'now', display: 'Last 30 days', section: 0 },
{ from: 'now-60d', to: 'now', display: 'Last 60 days', section: 0 }, { from: 'now-60d', to: 'now', display: 'Last 60 days', section: 0 },
{ from: 'now-90d', to: 'now', display: 'Last 90 days', section: 0 }, { from: 'now-90d', to: 'now', display: 'Last 90 days', section: 0 },
...@@ -133,10 +134,14 @@ _.each(rangeOptions, function (frame) { ...@@ -133,10 +134,14 @@ _.each(rangeOptions, function (frame) {
return from.fromNow() + ' to ' + formatDate(range.to); return from.fromNow() + ' to ' + formatDate(range.to);
} }
if (range.to.toString() === 'now') {
var res = describeTextRange(range.from); var res = describeTextRange(range.from);
return res.display; return res.display;
} }
return range.from.toString() + ' to ' + range.to.toString();
}
export = { export = {
getRelativeTimesList: getRelativeTimesList, getRelativeTimesList: getRelativeTimesList,
describeTextRange: describeTextRange, describeTextRange: describeTextRange,
......
...@@ -146,6 +146,23 @@ ...@@ -146,6 +146,23 @@
</ul> </ul>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="tight-form">
<ul class="tight-form-list">
<li class="tight-form-item" style="width: 100px;">
<editor-checkbox text="All value" model="current.includeAll" change="runQuery()"></editor-checkbox>
</li>
<li ng-show="current.includeAll">
<input type="text" class="input-xlarge tight-form-input" style="width:364px" ng-model='current.options[0].value'></input>
</li>
<li class="tight-form-item" ng-show="current.includeAll">
All format
</li>
<li ng-show="current.includeAll">
<select class="input-medium tight-form-input last" ng-model="current.allFormat" ng-change="runQuery()" ng-options="f for f in ['glob', 'wildcard', 'regex wildcard', 'regex values', 'lucene', 'pipe']"></select>
</li>
</ul>
<div class="clearfix"></div>
</div>
</div> </div>
<div ng-show="current.type === 'query'"> <div ng-show="current.type === 'query'">
......
...@@ -115,6 +115,11 @@ function (angular, _, kbn) { ...@@ -115,6 +115,11 @@ function (angular, _, kbn) {
if (variable.type === 'interval') { if (variable.type === 'interval') {
self.updateAutoInterval(variable); self.updateAutoInterval(variable);
} }
if (variable.type === 'custom' && variable.includeAll) {
self.addAllOption(variable);
}
}; };
this.updateOptions = function(variable) { this.updateOptions = function(variable) {
......
...@@ -204,7 +204,7 @@ function (angular, _) { ...@@ -204,7 +204,7 @@ function (angular, _) {
return this.performEC2DescribeInstances(region, [], instanceIds).then(function(result) { return this.performEC2DescribeInstances(region, [], instanceIds).then(function(result) {
var volumeIds = _.map(result.Reservations[0].Instances[0].BlockDeviceMappings, function(mapping) { var volumeIds = _.map(result.Reservations[0].Instances[0].BlockDeviceMappings, function(mapping) {
return mapping.EBS.VolumeID; return mapping.Ebs.VolumeId;
}); });
return transformSuggestData(volumeIds); return transformSuggestData(volumeIds);
......
...@@ -80,6 +80,22 @@ describe("rangeUtil", () => { ...@@ -80,6 +80,22 @@ describe("rangeUtil", () => {
var text = rangeUtil.describeTimeRange({from: 'now-13h', to: 'now'}); var text = rangeUtil.describeTimeRange({from: 'now-13h', to: 'now'});
expect(text).to.be('Last 13 hours') expect(text).to.be('Last 13 hours')
}); });
it('Date range with from and to both are in now-* format', () => {
var text = rangeUtil.describeTimeRange({from: 'now-6h', to: 'now-3h'});
expect(text).to.be('now-6h to now-3h')
});
it('Date range with from and to both are either in now-* or now/* format', () => {
var text = rangeUtil.describeTimeRange({from: 'now/d+6h', to: 'now-3h'});
expect(text).to.be('now/d+6h to now-3h')
});
it('Date range with from and to both are either in now-* or now+* format', () => {
var text = rangeUtil.describeTimeRange({from: 'now-6h', to: 'now+1h'});
expect(text).to.be('now-6h to now+1h')
});
}); });
}); });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment