Merge pull request #12339 from grafana/apikey-permission-fix
v5.1.4 patch release
This commit is contained in:
@@ -94,7 +94,7 @@ deleteDatasources:
|
|||||||
orgId: 1
|
orgId: 1
|
||||||
|
|
||||||
# list of datasources to insert/update depending
|
# list of datasources to insert/update depending
|
||||||
# whats available in the database
|
# what's available in the database
|
||||||
datasources:
|
datasources:
|
||||||
# <string, required> name of the datasource. Required
|
# <string, required> name of the datasource. Required
|
||||||
- name: Graphite
|
- name: Graphite
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ weight = 3
|
|||||||
+++
|
+++
|
||||||
|
|
||||||
|
|
||||||
## Whats new in Grafana v4.1
|
## What's new in Grafana v4.1
|
||||||
- **Graph**: Support for shared tooltip on all graphs as you hover over one graph. [#1578](https://github.com/grafana/grafana/pull/1578), [#6274](https://github.com/grafana/grafana/pull/6274)
|
- **Graph**: Support for shared tooltip on all graphs as you hover over one graph. [#1578](https://github.com/grafana/grafana/pull/1578), [#6274](https://github.com/grafana/grafana/pull/6274)
|
||||||
- **Victorops**: Add VictorOps notification integration [#6411](https://github.com/grafana/grafana/issues/6411), thx [@ichekrygin](https://github.com/ichekrygin)
|
- **Victorops**: Add VictorOps notification integration [#6411](https://github.com/grafana/grafana/issues/6411), thx [@ichekrygin](https://github.com/ichekrygin)
|
||||||
- **Opsgenie**: Add OpsGenie notification integratiion [#6687](https://github.com/grafana/grafana/issues/6687), thx [@kylemcc](https://github.com/kylemcc)
|
- **Opsgenie**: Add OpsGenie notification integratiion [#6687](https://github.com/grafana/grafana/issues/6687), thx [@kylemcc](https://github.com/kylemcc)
|
||||||
@@ -24,7 +24,7 @@ weight = 3
|
|||||||
|
|
||||||
{{< imgbox max-width="60%" img="/img/docs/v41/shared_tooltip.gif" caption="Shared tooltip" >}}
|
{{< imgbox max-width="60%" img="/img/docs/v41/shared_tooltip.gif" caption="Shared tooltip" >}}
|
||||||
|
|
||||||
Showing the tooltip on all panels at the same time has been a long standing request in Grafana and we are really happy to finally be able to release it.
|
Showing the tooltip on all panels at the same time has been a long standing request in Grafana and we are really happy to finally be able to release it.
|
||||||
You can enable/disable the shared tooltip from the dashboard settings menu or cycle between default, shared tooltip and shared crosshair by pressing `CTRL + O` or `CMD + O`.
|
You can enable/disable the shared tooltip from the dashboard settings menu or cycle between default, shared tooltip and shared crosshair by pressing `CTRL + O` or `CMD + O`.
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
@@ -50,7 +50,7 @@ Panels with a help text available have a little indicator in the top left corner
|
|||||||
In Grafana 4.1.0 you can configure your Cloudwatch data source with `access key` and `secret key` directly in the data source configuration page.
|
In Grafana 4.1.0 you can configure your Cloudwatch data source with `access key` and `secret key` directly in the data source configuration page.
|
||||||
This enables people to use the Cloudwatch data source without having access to the filesystem where Grafana is running.
|
This enables people to use the Cloudwatch data source without having access to the filesystem where Grafana is running.
|
||||||
|
|
||||||
Once the `access key` and `secret key` have been saved the user will no longer be able to view them.
|
Once the `access key` and `secret key` have been saved the user will no longer be able to view them.
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
|
|
||||||
## Upgrade & Breaking changes
|
## Upgrade & Breaking changes
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ parent = "whatsnew"
|
|||||||
weight = -1
|
weight = -1
|
||||||
+++
|
+++
|
||||||
|
|
||||||
## Whats new in Grafana v4.2
|
## What's new in Grafana v4.2
|
||||||
|
|
||||||
Grafana v4.2 Beta is now [available for download](https://grafana.com/grafana/download/4.2.0).
|
Grafana v4.2 Beta is now [available for download](https://grafana.com/grafana/download/4.2.0).
|
||||||
Just like the last release this one contains lots bug fixes and minor improvements.
|
Just like the last release this one contains lots bug fixes and minor improvements.
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ This makes exploring and filtering Prometheus data much easier.
|
|||||||
* **Dataproxy**: Allow grafan to renegotiate tls connection [#9250](https://github.com/grafana/grafana/issues/9250)
|
* **Dataproxy**: Allow grafan to renegotiate tls connection [#9250](https://github.com/grafana/grafana/issues/9250)
|
||||||
* **HTTP**: set net.Dialer.DualStack to true for all http clients [#9367](https://github.com/grafana/grafana/pull/9367)
|
* **HTTP**: set net.Dialer.DualStack to true for all http clients [#9367](https://github.com/grafana/grafana/pull/9367)
|
||||||
* **Alerting**: Add diff and percent diff as series reducers [#9386](https://github.com/grafana/grafana/pull/9386), thx [@shanhuhai5739](https://github.com/shanhuhai5739)
|
* **Alerting**: Add diff and percent diff as series reducers [#9386](https://github.com/grafana/grafana/pull/9386), thx [@shanhuhai5739](https://github.com/shanhuhai5739)
|
||||||
* **Slack**: Allow images to be uploaded to slack when Token is precent [#7175](https://github.com/grafana/grafana/issues/7175), thx [@xginn8](https://github.com/xginn8)
|
* **Slack**: Allow images to be uploaded to slack when Token is present [#7175](https://github.com/grafana/grafana/issues/7175), thx [@xginn8](https://github.com/xginn8)
|
||||||
* **Opsgenie**: Use their latest API instead of old version [#9399](https://github.com/grafana/grafana/pull/9399), thx [@cglrkn](https://github.com/cglrkn)
|
* **Opsgenie**: Use their latest API instead of old version [#9399](https://github.com/grafana/grafana/pull/9399), thx [@cglrkn](https://github.com/cglrkn)
|
||||||
* **Table**: Add support for displaying the timestamp with milliseconds [#9429](https://github.com/grafana/grafana/pull/9429), thx [@s1061123](https://github.com/s1061123)
|
* **Table**: Add support for displaying the timestamp with milliseconds [#9429](https://github.com/grafana/grafana/pull/9429), thx [@s1061123](https://github.com/s1061123)
|
||||||
* **Hipchat**: Add metrics, message and image to hipchat notifications [#9110](https://github.com/grafana/grafana/issues/9110), thx [@eloo](https://github.com/eloo)
|
* **Hipchat**: Add metrics, message and image to hipchat notifications [#9110](https://github.com/grafana/grafana/issues/9110), thx [@eloo](https://github.com/eloo)
|
||||||
|
|||||||
@@ -20,7 +20,21 @@ Panels are the main building blocks of dashboards.
|
|||||||
|
|
||||||
## Panel development
|
## Panel development
|
||||||
|
|
||||||
Examples
|
|
||||||
|
### Scrolling
|
||||||
|
The grafana dashboard framework controls the panel height. To enable a scrollbar within the panel the PanelCtrl needs to set the scrollable static variable:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
export class MyPanelCtrl extends PanelCtrl {
|
||||||
|
static scrollable = true;
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
In this case, make sure the template has a single `<div>...</div>` root. The plugin loader will modify that element adding a scrollbar.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
|
||||||
- [clock-panel](https://github.com/grafana/clock-panel)
|
- [clock-panel](https://github.com/grafana/clock-panel)
|
||||||
- [singlestat-panel](https://github.com/grafana/grafana/blob/master/public/app/plugins/panel/singlestat/module.ts)
|
- [singlestat-panel](https://github.com/grafana/grafana/blob/master/public/app/plugins/panel/singlestat/module.ts)
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ weight = 10
|
|||||||
</a>
|
</a>
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<a href="https://youtu.be/FC13uhFRsVw?list=PLDGkOdUX1Ujo3wHw9-z5Vo12YLqXRjzg2" target="_blank" rel="noopener noreferrer">
|
<a href="https://youtu.be/FC13uhFRsVw?list=PLDGkOdUX1Ujo3wHw9-z5Vo12YLqXRjzg2" target="_blank" rel="noopener noreferrer">
|
||||||
#3 Whats New In Grafana 2.0
|
#3 What's New In Grafana 2.0
|
||||||
</a>
|
</a>
|
||||||
</figcaption>
|
</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"stable": "5.0.0",
|
"stable": "5.1.4",
|
||||||
"testing": "5.0.0"
|
"testing": "5.1.4"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
"company": "Grafana Labs"
|
"company": "Grafana Labs"
|
||||||
},
|
},
|
||||||
"name": "grafana",
|
"name": "grafana",
|
||||||
"version": "5.1.3",
|
"version": "5.1.4",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "http://github.com/grafana/grafana.git"
|
"url": "http://github.com/grafana/grafana.git"
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ func (g *dashboardGuardianImpl) checkAcl(permission m.PermissionType, acl []*m.D
|
|||||||
|
|
||||||
for _, p := range acl {
|
for _, p := range acl {
|
||||||
// user match
|
// user match
|
||||||
if !g.user.IsAnonymous {
|
if !g.user.IsAnonymous && p.UserId > 0 {
|
||||||
if p.UserId == g.user.UserId && p.Permission >= permission {
|
if p.UserId == g.user.UserId && p.Permission >= permission {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,6 +162,11 @@ func TestGuardianViewer(t *testing.T) {
|
|||||||
sc.parentFolderPermissionScenario(VIEWER, m.PERMISSION_EDIT, EDITOR_ACCESS)
|
sc.parentFolderPermissionScenario(VIEWER, m.PERMISSION_EDIT, EDITOR_ACCESS)
|
||||||
sc.parentFolderPermissionScenario(VIEWER, m.PERMISSION_VIEW, VIEWER_ACCESS)
|
sc.parentFolderPermissionScenario(VIEWER, m.PERMISSION_VIEW, VIEWER_ACCESS)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
apiKeyScenario("Given api key with viewer role", t, m.ROLE_VIEWER, func(sc *scenarioContext) {
|
||||||
|
// dashboard has default permissions
|
||||||
|
sc.defaultPermissionScenario(VIEWER, m.PERMISSION_EDIT, VIEWER_ACCESS)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,7 +272,7 @@ func (sc *scenarioContext) verifyExpectedPermissionsFlags() {
|
|||||||
actualFlag = NO_ACCESS
|
actualFlag = NO_ACCESS
|
||||||
}
|
}
|
||||||
|
|
||||||
if sc.expectedFlags&actualFlag != sc.expectedFlags {
|
if actualFlag&sc.expectedFlags != actualFlag {
|
||||||
sc.reportFailure(tc, sc.expectedFlags.String(), actualFlag.String())
|
sc.reportFailure(tc, sc.expectedFlags.String(), actualFlag.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,27 @@ func orgRoleScenario(desc string, t *testing.T, role m.RoleType, fn scenarioFunc
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func apiKeyScenario(desc string, t *testing.T, role m.RoleType, fn scenarioFunc) {
|
||||||
|
user := &m.SignedInUser{
|
||||||
|
UserId: 0,
|
||||||
|
OrgId: orgID,
|
||||||
|
OrgRole: role,
|
||||||
|
ApiKeyId: 10,
|
||||||
|
}
|
||||||
|
guard := New(dashboardID, orgID, user)
|
||||||
|
sc := &scenarioContext{
|
||||||
|
t: t,
|
||||||
|
orgRoleScenario: desc,
|
||||||
|
givenUser: user,
|
||||||
|
givenDashboardID: dashboardID,
|
||||||
|
g: guard,
|
||||||
|
}
|
||||||
|
|
||||||
|
Convey(desc, func() {
|
||||||
|
fn(sc)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func permissionScenario(desc string, dashboardID int64, sc *scenarioContext, permissions []*m.DashboardAclInfoDTO, fn scenarioFunc) {
|
func permissionScenario(desc string, dashboardID int64, sc *scenarioContext, permissions []*m.DashboardAclInfoDTO, fn scenarioFunc) {
|
||||||
bus.ClearBusHandlers()
|
bus.ClearBusHandlers()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user