Просмотр исходного кода

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

Torkel Ödegaard 10 лет назад
Родитель
Сommit
5bc194e1f0

+ 10 - 3
pkg/api/cloudwatch/metrics.go

@@ -2,6 +2,7 @@ package cloudwatch
 
 import (
 	"encoding/json"
+	"sort"
 
 	"github.com/grafana/grafana/pkg/middleware"
 	"github.com/grafana/grafana/pkg/util"
@@ -69,8 +70,8 @@ func init() {
 // Please update the region list in public/app/plugins/datasource/cloudwatch/partials/config.html
 func handleGetRegions(req *cwRequest, c *middleware.Context) {
 	regions := []string{
-		"us-east-1", "us-west-2", "us-west-1", "eu-west-1", "eu-central-1", "ap-southeast-1",
-		"ap-southeast-2", "ap-northeast-1", "sa-east-1", "cn-north-1",
+		"ap-northeast-1", "ap-southeast-1", "ap-southeast-2", "cn-north-1",
+		"eu-central-1", "eu-west-1", "sa-east-1", "us-east-1", "us-west-1", "us-west-2",
 	}
 
 	result := []interface{}{}
@@ -82,8 +83,14 @@ func handleGetRegions(req *cwRequest, c *middleware.Context) {
 }
 
 func handleGetNamespaces(req *cwRequest, c *middleware.Context) {
-	result := []interface{}{}
+	keys := []string{}
 	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})
 	}
 

+ 5 - 0
public/app/core/services/backend_srv.js

@@ -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;
       });
     };

+ 8 - 3
public/app/core/utils/rangeutil.ts

@@ -34,11 +34,12 @@ var rangeOptions = [
   { from: 'now-15m',  to: 'now',      display: 'Last 15 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-3h',   to: 'now',      display: 'Last 3 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-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-60d',  to: 'now',      display: 'Last 60 days',          section: 0 },
   { from: 'now-90d',  to: 'now',      display: 'Last 90 days',          section: 0 },
@@ -133,8 +134,12 @@ _.each(rangeOptions, function (frame) {
       return from.fromNow() + ' to ' + formatDate(range.to);
     }
 
-    var res = describeTextRange(range.from);
-    return res.display;
+    if (range.to.toString() === 'now') {
+      var res = describeTextRange(range.from);
+      return res.display;
+    }
+
+    return range.from.toString() + ' to ' + range.to.toString();
   }
 
 export = {

+ 17 - 0
public/app/features/templating/partials/editor.html

@@ -146,6 +146,23 @@
 							</ul>
 							<div class="clearfix"></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 ng-show="current.type === 'query'">

+ 5 - 0
public/app/features/templating/templateValuesSrv.js

@@ -115,6 +115,11 @@ function (angular, _, kbn) {
       if (variable.type === 'interval') {
         self.updateAutoInterval(variable);
       }
+
+      if (variable.type === 'custom' && variable.includeAll) {
+        self.addAllOption(variable);
+      }
+
     };
 
     this.updateOptions = function(variable) {

+ 1 - 1
public/app/plugins/datasource/cloudwatch/datasource.js

@@ -204,7 +204,7 @@ function (angular, _) {
 
         return this.performEC2DescribeInstances(region, [], instanceIds).then(function(result) {
           var volumeIds = _.map(result.Reservations[0].Instances[0].BlockDeviceMappings, function(mapping) {
-            return mapping.EBS.VolumeID;
+            return mapping.Ebs.VolumeId;
           });
 
           return transformSuggestData(volumeIds);

+ 16 - 0
public/test/core/utils/rangeutil_specs.ts

@@ -80,6 +80,22 @@ describe("rangeUtil", () => {
       var text = rangeUtil.describeTimeRange({from: 'now-13h', to: 'now'});
       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')
+    });
+
   });
 
 });