Compare commits

...

6162 Commits

Author SHA1 Message Date
Torkel Ödegaard 5e33a52b69 updated version to v5-beta3 2018-02-16 13:26:04 +01:00
bergquist 529fc022d5 db: reduce name column size in dashboard_provisoning
ref #10931
2018-02-16 11:49:17 +01:00
Daniel Lee b9d572bdec teams: adds some validation to the API 2018-02-16 11:46:20 +01:00
Torkel Ödegaard ac6800a88a Merge branch 'master' of github.com:grafana/grafana 2018-02-16 10:34:15 +01:00
Marcus Efraimsson 4c073e1cf0 docker: add test dashboards for mysql and postgres for visualizing data generated by fake-data-gen 2018-02-16 10:18:40 +01:00
bergquist b099f0309f cli: download latest dependency by default 2018-02-16 09:54:37 +01:00
bergquist 5bbe047eaa Revert "removes dependencies install for plugins"
This reverts commit 47e363ea15.
2018-02-16 09:49:29 +01:00
Mitsuhiro Tanda 3b04efa4c0 migrate minSpan (#10924) 2018-02-16 09:29:10 +01:00
Torkel Ödegaard 39fdfb7922 Merge branch 'master' of github.com:grafana/grafana 2018-02-16 09:14:44 +01:00
Patrick O'Carroll 244ae555d9 Close modal with esc (#10929)
* added var to check if modal is open and an if for escape fullview

* moved showconfirmmodal to utils, showconfirmmodal now uses showmodal, esc works in textinput

* made esc global
2018-02-16 09:14:32 +01:00
Alexander Zobnin 2c5f3fbc5b repeat row: fix panels placement bug (#10932) 2018-02-16 09:11:26 +01:00
Marcus Efraimsson 75077e634e Merge pull request #10933 from ScottBrenner/patch-1
Minor typo fix
2018-02-16 02:18:51 +01:00
Scott Brenner 2d03ab1770 Update sample.ini 2018-02-15 10:41:26 -08:00
Scott Brenner 7535cefed9 Update ldap.toml 2018-02-15 10:41:15 -08:00
Scott Brenner 43baf20dcd Update ldap.md 2018-02-15 10:41:04 -08:00
Scott Brenner b8b6dc6d6d Minor typo fix 2018-02-15 10:37:23 -08:00
Daniel Lee 6fa46d9539 plugins: update meta data for all core plugins
So that the readme's can be published on Grafana.com
2018-02-15 16:50:38 +01:00
Leonard Gram 3ddfd8bd09 alert notifiers: better error messages. 2018-02-15 16:48:01 +01:00
bergquist 651103bdda chore: adds comment for exported function 2018-02-15 15:06:03 +01:00
Torkel Ödegaard 6b930df4d4 updated download links 2018-02-15 14:48:11 +01:00
Torkel Ödegaard 4fb7ba454e docs: Updated changelog 2018-02-15 13:41:48 +01:00
Torkel Ödegaard ed546c9720 updated package.json version 2018-02-15 13:30:40 +01:00
Torkel Ödegaard 168ac314fc fix: more phantomjs fixes 2018-02-15 13:20:50 +01:00
Torkel Ödegaard 57103ec98a fix: refactoring #10922 2018-02-15 12:42:17 +01:00
Torkel Ödegaard 4b4e38531b Merge branch 'fix-10526' of https://github.com/alexanderzobnin/grafana 2018-02-15 11:46:33 +01:00
Alexander Zobnin b4c51f8822 Fix phantomjs legend rendering issue, #10526 2018-02-15 12:59:14 +03:00
bergquist 0ab0343995 mark redirect_to cookie as http only
closes #10829
2018-02-15 10:56:29 +01:00
Carl Bergquist aa902ef826 Merge pull request #10921 from bergquist/invalid_uid
dashboard: whitelist allowed chars for uid
2018-02-15 10:19:42 +01:00
bergquist 8954559cbd dashboard: whitelist allowed chars for uid 2018-02-15 09:56:13 +01:00
Carl Bergquist fcca578f41 updates readmes for mysql and postgres (#10913)
ref #10813
2018-02-15 09:38:39 +01:00
Carl Bergquist 243b987758 Merge pull request #10910 from bergquist/provisioning_disable_deleting_dashboards
provisioning: adds setting to disable dashboard deletes
2018-02-15 08:28:10 +01:00
bergquist ad42883fc7 provisioning: adds setting to disable dashboard deletes 2018-02-14 17:30:08 +01:00
bergquist 842f4c1d32 tech: dont print error message on 500 page
closes #10828
2018-02-14 16:39:20 +01:00
bergquist 47e363ea15 removes dependencies install for plugins
this features was never intended for production.
2018-02-14 15:40:42 +01:00
bergquist 56907eef69 tests: makes sure we all migrations are working 2018-02-14 15:30:29 +01:00
Leonard Gram fa1b92a12b provisioning: uses unix epoch timestamps. (#10907)
* provisioning: uses unix epoch timestamps.
2018-02-14 15:28:30 +01:00
Sven Klemm ebbc079853 improve error message for invalid/unknown datatypes (#10834) 2018-02-14 15:21:00 +01:00
Mitsuhiro Tanda 60b30d3e9a add AWS/States Rekognition (#10890)
* added AWS/States

* added Rekognition
2018-02-14 15:14:38 +01:00
Torkel Ödegaard fcaa8227a6 Dashboard acl query fixes (#10909)
* initial fixes for dashboard permission acl list query, fixes #10864

* permissions: refactoring of acl api and query
2018-02-14 15:04:26 +01:00
bergquist 1a041a2250 bug: return correct err message
if the sql query failed has is false and the method will return
m.ErrDataSourceNotFound which is incorrect. We now return the
correct error message from the query

ref #10843
2018-02-14 13:32:52 +01:00
bergquist dba087463a provisioing: always skip sample.yaml files 2018-02-14 11:33:58 +01:00
bergquist 165304a342 provisioning: handle nil configs 2018-02-14 11:22:24 +01:00
Carl Bergquist 3091697a2c Merge pull request #10896 from bergquist/provisioning_cfg_camelCase
Change naming format to camelCase for provisioning configs
2018-02-14 11:00:01 +01:00
Torkel Ödegaard 8dd4d505ee Merge branch 'dashboard-search-permissions-filter' 2018-02-14 10:48:55 +01:00
Leonard Gram b60b6690ba sql: removes locale from test to mirror prod. 2018-02-14 10:31:36 +01:00
bergquist fc371af47f adds tests that validate that updated is correct 2018-02-14 10:31:36 +01:00
bergquist 84de76ff0a provisioning: code formating 2018-02-14 10:30:08 +01:00
bergquist 44baaeed8f provisioning: adds logs about deprecated config format 2018-02-14 10:30:08 +01:00
bergquist b010e4df93 provisioning: support camelcase for dashboards configs 2018-02-14 10:30:08 +01:00
bergquist 4a35244cb9 provisioning: support camcelCase provisioning files 2018-02-14 10:30:08 +01:00
Torkel Ödegaard ead1c300d7 API Integration Tests via jest (#10899)
* tests: experiment with api tests

* api tests are getting nice

* api: api testing ready for feedback
2018-02-14 10:26:20 +01:00
Torkel Ödegaard bb681cd498 Merge branch '10819_empty_dashboard_list' 2018-02-14 09:38:19 +01:00
Torkel Ödegaard b0fae0129c ux: refactoring #10884 2018-02-14 09:37:39 +01:00
Marcus Efraimsson 57e55954d9 Merge pull request #10902 from stukselbax/patch-1
Duplicate typo in docs fixed
2018-02-14 09:30:30 +01:00
stukselbax 3d91a1cbdd Duplicate typo fixed 2018-02-14 10:53:14 +03:00
Mitsuhiro Tanda 6a85369c50 add 13-24 for min width (#10891) 2018-02-13 17:22:55 +01:00
Jan Fajerski e9380bbdff sass/base: import from current dir in _fonts.scss (#10894)
The import statement relative to base seems to confuse sass if there is
a colon (:) in the path name.

Fixes: #10866

Signed-off-by: Jan Fajerski <jfajerski@suse.com>
2018-02-13 17:20:51 +01:00
Torkel Ödegaard 162439a8d6 fix: removed logging 2018-02-13 17:03:20 +01:00
Torkel Ödegaard e3c3f3ce4c fix: sql search permissions filter fix 2018-02-13 16:49:00 +01:00
Leonard Gram ba0285a3ec provisioning: Warns the user when uid or title is re-used. (#10892)
* provisioning: Warns the user when uid or title is re-used.

Closes #10880
2018-02-13 15:47:02 +01:00
Carl Bergquist d31e333e7e Merge pull request #10888 from ScottBrenner/patch-1
Minor typo fix
2018-02-13 15:11:29 +01:00
Scott Brenner e57c8d0357 Minor typo fix
Minor typo fix
2018-02-12 13:59:19 -08:00
Patrick O'Carroll aaf4e760c6 new dashboard is now hidden from viewer, fixes #10815 (#10854)
* new dashboard is now hidden from viewer, fixes #10815

* changed orgRole to isEditor

* removed unused import

* added contextSrv mock to search.jest
2018-02-12 17:11:41 +01:00
Patrick O'Carroll 42af87b7c9 fixed bg gradient, fixes #10869 (#10875) 2018-02-12 17:10:27 +01:00
Marcus Efraimsson ac3bf54fb4 login: fix broken reset password form (#10881) 2018-02-12 17:09:39 +01:00
Patrick O'Carroll f2d8222af5 moved div in code 2018-02-12 16:13:39 +01:00
Patrick O'Carroll 5fced6e92b added buttons and text to empty dashboard list 2018-02-12 16:10:23 +01:00
Leonard Gram acd085605c docs: spelling. 2018-02-12 15:17:56 +01:00
Leonard Gram 5af2d09fb3 Merge pull request #10865 from grafana/provisioning
Support deleting provisioned dashboards when file is removed
2018-02-12 14:53:52 +01:00
Leonard Gram 9a7eb5c327 Merge branch 'master' into provisioning 2018-02-12 14:19:20 +01:00
Marcus Efraimsson 12a6de7461 dashboard: always make sure dashboard exist in dashboard acl http api (#10856) 2018-02-12 09:26:09 +01:00
Andrey Inishev 1b795c0ced Fix #10823 (#10851)
* Fix of #10823

* Typo fix

* Revert Gopkg.lock
2018-02-12 09:24:01 +01:00
bergquist f01890c3ff provisioning: better variable naming 2018-02-12 08:22:34 +01:00
Torkel Ödegaard 6bbd87dd9c ux: minor tweak to grid resize handle color 2018-02-10 20:11:11 +01:00
Marcus Efraimsson e1e0b5f951 teams: use orgId in all team and team member operations (#10862)
Also fixes issue in org users tests for postgres
2018-02-09 17:26:15 +01:00
Torkel Ödegaard 4d5a24a6c4 permissions: might have a solution for search 2018-02-09 17:24:34 +01:00
Alexander Zobnin 111b32290a Fixes for graphite tags editor (#10861)
* graphite: don't fetch tags on editor init

* add debounce option to query editor directives

* graphite: debounce tag queries
2018-02-09 16:20:30 +01:00
Torkel Ödegaard c01b80522e fix: clear items list before fetching permissions list 2018-02-09 16:13:20 +01:00
bergquist 84fea7c148 provisioning: dont return error unless you want to cancel all operations 2018-02-09 15:43:58 +01:00
bergquist 5a76624003 provisioning: createWalkFn doesnt have to be attached to the filereader anymore 2018-02-09 15:33:54 +01:00
bergquist e93fe9db25 provisioning: update sample config to use path 2018-02-09 15:25:31 +01:00
bergquist 59cd2d5102 provisioning: avoid caching and use updated field from db 2018-02-09 15:23:38 +01:00
Torkel Ödegaard e949eb3f58 Merge branch 'master' into dashboard-search-permissions-filter 2018-02-09 15:16:34 +01:00
Marcus Efraimsson e429cd8333 update README.md regarding running tests
[skip ci]
2018-02-09 13:34:10 +01:00
Marcus Efraimsson fae9eb546e update README.md regarding running tests
[skip ci]
2018-02-09 13:31:37 +01:00
Torkel Ödegaard e672604835 docs: minor docs update 2018-02-09 12:53:07 +01:00
Torkel Ödegaard 41a6e7c2c8 docs: updated docs landing page 2018-02-09 12:39:17 +01:00
bergquist 31f3fdcba3 provisioning: delete dashboards before insert/update 2018-02-09 12:17:58 +01:00
Marcus Efraimsson a86f2fa34b user picker should only include users from current org (#10845) 2018-02-09 10:42:37 +01:00
Carl Bergquist 864e2647db Merge pull request #10844 from marefr/env_db_test
Allow use of environment variable to decide what database engine to run tests on
2018-02-09 09:35:48 +01:00
Marcus Efraimsson 8921b0b517 db test: allow use of env variable for database engine to run tests for 2018-02-08 19:16:45 +01:00
Torkel Ödegaard 8e8f3c4332 dashboard and folder search with permissions 2018-02-08 17:11:01 +01:00
Leonard Gram e0abd862e0 provisioning: fixed bug in saving dashboards. 2018-02-08 16:36:53 +01:00
Marcus Efraimsson a91bd53a34 dashboard: fix delete of folder from folder settings tab.
Fixes #10821
2018-02-08 14:25:23 +01:00
Leonard Gram 5a85fb6d32 Merge branch 'master' into provisioning 2018-02-08 13:43:19 +01:00
Marcus Efraimsson 0e8377a9f4 Update logic for create/update dashboard, validation and plugin dashboard links (#10809)
* enables overwrite if dashboard allready exist in folder

* dashboard: Don't allow creating a folder named General

* dashboards: update logic for save/update dashboard

No id and uid creates a new dashboard/folder.
No id and uid, with an existing title in folder allows overwrite
  of dashboard.
Id without uid, allows update of existing dashboard/folder without
  overwrite.
Uid without id allows update of existing dashboard/folder without
  overwrite.
Id without uid, with an existing title in folder allows overwrite
  of dashboard/folder and updated will have the uid of overwritten.
Uid without id, with an existing title in folder allows overwrite
  of dashboard/folder and new will have the same uid as provided.
Trying to change an existing folder to a dashboard yields error.
Trying to change an existing dashboard to a folder yields error.

* dashboards: include folder id when confirmed to save with overwrite

* dashboards: fixes due to new url structure

Return importedUrl property in response to importing dashboards and
getting plugin dashboards and use this for redirects/links in the
frontend.
2018-02-08 12:48:38 +01:00
Leonard Gram b549d29319 Merge branch 'master' into provisioning 2018-02-08 11:01:09 +01:00
Patrick O'Carroll fc05fc42c9 added width class to add member choose (#10835) 2018-02-08 10:52:13 +01:00
Torkel Ödegaard b84fd3a7ae fix: initial fix for #10822 2018-02-07 17:54:21 +01:00
Torkel Ödegaard 39238c192d fix: folder redirect after creation 2018-02-07 15:33:08 +01:00
Daniel Lee db1423eebc dashfolders: fixes #10820 2018-02-07 15:13:34 +01:00
Torkel Ödegaard 541b0a0ca1 fix: fixed bug with redirect after new dashboard saved, related to buggy angularjs location path/url and base href, fixes #10817 2018-02-07 14:10:23 +01:00
Torkel Ödegaard 17cbd9d6b4 fix: removed old shortcut that does not exist, fixes #10802 2018-02-07 10:43:42 +01:00
Torkel Ödegaard 76c2a6e5ee build: fixed recovery test 2018-02-06 13:16:21 +01:00
Torkel Ödegaard f54ba20783 fix: css fix, found a better way to fix #10772 2018-02-06 13:01:23 +01:00
Torkel Ödegaard f1f8c23206 fix: minor build fix 2018-02-06 12:43:11 +01:00
Torkel Ödegaard 0e61a670bb fix: error handling now displays page correctly, fixes #10777 2018-02-06 12:28:17 +01:00
Alexander Zobnin 6e68c2069e Merge PR #10742 2018-02-06 13:39:31 +03:00
Alexander Zobnin fd5e838f0e heatmap tooltip: minor refactor 2018-02-06 13:38:17 +03:00
Torkel Ödegaard cf7be5da0b fix: changed dashboard title length to match slug length, will fix mysql index size issue, fixes #10779 2018-02-06 11:03:37 +01:00
Torkel Ödegaard bc8e59a8d8 docs: added graphite section 2018-02-06 10:32:27 +01:00
Torkel Ödegaard 3614906828 docs: minor update 2018-02-06 10:19:23 +01:00
Alexander Zobnin 81dc051ae9 graph panel: fix csv export (series as col) (#10769) 2018-02-06 10:11:17 +01:00
Daniel Lee 5ca03972a8 org-switcher: should redirect to home page (#10782)
Fixes #10776
2018-02-06 10:02:28 +01:00
Alexander Zobnin 45d66e4b29 embedded panel: hide side menu during init (#10788) 2018-02-06 10:01:10 +01:00
Alexander Zobnin ece9eb54b9 Merge branch 'master' of https://github.com/thattolleyguy/grafana into thattolleyguy-master 2018-02-06 11:38:33 +03:00
Daniel Lee 8c027ea707 scroll: css for #10722
Missed adding to previous commit. Ref #10722
2018-02-05 19:31:16 +01:00
Daniel Lee 5d756707ab dashlist: scroll fix when no header
The first item in the dashlist has a margin that messes up
the height calculation for the scroll bar when the Show headings
option is not selected. This fix adds a margin-top set to 0 for
the 1st item in the list in this case. This prevents a scrollbar
being shown incorrectly. Fixes #10772
2018-02-05 19:22:15 +01:00
Torkel Ödegaard 1a8501450c docs: video fix 2018-02-05 18:46:03 +01:00
Marcus Efraimsson 690beac277 Update changelog with deprecation notes of http api 2018-02-05 18:42:47 +01:00
Alexander Zobnin f97be541af redirect "permission denied" requests to "/" (#10773) 2018-02-05 18:17:47 +01:00
Torkel Ödegaard 24d882e7d8 docs: fix 2018-02-05 18:13:06 +01:00
Daniel Lee 4ce862c5b4 scroll: use wheelpropagation. Ref #10772
Once the vertical scrollbar comes to its end position, it should
allow the page scroll bar to start scrolling.
2018-02-05 18:12:04 +01:00
Marcus Efraimsson 57e172b30a Merge branch 'master' of github.com:grafana/grafana 2018-02-05 17:59:11 +01:00
Marcus Efraimsson e1d857887f docs: update dashboard model, persistent urls and api changes in what's new in v5 2018-02-05 17:58:43 +01:00
Torkel Ödegaard e800b19ef6 docs: fix download link 2018-02-05 17:56:48 +01:00
Torkel Ödegaard 061320ba7b docs: minor update 2018-02-05 17:26:44 +01:00
Torkel Ödegaard e9aadab355 docs: updated whats new 2018-02-05 17:00:19 +01:00
Marcus Efraimsson 7a968c1025 Update CHANGELOG.md 2018-02-05 16:53:32 +01:00
Marcus Efraimsson 24a1abaab2 Update CHANGELOG.md 2018-02-05 16:50:33 +01:00
Marcus Efraimsson 874c355e49 Merge branch 'master' of github.com:grafana/grafana 2018-02-05 16:43:39 +01:00
Marcus Efraimsson e86fe0b144 docs: update dashboard model, new url structure and api changes in what's new in v5 2018-02-05 16:40:49 +01:00
Torkel Ödegaard 9138b38b93 Update CHANGELOG.md 2018-02-05 16:32:30 +01:00
Torkel Ödegaard 97bba1d826 build: updated publish script 2018-02-05 16:29:10 +01:00
Torkel Ödegaard b2f62ae19c docs: update docs with download links 2018-02-05 16:02:17 +01:00
Torkel Ödegaard 8f98e8b8f4 Update CHANGELOG.md 2018-02-05 15:36:16 +01:00
Torkel Ödegaard 3e2da1fee5 build: increased version to beta1 2018-02-05 15:28:57 +01:00
Torkel Ödegaard e6b82b2fb1 fix: fixed permission list caching issue, fixes #10750 2018-02-05 15:23:46 +01:00
Daniel Lee 2d1bd270fb Stale permissions (#10768)
* dashfolders: hide permissions in settings if folder has changed

and the dashboard has not been saved yet. Otherwise the use will
see stale permissions from the original folder.

* dashfolders: return folder url for inherited permissions
2018-02-05 14:28:24 +01:00
Carl Bergquist 04a94ce396 adds unique index for org_id+folder_id+title on dashboards (#10766) 2018-02-05 14:11:19 +01:00
Marcus Efraimsson 8ce2074eb2 docs: fix links in HTTP API Reference page
Fixes #10745
2018-02-05 14:05:52 +01:00
Marcus Efraimsson a879dd8c0c dashboards: render correct link for folder when searching for dashboards (#10763)
Fixes #10761
2018-02-05 13:23:24 +01:00
Alexander Zobnin 20feb123c9 fix panel menu caret placement (#10759) 2018-02-05 11:49:59 +01:00
Marcus Efraimsson 55100d5ff9 Merge pull request #10760 from grafana/10749_link_to_folder
Fix link to folder from permissions list
2018-02-05 11:34:59 +01:00
Marcus Efraimsson 7d3b990e91 permissions: fix link to folder from permissions list
Also, closing Add Permissions CTA when DashboardPermissions and
FolderPermissions unmounts.
Fixes #10749"
2018-02-05 11:10:37 +01:00
Marcus Efraimsson 6def21e83f dashboard: fix loading of snapshot and scripted dashboard (#10755)
Fixes #10753
2018-02-05 10:31:53 +01:00
Carl Bergquist cc0cc8dd73 changes to new urlformat for home dashboard (#10738) 2018-02-05 10:24:48 +01:00
Torkel Ödegaard 0701188e64 Update CHANGELOG.md 2018-02-05 09:44:36 +01:00
Torkel Ödegaard 07fa2f1722 fix: alert list links did not work, changed dashboardUri to Url, this is breaking api change in alert api (#10756) 2018-02-05 09:42:41 +01:00
Leonard Gram d379aa3815 docs: typos and wording. 2018-02-05 09:36:17 +01:00
Marcus Efraimsson e1de4794ec Merge pull request #10754 from grafana/10752_fix_redirect
Redirect of legacy dashboard url's should include querystring parameters
2018-02-04 18:23:15 +01:00
Torkel Ödegaard 40c9d5f2a3 ux: hide sidemenu in kiosk mode, and while playlist is playing, fixes #107402 2018-02-04 17:32:27 +01:00
Marcus Efraimsson 32054ad9a6 dashboard: fix redirect of legacy dashboard url's
Redirect of /dashboard/db/:slug to /d/:uid/:slug and
/dashboard-solo/db/:slug to /d-solo/:uid/:slug now includes querystring parameters.

Fixes #10752
2018-02-04 17:29:16 +01:00
Daniel Lee a906dd8157 docs: add spaces to timeseries example 2018-02-03 16:21:23 +01:00
Torkel Ödegaard 162f4941f0 fix: restored tags to search 2018-02-03 10:14:45 +01:00
Marcus Efraimsson 4b64c1d0d4 fix frontend validation for creating new folder and import dashboard (#10737)
Fixes #10731
2018-02-03 10:03:01 +01:00
Tyler Tolley ca3c1d8c63 #10724 Fix whitespace 2018-02-02 09:31:05 -07:00
Tyler Tolley bde5499552 #10724 Fix finding the x bucket 2018-02-02 07:29:54 -07:00
Leonard Gram a0d8e96fd1 docs: dashboard provisioning 2018-02-02 11:17:52 +01:00
bergquist 130a2b6499 handle new error message 2018-02-02 11:06:32 +01:00
bergquist 0c98c4db30 removes uid when using 'save as'
closes #10720
2018-02-02 10:59:31 +01:00
Daniel Lee 512f6992f1 dashfolders: rename Root folder to General. Closes #10692 2018-02-02 10:39:26 +01:00
Marcus Efraimsson f158a604a0 Merge pull request #10683 from grafana/7883_new_url_structure
New dashboard/folder url structure
2018-02-02 10:23:03 +01:00
Patrick O'Carroll d2827a0005 Light theme icon color (#10730)
* working on new colors for icons in light theme

* more work on icon colors

* changed colors of icons for light theme
2018-02-02 10:18:45 +01:00
Carl Bergquist a7114dcec1 Merge pull request #10722 from AlexandreRio/patch-1
Update search datasource by name API path
2018-02-01 20:43:28 +01:00
Marcus Efraimsson cd61d2b237 Merge branch 'master' into 7883_new_url_structure 2018-02-01 17:32:43 +01:00
Marcus Efraimsson 744f402a96 db: fix failing integration tests for mysql and postgresql 2018-02-01 17:27:29 +01:00
Alexandre Rio 8ced9f6462 Update search datasource by name API path
Correct path for search by name endpoint is /api/datasources/:name
2018-02-01 16:41:33 +01:00
Marcus Efraimsson cef910dd78 Merge branch '7883_new_url_structure' of github.com:grafana/grafana into 7883_new_url_structure 2018-02-01 16:32:33 +01:00
Marcus Efraimsson 3db328f516 fix for dashboard/folder url's when having a sub path in root_url config 2018-02-01 16:30:48 +01:00
Torkel Ödegaard 5171d7e285 Merge branch 'master' of github.com:grafana/grafana 2018-02-01 15:45:59 +01:00
Torkel Ödegaard c3181552f8 ux: added max width to dashboard settings views 2018-02-01 15:45:15 +01:00
bergquist 734a2e59aa add gofmt as precommit hook 2018-02-01 15:23:52 +01:00
Daniel Lee 22a349051c Merge pull request #10719 from grafana/add_permissions_10676
Grafana 5.0: Add permissions modal for the permissions pages
2018-02-01 14:20:04 +00:00
Daniel Lee a77c656033 dashfolders: adds test for permission store 2018-02-01 14:48:11 +01:00
Carl Bergquist 3b4e487662 Merge pull request #10715 from grafana/7883_alerting
Implement new url format in alerting
2018-02-01 14:38:28 +01:00
Daniel Lee cc55ab6bc8 dashfolders: adds permission modal to dashboard settings 2018-02-01 14:32:19 +01:00
bergquist 90207bcb7d register handler for get dashboards by slug 2018-02-01 14:17:14 +01:00
bergquist fcd86fb24f make it easier for dashboards to generate ur; 2018-02-01 14:08:51 +01:00
bergquist 74ca6f6dbf changes dashboard url in alertlist 2018-02-01 14:08:51 +01:00
bergquist 992fd37010 alert: use new url format 2018-02-01 14:08:51 +01:00
Mikael Olenfalk c0f100f1b5 Improve logging in the phantomjs renderer (#10697)
* Add add adapter between io.Writer and log.Logger

* Add phantomjs output to grafana log

* Unexport LogWriterImpl

* Add test for LogWriter

* Make it possible to get phantomjs debug output

* Make it possible to get the configured log level
2018-02-01 14:04:52 +01:00
Daniel Lee 9cdc1428d7 Merge remote-tracking branch 'upstream/master' into add_permissions_10676 2018-02-01 14:02:14 +01:00
Marcus Efraimsson d8d82c1769 Merge pull request #10706 from grafana/7883_frontend_step2
WIP: Dashboard & Persistent urls - Frontend Step 2
2018-02-01 13:55:03 +01:00
Marcus Efraimsson cdf2fd64b7 route params from angular to view store should be updated on routeChangeSuccess 2018-02-01 13:28:04 +01:00
Alexander Zobnin 16e1640ba4 repeat panel: process repeats when row is expanding (#10712) 2018-02-01 13:23:45 +01:00
Marcus Efraimsson ee9c408188 folders: changes needed due to merge 2018-02-01 13:21:24 +01:00
Torkel Ödegaard 50bd9eee55 docs: removed section with session table sql, that is not needed anymore 2018-02-01 13:16:39 +01:00
Torkel Ödegaard d08a829b69 ux: fix for responsive breakpoints and solo mode showing sidemenu 2018-02-01 11:29:04 +01:00
Marcus Efraimsson ef90b3e49c Merge branch '7883_new_url_structure' into 7883_frontend_step2 2018-02-01 11:08:39 +01:00
Torkel Ödegaard b55ce1dd72 docs: moved whats new article to master 2018-02-01 10:55:29 +01:00
Marcus Efraimsson b135df9a6c Merge remote-tracking branch 'upstream/master' into 7883_new_url_structure 2018-02-01 10:48:06 +01:00
Torkel Ödegaard e985a9cd7c ux: fixed issue with zoom on graph caused scroll, fixes #10696 2018-02-01 10:36:55 +01:00
Carl Bergquist eff687bece Merge pull request #10694 from grafana/7883_backend
backend for new url structure.
2018-02-01 09:35:00 +01:00
Carl Bergquist 1303dc7ac0 Merge pull request #10704 from alexanderzobnin/fix-backend-plugin-table-rows
plugins: return table with empty rows array insteaf of nil
2018-02-01 09:17:29 +01:00
Marcus Efraimsson 90933b0621 dashboard: refactor logic for retrieving url for folder/dashboard 2018-01-31 23:14:48 +01:00
Marcus Efraimsson 40c83e3e22 dashboards: update dashboard/folder url if browser url is not the same as from backend 2018-01-31 18:40:54 +01:00
Marcus Efraimsson c0c3f17d84 dashboards: when restoring a dashboard to an older version, set current uid 2018-01-31 18:40:54 +01:00
Marcus Efraimsson 8fc648ac43 dashboards: fix updating folder so that correct url is returned 2018-01-31 18:40:54 +01:00
Marcus Efraimsson 035b724725 dashboards: remove slug property in dashboard search responses
Removes slug property in dashboard search responses since this property isn't needed
anymore and it haven't been released to any stable release.
2018-01-31 18:40:54 +01:00
Marcus Efraimsson 92a0171a9b folders: change the front end route for browsing folders
Change the front end route for folders to /dashboards/f/<uid>/<slug of folder title>.
Use new route for deleting dashboard/folder by uid.
Retrieve dashboard/folder by uid when moving or deleting dashboards/folders.
2018-01-31 18:40:54 +01:00
Marcus Efraimsson b23560ed5a dashboards: add validation to delete dashboard by slug
Validates that there are only one folder/dashboard having that slug,
otherwise returns 412 Precondition Failed
2018-01-31 18:40:54 +01:00
Marcus Efraimsson 95d063621e dashboards: new route for deleting dashboards by uid 2018-01-31 18:40:54 +01:00
Marcus Efraimsson c19f4a866f Merge pull request #10695 from grafana/7883_frontend_step
WIP: Dashboard & Persistent urls - Frontend Step
2018-01-31 18:37:05 +01:00
Alexander Zobnin db7890ec1e plugins: return table with empty rows array insteaf of nil 2018-01-31 19:59:15 +03:00
bergquist 58cfb23625 retry uid generation 2018-01-31 17:29:17 +01:00
Torkel Ödegaard 75cf9ae27d fix: use replace when redirecting to new url 2018-01-31 17:26:35 +01:00
Johannes Schill 2e0cc2e347 ux: Change input width of UserPicker and TeamPicker in AddPermissions component #10676 2018-01-31 17:01:04 +01:00
Daniel Lee 3a0459e425 Merge branch 'dashboard_permissions' 2018-01-31 16:53:07 +01:00
Daniel Lee a5197046e8 viewstore: fix test after merge 2018-01-31 16:49:41 +01:00
Johannes Schill 780c7f8775 tests: Add TeamPicker test and update TeamPicker/UserPicker snapshots so they match the latest classNames update #10676 2018-01-31 16:48:45 +01:00
Daniel Lee a9e2273064 Merge remote-tracking branch 'upstream/master' into dashboard_permissions 2018-01-31 16:45:32 +01:00
Daniel Lee a0fc5383fd dashfolders: fix for folder picker
If the selected folder is not in the options then manually create it. This
can happen in some edge cases (if an user has been given access to a
dashboard but does not have access to its parent folder)
2018-01-31 16:44:55 +01:00
Johannes Schill a73af39056 ux: Add an optional className to the UserPicker and TeamPicker #10676 2018-01-31 16:44:14 +01:00
Daniel Lee 7e2e57c306 dashfolders: fixes #10671. Allow Editors default access to Root.
Editors should be able to create dashboards in root and should be
able to create folders. They cannot administrate permissions though
and these dashboards and folders will get the default permissions.
2018-01-31 16:43:21 +01:00
Torkel Ödegaard 4ac21d2e8f docs: added redirect from old provision page, #10691 2018-01-31 16:20:14 +01:00
Johannes Schill 20052150ba tests: Move tests from Permissions to AddPermissions #10676 2018-01-31 16:15:05 +01:00
Johannes Schill 1b9e02e4cc tests: Update tests in PermissionsStore and rem out the Permissions-tests for now #10676 2018-01-31 16:12:51 +01:00
bergquist 9aa488c084 Merge remote-tracking branch 'origin/7883_frontend_step' into 7883_backend
* origin/7883_frontend_step:
  dashboards: make scripted dashboards work using the old legacy urls
  dashboards: redirect from old url used to load dashboard to new url
  dashboards: add new default frontend route for rendering a dashboard panel
  dashboards: fix links to recently viewed and starred dashboards
  dashboards: use new *url* prop from dashboard search for linking to dashboards
  dashboards: when saving dashboard redirect if url changes
  dashboards: add new default frontend route for loading a dashboard
  dashboards: return url in response to save dashboard. #7883
2018-01-31 15:57:03 +01:00
Daniel Lee 2409d129c2 dashfolders: text change 2018-01-31 15:41:52 +01:00
Daniel Lee 9ef64d3056 dashfolders: special case for folders in root
Allow users to change permissions inherited from root.
2018-01-31 15:34:05 +01:00
bergquist 16a1642831 gofmt... 2018-01-31 15:15:15 +01:00
Daniel Lee a7e57bc2f8 spelling 2018-01-31 15:07:17 +01:00
bergquist 3da2ab61e0 Verifies requirement of id in dashboards. 2018-01-31 14:36:14 +01:00
Johannes Schill 2ad4c30bc6 ux: POC - Update "Add permissions" design and add a fancy animation #10676 2018-01-31 14:19:07 +01:00
bergquist 7e96052594 ensure dashboard title is unique in folder 2018-01-31 14:18:54 +01:00
Frederic Hemberger d90dfcc203 docs: Remove obsolete Ansible rule (#10689)
According to the author, the Ansible role is obsolete:
https://github.com/picotrading/ansible-grafana/issues/8#issuecomment-342210822
As the proposed alternative (https://github.com/jtyr/ansible-grafana/) hasn't been updated in the last two years either, I'm suggesting it should be removed altogether in favor of the role maintained by cloudalchemy.
2018-01-31 14:15:32 +01:00
Frederic Hemberger f57e106dd5 docs: Fix outdated provisioning link (#10690) 2018-01-31 14:15:16 +01:00
Chris Rice dba93d8240 Renamed "Period" to "Min period" in CloudWatch query editor (#10665) 2018-01-31 14:14:34 +01:00
Patrick O'Carroll ad893614e1 created cta-bg variable and changed bg color on light theme (#10693) 2018-01-31 14:14:11 +01:00
Alexander Zobnin 56c526fad3 Repeat panels when row is expanding (#10679)
* fix: repeat panels when row is expanding

* repeat panel: change test name to more clear one
2018-01-31 14:13:47 +01:00
Marcus Efraimsson 57edf89033 dashboards: make scripted dashboards work using the old legacy urls
Scripted dashboards are still requested from /dashboard/script/scripted.js
#7883
2018-01-31 14:07:49 +01:00
Marcus Efraimsson a99331cdb9 dashboards: redirect from old url used to load dashboard to new url
If legacy backend routes (/dashboard/db/<slug> and /dashboard-solo/db/<slug>)
are requested we try to redirect to new routes with a 301 Moved Permanently
 #7883
2018-01-31 14:06:19 +01:00
Daniel Lee 1cfc81de74 playlist: fixes #10254
Closes #10254
2018-01-31 11:07:27 +01:00
Marcus Efraimsson 3efb3d8efa dashboards: add new default frontend route for rendering a dashboard panel
New default route /d-solo/<uid>/<slug of dashboard title> where dashboard
panel are rendered by unique identifier and panel identifier.
If old route /dashboard-solo/db/<slug of dashboard tile> are used,
try to lookup dashboard by slug and redirect to new default route.
Change url logic for sharing a panel so that the new default route
for rendering a dashboard panel are used.
 #7883
2018-01-31 11:01:23 +01:00
Daniel Lee 79fe01959b alerting: small refactoring 2018-01-31 10:47:31 +01:00
Johannes Schill 666d29fafa dashfolders: POC - Use separate component for "Add permission" #10676 2018-01-31 10:39:38 +01:00
bergquist bb3183f6cd removes uniqnes check on slug when saving dashboards 2018-01-31 10:29:52 +01:00
bergquist 6d2a555866 Drops unique index orgid_slug from dashboards. 2018-01-31 10:26:06 +01:00
bergquist 56d5ece340 plugins: return empty tables array insteaf of nil 2018-01-31 09:59:23 +01:00
Daniel Lee 816c4d2340 url: fix for boolean querystring parameters
Without this fix then the querystring looks like ?abool=true which causes
a mismatch with the angular routing. This results in a redirect and messes
up the browser history and back button.
2018-01-31 09:58:21 +01:00
Patrick O'Carroll 465e701b42 moved icon (#10681) 2018-01-31 09:52:29 +01:00
Marcus Efraimsson 7734df1d18 dashboards: fix links to recently viewed and starred dashboards
Use new property url from dashboard search for linking to dashboards
#7883
2018-01-31 00:48:36 +01:00
Marcus Efraimsson f2014223b4 dashboards: use new *url* prop from dashboard search for linking to dashboards
#7883
2018-01-31 00:42:17 +01:00
Marcus Efraimsson 8009307c16 dashboards: when saving dashboard redirect if url changes
Redirect if new dashboard created or existing url changes.
#7883
2018-01-31 00:32:51 +01:00
Marcus Efraimsson aefcff26a6 dashboards: add new default frontend route for loading a dashboard
New default route /d/<uid>/<slug of dashboard title> where dashboard
are loaded by unique identifier.
If old route /dashboard/db/<slug of dashboard tile> are used,
try to lookup dashboard by slug and redirect to new default route.
 #7883
2018-01-31 00:27:51 +01:00
Marcus Efraimsson 369597f7b2 dashboards: return url in response to save dashboard. #7883 2018-01-31 00:09:14 +01:00
Marcus Efraimsson 6ab526881a dashboards: ensure that uid is returned from getSaveModelClone
Without this the uid will not be sent to the backend when saving a
dashboard.
#7883
2018-01-31 00:06:31 +01:00
Daniel Lee eb765d288c alertlist: disable pause button when user does not have permission 2018-01-30 23:35:27 +01:00
Marcus Efraimsson fd59241e35 dashboards: revert adding api for retrieving uid by slug
Since we're already have possibility to get a dashboard by slug
it makes little sense to have a separate endpoint in api for
retrieving uid by slug.
#7883
2018-01-30 23:18:34 +01:00
Marcus Efraimsson 4829ea0e9f util: remove retry logic in shortid_generator
Use shortid.MustGenerate() instead of shortid.Generate(). Instead
of returning errors it will panic.
2018-01-30 23:18:34 +01:00
Marcus Efraimsson 9fb7b887db dashboards: add url property to dashboard meta and search api responses
#7883
2018-01-30 23:18:34 +01:00
Marcus Efraimsson 7ee691dc48 dashboards: api for retrieving uid by slug. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson 13d5db7d19 dashboards: add support for retrieving a dashboard by uid
Introduces new url in api /dashboards/<uid> for fetching dashboard by unique id
Leave the old dashboard by slug url /dashboards/db/<slug> for backward
compatibility and for supporting fallback
WIP for #7883
2018-01-30 23:18:34 +01:00
Marcus Efraimsson c1cff3849e dashboard: change unique index for uid to include org_id
Make the max length of uid longer in case we want to change it later
#7883
2018-01-30 23:18:34 +01:00
Marcus Efraimsson 46e1296700 dashboards: return uid in response to creating/updating a dashboard. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson e229f8aea8 dashboards: extract short uid generator to util package. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson fc7bab8bf0 dashboard: fix failing test. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson 5b35c694dc dashboard: generate and include uid in dashboard model. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson 025a14ec24 db: add migrations for creating a unique index for uid. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson 50aa9ec69c db: add migrations for generating uid for existing dashboards. #7883 2018-01-30 23:18:34 +01:00
Marcus Efraimsson 401b01e1e6 db: add new column uid to the dashboard table. #7883 2018-01-30 23:18:34 +01:00
Patrick O'Carroll 2c8e448559 moved icon (#10681) 2018-01-30 20:01:12 +01:00
Daniel Lee 4bc5945c17 dashfolders: remove inline styles 2018-01-30 17:26:44 +01:00
Torkel Ödegaard 7cd379ac9f docs: fixed order of sidemenu 2018-01-30 16:14:28 +01:00
bergquist 8c8328eac5 test: fixes failing test in go1.10 2018-01-30 16:00:32 +01:00
Torkel Ödegaard cca050ea14 docs: updated versions.json 2018-01-30 15:07:52 +01:00
Daniel Lee f5107d5023 alerting: add permission check in api for pausing alerts 2018-01-30 14:41:25 +01:00
Daniel Lee 87d6d791d5 dashfolders: adds comment for dashboard api tests 2018-01-30 14:09:30 +01:00
Torkel Ödegaard b4aa92e7ff docs: added versions file 2018-01-30 13:28:16 +01:00
Daniel Lee 2b7984355a dashfolders: adds comment for dashboard acl test 2018-01-30 13:28:00 +01:00
Daniel Lee a00a42d9ee api: extract api test code to common_test.go 2018-01-30 13:17:48 +01:00
Alexander Zobnin f8faa7dbba Merge branch 'ilgizar-10672_outside_the_row' 2018-01-30 14:20:24 +03:00
Alexander Zobnin 526960058a repeat panel: minor refactor 2018-01-30 14:19:10 +03:00
Daniel Lee 0fb05bcf59 Merge remote-tracking branch 'upstream/master' into dashboard_permissions 2018-01-30 09:26:23 +01:00
ilgizar 1c95da8f23 Fix horizontal panel repeat. Fix #10672. 2018-01-30 09:52:30 +05:00
Johannes Schill ee57ed10f9 dashfolders: Add min-width to align icons in permissions list and some margin between icon and text #10275 2018-01-29 17:10:25 +01:00
Johannes Schill 0573545d5a ui: Fix Firefox align issue in dropdowns #10527 (#10662) 2018-01-29 17:06:16 +01:00
Torkel Ödegaard b1cf4cf01c fix: InfluxDB Query Editor and selecting template variable in where clause caused issue, fixes #10402, fixes #10663 2018-01-29 17:04:29 +01:00
Daniel Lee d74a98feff dashfolders: link to folder for inherited permissions
In the permissions view in dashboard settings, this adds a
link to the parent folder for inherited permissions. Which
allows the user to easily navigate to the folder and change
inherited permissions.
2018-01-29 16:10:47 +01:00
Johannes Schill 7900fd4a79 test: Update Tooltip test to check for className support 2018-01-29 15:54:59 +01:00
Alexander Zobnin 479658489a fix: remove repeated rows when repeat was disabled. (#10653) 2018-01-29 15:17:27 +01:00
Johannes Schill e6c161d897 test: Update Popover test to check for className support 2018-01-29 15:10:05 +01:00
Johannes Schill 51b0f2b0c8 dashfolders: Get rid of unused import #10275 2018-01-29 14:53:10 +01:00
Johannes Schill 787b493c00 dashfolders: Use grafana's question mark instead of FA's and use the react tooltip instead of angular's #10275 2018-01-29 14:53:10 +01:00
Johannes Schill d9460d0b2b dashfolders: Add className to Tooltip component 2018-01-29 14:51:28 +01:00
Alexander Zobnin 04053ec56c fix: don't show manually hidden sidemenu after view mode toggle (#10659) 2018-01-29 14:33:41 +01:00
Daniel Lee 146af8595d dashfolders: css class as parameter for Picker
For the permissions picker, pass in an extra class to decide
if the description should be aligned left or right.
2018-01-29 14:30:01 +01:00
Daniel Lee 5ee2d1de05 dashfolders: select with description for permissions
The dropdown for selecting permission is a new component built on
react-select that includes a description for the permission for
every option in the select.
2018-01-29 13:56:12 +01:00
Alexander Zobnin b3ac85766e fix: show sidebar after mouse wheel scrolling (#10657) 2018-01-29 13:38:37 +01:00
Torkel Ödegaard a0323e96fa fix: tweak of PR #10635 2018-01-29 10:46:05 +01:00
Torkel Ödegaard dd4374cc65 Merge remote-tracking branch 'origin/10612_table-date-format' 2018-01-29 10:41:57 +01:00
Torkel Ödegaard 9363c40a0c Merge branch 'master' of github.com:grafana/grafana 2018-01-29 10:41:28 +01:00
Torkel Ödegaard b6ce16ebae ux: minor tweak of #10634 2018-01-29 10:41:06 +01:00
bergquist 2782ad0955 plugins: only set error if errorstring is not empty 2018-01-29 09:53:18 +01:00
Torkel Ödegaard c5a75ab84a Merge remote-tracking branch 'origin/10628_search_media_break' 2018-01-29 09:29:46 +01:00
Torkel Ödegaard cd2161e796 Revert "Fix typeahead to avoid generating new backend request on each keypress. (#10596)"
This reverts commit 475febd004.
2018-01-29 08:38:23 +01:00
Daniel Lee a7fba593df dashfolders: add help popover. Add folder title for inherited permissions 2018-01-27 18:16:21 +01:00
Daniel Lee 50b20a0e5a dashfolders: use react component for dashboard permissions
Switch out the angular component for the new react component on the
dashboard permissions editview on the settings page.
2018-01-27 17:26:40 +01:00
Patrick O'Carroll 5f81f401e3 replaced input with gf-form-dropdown 2018-01-26 17:25:12 +01:00
Patrick O'Carroll ffff75b01a reverted media queries 2018-01-26 16:59:16 +01:00
bergquist c34d458b94 Merge branch 'go1.9.3'
* go1.9.3:
  tech: upgrade to golang 1.9.3
2018-01-26 16:00:31 +01:00
Alexander Zobnin e6c19eb8e9 graphite: fix nested alerting queries (#10633) 2018-01-26 15:05:05 +01:00
Patrick O'Carroll 2f891726c3 fix for sm 2018-01-26 14:57:55 +01:00
Patrick O'Carroll 08822fbdca added media break for md and sm 2018-01-26 14:46:52 +01:00
Daniel Lee 83548f98b9 dashfolders: add disabled Admin permission to list
This is a fake entry that is used to signal to the user that an Admin
user always has Admin rights and they cannot be removed.
2018-01-26 14:38:27 +01:00
bergquist 33beacff0a tech: upgrade to golang 1.9.3 2018-01-26 14:34:47 +01:00
Leonard Gram d85b9c28c1 Locks down prometheus1 to v1.8.2 in live-test. 2018-01-26 14:32:20 +01:00
hannes eefcb3080a fix typo in parameter. (#10613)
* options.scopedVars was called without 'd', so a undefined was passed
  to the function convertDimensionFormat()
2018-01-26 14:10:17 +01:00
Daniel Lee ccd86873e7 dashfolders: autosave permissions on change (remove update button) 2018-01-26 14:02:22 +01:00
bergquist 0c6a90db08 changelog: move all 4.7 changes into 5.0 2018-01-26 11:16:09 +01:00
bergquist a17dbf9af8 changelog: be more explicit about backwards compatibility 2018-01-26 10:51:31 +01:00
Marcus Efraimsson 3d1c624c12 WIP: Protect against brute force (frequent) login attempts (#10031)
* db: add login attempt migrations

* db: add possibility to create login attempts

* db: add possibility to retrieve login attempt count per username

* auth: validation and update of login attempts for invalid credentials

If login attempt count for user authenticating is 5 or more the last 5 minutes
we temporarily block the user access to login

* db: add possibility to delete expired login attempts

* cleanup: Delete login attempts older than 10 minutes

The cleanup job are running continuously and triggering each 10 minute

* fix typo: rename consequent to consequent

* auth: enable login attempt validation for ldap logins

* auth: disable login attempts validation by configuration

Setting is named DisableLoginAttemptsValidation and is false by default
Config disable_login_attempts_validation is placed under security section
#7616

* auth: don't run cleanup of login attempts if feature is disabled

#7616

* auth: rename settings.go to ldap_settings.go

* auth: refactor AuthenticateUser

Extract grafana login, ldap login and login attemp validation together
with their tests to separate files.
Enables testing of many more aspects when authenticating a user.
#7616

* auth: rename login attempt validation to brute force login protection

Setting DisableLoginAttemptsValidation => DisableBruteForceLoginProtection
Configuration disable_login_attempts_validation => disable_brute_force_login_protection
#7616
2018-01-26 10:41:41 +01:00
Daniel Lee 08c78ab8b7 dashfolders: fix tests for ViewStore after merge 2018-01-26 09:55:03 +01:00
James Westover 475febd004 Fix typeahead to avoid generating new backend request on each keypress. (#10596)
* Fix typeahead to not generate new request on each keypress.

* Change to debounce method
2018-01-26 09:27:06 +01:00
Alexander Zobnin cffbb6afd5 fix vertical panel repeat (#10619) 2018-01-26 09:24:56 +01:00
Alexander Zobnin b79017e4a4 graph: fix series sorting issue (#10617) 2018-01-26 09:23:56 +01:00
Carl Bergquist ac2b36c271 Merge pull request #10610 from grafana/phantomjs_fix
fixes broken phantomjs rendering
2018-01-25 21:25:02 +01:00
Johannes Schill 49634593cf dashfolders: New snapshot since we changed from defaultValue to value per latest React documentation #10275 2018-01-25 15:37:49 +01:00
Johannes Schill 1255a0a356 refactor: Replace _.find with Array.prototype.find() 2018-01-25 15:37:27 +01:00
Johannes Schill 34f27f6b15 dashfolders: Convert mobx observable to js objects and remove the observer() since we want to use the component outside the react/mobx world #10275 2018-01-25 15:37:15 +01:00
Johannes Schill 0722ea04a6 dashfolders: Clean up more variables and move newType, aclTypes and permissionOptions to the store #10275 2018-01-25 15:37:05 +01:00
Johannes Schill 4ea9f3027a dashfolders: Remove variables not used and pass in the real dashboardId #10275 2018-01-25 15:36:56 +01:00
Johannes Schill 02a3951f95 dashfolders: Remove those 2-line-components from PageHeader to make it easier to read and make sure components listening to the mobx state are wrapped with observer() #10275 2018-01-25 15:36:45 +01:00
Johannes Schill 766ab69143 dashfolders: Add support for breadcrumbs in NavStore #10275 2018-01-25 15:36:34 +01:00
Johannes Schill 3a94918b8f dashfolders: Rename UserPicker folder => Picker. Inject the permission-store in the FolderPermissions-container instead of the Permissions component, add the PermissionsStore to the RootStore and and the error-message to the Permissions-store #10275 2018-01-25 15:36:04 +01:00
Johannes Schill 126607de83 dashfolders: Add Permissions information box #10275 2018-01-25 15:33:56 +01:00
Johannes Schill 6b421b80a6 dashfolders: Fix page max width #10275 2018-01-25 15:33:45 +01:00
Johannes Schill c3664e1d87 dashfolders: Update jest tests with backendSrv #10275 2018-01-25 15:33:36 +01:00
Johannes Schill 5a9fe9aff9 dashfolders: Add a Team Picker component and use it on the dashboard permissions page #10275 2018-01-25 15:33:11 +01:00
Johannes Schill 6b9858c1d3 dashfolders: Working user picker on the dashboard permissions page #10275 2018-01-25 15:30:43 +01:00
Johannes Schill 2de0489868 dashfolders: Send down backendSrv to the react components #10275 2018-01-25 15:30:15 +01:00
Johannes Schill b79a15b057 dashfolders: Re-use the API of the angular user picker instead, which is reusable #10275 2018-01-25 15:29:21 +01:00
bergquist d62d5c7418 provisioning: delete dashboards from db when file is missing 2018-01-25 15:25:07 +01:00
Johannes Schill 1d8ce3673e dashfolders: Remove the PermissionsInner-strategy since we have a container for this route now #10275 2018-01-25 15:20:56 +01:00
Johannes Schill a5d441e78e dashfolders: Permissions are injected via MST so it needs to be defined as optional #10275 2018-01-25 15:20:37 +01:00
Johannes Schill f23fb740a9 dashfolders: Add FolderPermissions container and make sure isFolder is passed to PermissionsStore #10275 2018-01-25 15:20:00 +01:00
Johannes Schill 7e13d0f773 dashfolders: Always get dashboardid and backendsrv from props #10275 2018-01-25 15:19:41 +01:00
Johannes Schill 3490c44636 dashfolders: Rem code to avoid tests to fail #10275 2018-01-25 15:19:30 +01:00
Johannes Schill 44ea8e58e2 wip: More on the permissions. Left are team picker and user picker, tests and error messages #10275 2018-01-25 15:19:17 +01:00
Johannes Schill 460cbe98a1 fix: mobx-react-devtools is a dev dependancy #10275 2018-01-25 15:18:46 +01:00
Johannes Schill c8193e10b9 dashfolder: wip: More wip on acl.html2permissions.tsx #10275 2018-01-25 15:18:16 +01:00
Johannes Schill 7616cfb5f0 dashfolders: wip - Move Permissions into React #10275 2018-01-25 15:14:59 +01:00
Daniel Lee bc5fae5367 dashfolders: merge conflict 2018-01-25 14:54:50 +01:00
Daniel Lee 4cfe179f47 variables: lint fix 2018-01-25 14:49:51 +01:00
Daniel Lee 8aa55ee352 variables: fix when datasource returns error 2018-01-25 14:16:06 +01:00
bergquist 49673c509d fixes broken phantomjs rendering
when migrating from govendor to dep we broke the phantomjs rendering.

ref #10602
2018-01-25 13:27:24 +01:00
Patrick O'Carroll eb2d4b20bc added varibale to table hover, lightend colors for table light theme, fixes #10609 (#10611) 2018-01-25 12:17:16 +01:00
Leonard Gram 1c034b7a73 fixes minor typo 2018-01-25 09:30:37 +01:00
bergquist c3a768b3ed provsioning: dont stop grafana due to missing 2018-01-25 09:30:37 +01:00
Jonathan McCall 579d2b63f8 Disable prefix and postfix font size when gauge mode is enabled (#10573)
* Disable prefix and postfix font size when gauge mode is enabled

* Use function to hide prefix/postfix size when using gauge

* Rename disableFontSizes to canChangeFontSizes
2018-01-25 09:27:25 +01:00
bergquist 31a5134a0f docs: improve docs for image uploaders 2018-01-24 22:26:00 +01:00
Carl Bergquist 7c9913cb8a Merge pull request #10605 from tsvehagen/haproxy-example
docs: Add haproxy example for running behind reverse-proxy
2018-01-24 22:03:53 +01:00
bergquist 1508755422 cfg: remove local as default image uploader
ref #9967
2018-01-24 21:31:07 +01:00
Tobias Svehagen f129754a96 docs: Add haproxy example for running behind reverse-proxy 2018-01-24 20:03:46 +01:00
bergquist 57e7048b8f provisioning: enables title changes for dashboards 2018-01-24 19:16:57 +01:00
hannes 43e6ea95e0 Cloudwatch: add support for multi instances (#10570)
* cloudwatch: fix ebs_volume_ids by create a client-session before call ec2:DescribeInstances.

* cloudwatch: add support for multi instanceIds on call ebs_volume_ids.
2018-01-24 15:41:42 +01:00
Torkel Ödegaard 889bc29330 ux: minor change, added import dashboard link to dashboard search side view 2018-01-24 15:29:16 +01:00
Leonard Gram 2d090829d8 Merge pull request #10603 from xlson/pruned-deps
tech: adds/removes in vendor folder according to dep 0.4.0.
2018-01-24 14:04:56 +01:00
Leonard Gram f6fac03958 tech: adds/removes in vendor folder according to dep 0.4.0. 2018-01-24 14:01:45 +01:00
Marcus Efraimsson 39dd4799f0 docker: sync local time and timezone to mysql_tests block 2018-01-24 11:43:56 +01:00
Marcus Efraimsson d36fd66dba dashfolder: fix for sqlite test 2018-01-24 11:43:08 +01:00
Marcus Efraimsson 1a5dee3c11 Merge pull request #10600 from grafana/mysql_dep_fix
mysql: pin the mysql dependency
2018-01-24 11:27:45 +01:00
Daniel Lee 9d2a667e8b dashfolder: fix for mysql test 2018-01-24 11:19:26 +01:00
bergquist 6618bff806 mysql: pin the mysql dependency 2018-01-24 11:07:57 +01:00
bergquist d7f6f11eb1 tech: ignore /public and /node_modules 2018-01-24 11:01:27 +01:00
bergquist d36e424fe0 tech: ignore /data folder for dep 2018-01-24 10:50:01 +01:00
bergquist 6a6eab5ea1 plugins: map error property on query result 2018-01-24 10:37:04 +01:00
bergquist ee973a977b stats: send amount of stars as stats 2018-01-23 22:51:05 +01:00
bergquist ea988a37dd tech: avoid using deprecated functions 2018-01-23 22:30:45 +01:00
bergquist 5a1cf2c793 style: minor code style changes 2018-01-23 22:28:47 +01:00
bergquist 77a4ccb822 dashboards: save provisioning meta data 2018-01-23 21:54:30 +01:00
bergquist 67a9e6a71d provisioing: add lookup table provisioned dashboards 2018-01-23 21:52:55 +01:00
Torkel Ödegaard dd70710617 refactor: minor css class naming change of #10505 2018-01-23 16:10:04 +01:00
Torkel Ödegaard 12b08b61d7 Merge remote-tracking branch 'origin/graphite-query-editor-enhancements' 2018-01-23 16:02:46 +01:00
Torkel Ödegaard 3662b03d8f Merge branch 'master' of github.com:grafana/grafana 2018-01-23 13:04:09 +01:00
Torkel Ödegaard dbfaf5dac8 refactor: minor refactoring of PR #10560 2018-01-23 13:03:44 +01:00
hannes d82af23f1c cloudwatch: fix ebs_volume_ids by create a client-session before call ec2:DescribeInstances. (#10566) 2018-01-23 12:57:05 +01:00
Torkel Ödegaard a24aa3ae28 Merge branch 'generic-oauth-jwt' of https://github.com/DanCech/grafana 2018-01-23 12:44:27 +01:00
Marcus Efraimsson 1ce6a420cb docker: use mysql and postgres from latest fake-data-gen 2018-01-23 10:51:48 +01:00
Carl Bergquist e24d9a6224 Merge pull request #10584 from bkaganyildiz/update-opsgenie-notifier
Update OpsGenie Notifier to support different api domains.
2018-01-23 08:57:13 +01:00
bkaganyildiz 97d969bd5c Update OpsGenie Notifier to support different api domains. 2018-01-22 22:27:35 +03:00
Patrick O'Carroll c611ffa4bc 10583 panel resize icon fix (#10585)
* removed svg, added ::after

* removed unnecessary code
2018-01-22 16:49:45 +01:00
Marcus Efraimsson f8a03fa3e3 Merge pull request #10587 from grafana/10580_search_bug
dashboards: Fix issue with first click when expanding folder in search
2018-01-22 16:44:31 +01:00
Marcus Efraimsson b5a6a9ab3b dashboards: Fix issue with first click when expanding folder in search
Fixes #10580
2018-01-22 16:12:52 +01:00
bergquist 5546828b9f cfg: adds info about local img uploader to docs 2018-01-22 11:11:30 +01:00
bergquist 704a198ffa docs: adds info about local img uploader 2018-01-22 11:09:16 +01:00
bergquist b98dd680e9 changelog: adds note about closing #6922 2018-01-22 11:04:56 +01:00
Carl Bergquist 184e7046df Merge pull request #10059 from FunkyM/local-image-store
Add support for internal image store
2018-01-22 11:03:00 +01:00
bergquist 6780e00c7d changelog: note about closing #9664 2018-01-22 10:47:23 +01:00
Carl Bergquist 89ae4d6685 Merge pull request #9664 from mtanda/prometheus_on_by
(prometheus) show label name in paren after by/without/on/ignoring/group_left/group_right
2018-01-22 10:42:20 +01:00
bergquist 9678be15d9 changelog: adds note about closing #9770 2018-01-22 08:16:31 +01:00
Carl Bergquist 27d103adae Merge pull request #10574 from Jonnymcc/disable-mode-options-line-points-unchecked
Disable instead of hide mode options when line/points is unchecked
2018-01-22 08:11:19 +01:00
Carl Bergquist 397da7a444 Merge pull request #10572 from Jonnymcc/add-lumens-unit
Add lumens unit
2018-01-22 07:35:26 +01:00
Jonathan McCall f516c82ddc Disable instead of hide mode options when line/points is unchecked 2018-01-20 19:23:26 -05:00
Daniel Lee 94a54248c1 dashfolders: show folders use can save to in picker
Instead of returning all folders a user has some sort of access to,
this change creates a new end point that returns folders the user
has write access to. This new endpoint is used in the folder picker
2018-01-20 01:58:28 +01:00
Daniel Lee f443cb8229 dashfolders: fix bug in save as modal 2018-01-20 01:58:28 +01:00
Jonathan McCall 88e1ec3382 Add lumens unit 2018-01-19 19:12:30 -05:00
Dan Cech 562aa58029 add docs for configuring OAuth with Auth0 and Azure AD 2018-01-19 14:00:17 -05:00
Carl Bergquist 1de00ded1e Merge pull request #10556 from Ultimation/patch-1
Recommend a limit on database query for influxdb annotations
2018-01-19 13:49:29 +01:00
bergquist 083abff297 Merge branch 'master' into provisioning
* master:
  install dep instead of govendor on setup
  remove unused code from vendor
  migrate from govendor to dep
  fix: cloudwatch corrected error handling so original error is not thrown away
  Generic Oauth Support for ADFS (#9242)
  Adjusted the border color on the buttons in dashboard nav, fixed alert email text area width, fixed padding-top issue on dashboard settings aside
  mysql: convert numbers to text for annotation tooltip
  mysql: update to use ColumnTypes interface in new version
  mysql: update mysql driver to latest master
  gofmt my dear friend
  ux: updated react-layout-grid
2018-01-19 10:36:02 +01:00
bergquist 278337e45a install dep instead of govendor on setup 2018-01-19 10:27:02 +01:00
Carl Bergquist 987a546e74 Merge pull request #10563 from grafana/golang_dep
Migrated from govendor to dep
2018-01-19 10:22:54 +01:00
bergquist 7ed643f302 remove unused code from vendor 2018-01-19 09:54:22 +01:00
bergquist e023f79c5a migrate from govendor to dep 2018-01-19 09:48:15 +01:00
Torkel Ödegaard 4f59d229fe fix: cloudwatch corrected error handling so original error is not thrown away 2018-01-19 09:24:44 +01:00
Dan Cech a09044a45a go fmt 2018-01-18 19:17:05 -05:00
Dan Cech 04e17c145f support for decoding JWT id tokens 2018-01-18 18:25:58 -05:00
Torkel Ödegaard 4720b86f5c Merge remote-tracking branch 'origin/mattttt-style-tweaks' 2018-01-18 19:18:34 +01:00
Torkel Ödegaard 2d192f6cc8 Merge branch 'dashboard_permissions' of github.com:grafana/grafana into dashboard_permissions 2018-01-18 18:24:17 +01:00
Torkel Ödegaard cfa775e012 ds: updated ds nav 2018-01-18 18:17:58 +01:00
Torkel Ödegaard dc3e943a4e feat: ds edit fix 2018-01-18 17:43:41 +01:00
Torkel Ödegaard ccde8d9e2f feat: ds edit nav 2018-01-18 17:42:40 +01:00
Dan Cech 5bb22b836d Generic Oauth Support for ADFS (#9242)
* check upn field if email address isn't present, support for adfs

* correctly set login to the user's email address if not specified by the oauth server

* break up GenericOAuth.UserInfo into helper functions
2018-01-18 17:24:04 +01:00
Andrew Cottrell 8368bfeab4 Recommend a limit on database query
Users not putting a limit on can end up causing bad performance. A recommended limit in the placehold is a quick little help.
2018-01-18 14:31:42 +00:00
Matt 0dffb6dbb1 Adjusted the border color on the buttons in dashboard nav, fixed alert email text area width, fixed padding-top issue on dashboard settings aside 2018-01-18 14:40:08 +01:00
Daniel Lee f64637c2c5 dashfolders: stop user locking themselves out of a folder 2018-01-18 14:30:04 +01:00
Daniel Lee 10018d8455 dashfolders: add breadcrumbs to NavStore 2018-01-18 12:12:07 +01:00
bergquist 7858965117 codestyle: extract code into methods 2018-01-18 12:04:12 +01:00
Daniel Lee 1a019052d5 mysql: convert numbers to text for annotation tooltip 2018-01-18 11:50:16 +01:00
Daniel Lee 6d13645206 mysql: update to use ColumnTypes interface in new version
The custom code in vendor is not needed anymore and most of the
mapping code can be replaced.
2018-01-18 11:50:16 +01:00
Daniel Lee 7bc7af6c39 mysql: update mysql driver to latest master
The latest master implements the ColumnType interface.

See https://github.com/go-sql-driver/mysql/issues/495

This removes the custom code in the vendor folder that
did a ColumnType mapping.
2018-01-18 11:50:16 +01:00
bergquist a32644198c gofmt my dear friend 2018-01-18 11:49:45 +01:00
Torkel Ödegaard 7dc046d9f5 ux: updated react-layout-grid 2018-01-18 11:33:39 +01:00
Carl Bergquist d6667c4fa0 Merge pull request #10548 from StevenTobin/follow_symlinks
Make file_reader follow symlinks
2018-01-18 11:29:34 +01:00
bergquist b6e6935821 plugins: send secureJsonData unencrypted 2018-01-18 11:22:44 +01:00
Carl Bergquist 81bb3e1e27 Merge pull request #10547 from grafana/provisioning
Dashboard provisioning. Replace folder property with path
2018-01-18 10:05:19 +01:00
stobin f1813ae3a3 Make file_reader follow symlinks 2018-01-17 14:51:17 +00:00
bergquist 34d7f8a44f dashboards as cfg: property path replaces folder 2018-01-17 15:48:24 +01:00
bergquist 9e20004ec8 Merge branch 'plugin_lib'
* plugin_lib:
  moves datasource plugin model to grafana/grafana_plugin_model
2018-01-17 13:47:36 +01:00
bergquist a183ea97bb moves datasource plugin model to grafana/grafana_plugin_model 2018-01-17 13:21:42 +01:00
Torkel Ödegaard af9d1cc577 Update package.json
fixed duplicate dev dependency, closes #10542
2018-01-17 11:53:49 +01:00
Torkel Ödegaard 561561d8fe fix: fixed build issue 2018-01-17 10:48:07 +01:00
Torkel Ödegaard 66edb29f53 fix: multi valued query variables did not work correctly, fixes #10539 2018-01-17 09:41:35 +01:00
Dan Cech c62b0858ae move graphite /functions parsing into gfunc.ts 2018-01-16 18:04:59 -05:00
Dan Cech 50ffe56b60 remove duplicate sass rules 2018-01-16 17:17:58 -05:00
Dan Cech 315ecf8505 fix tests & some display issues 2018-01-16 17:02:03 -05:00
Torkel Ödegaard e9d33750cb fix: graphite func editor fixes, this component is messy and ugly as hell 2018-01-16 17:02:03 -05:00
Torkel Ödegaard 1a6bf692c6 fix: minor fixes 2018-01-16 17:02:03 -05:00
Torkel Ödegaard 38f4d5d06d fix: restored previous behavior of form_dropdown, this fixes all my observerd bugs with the dropdown behavior 2018-01-16 17:02:03 -05:00
Torkel Ödegaard 7e750cef43 fix: query editor needs to wait for function definitions to load 2018-01-16 17:02:03 -05:00
Dan Cech b483d42d34 fix issue with metric find & functions being loaded multiple times 2018-01-16 17:02:03 -05:00
Dan Cech 60ba6ee6a2 interpolate variables in tags & values during autocomplete 2018-01-16 17:02:03 -05:00
Dan Cech 92086bc858 fix typo 2018-01-16 17:02:03 -05:00
Dan Cech 1d00c3c72a update rst2html 2018-01-16 17:02:03 -05:00
Dan Cech da9e1a7e98 fix line length, run jscs & jshint in precommit 2018-01-16 17:02:03 -05:00
Dan Cech 3ddb65fc8b function description formatting 2018-01-16 17:02:03 -05:00
Dan Cech 4d3bac0284 tooltips for function definitions 2018-01-16 17:02:03 -05:00
Dan Cech 80a6e0d8d1 support specifying tag_values("<tag>") as graphite template query 2018-01-16 17:02:03 -05:00
Dan Cech 7c1be021ac use typeahead value in graphite find requests 2018-01-16 17:02:03 -05:00
Dan Cech ff759b0ef7 send prefix when auto-completing tags 2018-01-16 17:02:03 -05:00
Dan Cech d8f2a20775 add button to trigger evaluation of tag queries 2018-01-16 17:02:03 -05:00
Dan Cech a3dba6070e sync function categories with graphite-web 2018-01-16 17:02:03 -05:00
Dan Cech ebad19b232 work on tag dropdown behavior 2018-01-16 17:02:03 -05:00
Dan Cech 3a4e05133e support for loading function definitions from graphite 2018-01-16 17:02:03 -05:00
Torkel Ödegaard c4c0e7934b Update building_from_source.md
corrected build instructions, #10532
2018-01-16 20:15:52 +01:00
Torkel Ödegaard 94b0c79631 Update README.md
Simplified build instructions i
2018-01-16 20:14:53 +01:00
Torkel Ödegaard 6edc945e85 Update default_task.js
removed build clean from test task, #10532
2018-01-16 20:13:27 +01:00
Leonard Gram 183507964c Clearer naming for dashboard provisioning config.
Renames folder (in options) to path to make it
different from the grafana folder wherein the
dashboard will be created.
2018-01-16 17:40:14 +01:00
Torkel Ödegaard 307b419f7c ux: dashboard nav and settings tweaks 2018-01-16 14:41:08 +01:00
Torkel Ödegaard 11ba8070b8 Tag filters in search (#10521)
* tag filter: initial react component

* dashboard: move tag filter to filterbox

* tag filter: customize value rendering

* tag filter: get color from name

* tag filter:  custom option renderer

* tag filter: mode with tags in different container

* tag filter: refactor

* refactoring PR #10519

* tag filter: refactor of PR #10521
2018-01-16 12:52:13 +01:00
Torkel Ödegaard 42d7308034 fix: save as enter key now works and folder selection also works, fixes #10464 2018-01-16 12:50:24 +01:00
bergquist 5eb36e65f2 use context over golang.org/x/net/context 2018-01-16 12:32:58 +01:00
Daniel Lee a5830c6dbc Merge remote-tracking branch 'upstream/master' into dashboard_permissions 2018-01-16 12:02:13 +01:00
Daniel Lee 87064bff79 docs: small update to IIS proxy docs 2018-01-16 09:49:12 +01:00
Patrick O'Carroll 08211eb220 added a variable for grid color and if statment to switch colors, fixes #10509 (#10517) 2018-01-15 12:43:09 +01:00
bergquist 1a6c2ea8d8 dashboards as cfg: logs error when trying to import dashboard with id
dashboard json cannot contain fixed id when importing from
disk. We used to override this but it didnt caught all problems
so now we block dashboards from beeing imported instead.

closes #10504
2018-01-15 12:26:43 +01:00
bergquist 3951df136c Merge branch 'backend_plugins'
* backend_plugins: (34 commits)
  code style fixes
  Adds Table in backend datasource contract.
  Adds Tables types to protobuf
  Review tsdb protobuf contract
  supports windows compatible plugin binaries
  moves plugin proxy to plugin package
  improves name for plugin logger
  uses pluginmanagers log instead of global
  removes commented code
  makes datasource handshake more explicit
  backend plugins: improves logging
  dont spawn new subprocess while shutting down
  plugins: restart killed plugins
  query result should be a map
  test for plugin path builder
  merge backend datasources and datasources
  use int64 for timestamps
  fixes invalid valud/timestamp order
  merge backend-datasource and datasource type
  fixes broken unit test
  ...
2018-01-15 10:48:06 +01:00
bergquist 5499f4910c Merge branch 'master' into backend_plugins
* master: (117 commits)
  fix: share snapshot controller was missing ngInject comment, fixes #10511
  Use URLEncoding instead of StdEncoding to be sure state value will be corectly decoded (#10512)
  Optimize metrics and notifications docs
  Optimize cli and provisioning docs
  docs: Guide for IIS reverse proxy
  changelog: adds note about closing #9645
  telegram: Send notifications with an inline image
  telegram: Switch to using multipart form rather than JSON as a body
  telegram: Fix a typo in variable name
  fix: alert list pause/start toggle was not working properly
  fix template variable selector overlap by the panel (#10493)
  dashboard: Close/hide 'Add Panel' before saving a dashboard (#10482)
  fix: removed unused param
  Fix variables values passing when both repeat rows and panels is used (#10488)
  moved angular-mocks out of dependencies
  ux: minor change to alert list page
  ux: minor word change to alert list
  fix: updated snapshot test
  Add eu-west-3 in cloudwatch datasource default's region (#10477)
  fix: Make sure orig files are not added to git again #10289
  ...
2018-01-15 10:27:12 +01:00
bergquist b511788c51 code style fixes 2018-01-15 10:26:33 +01:00
Daniel Lee 58293ce5cc dashfolders: bugfix after rename 2018-01-15 10:15:52 +01:00
Daniel Lee 4948d4fd75 dashfolders: bugfix after rename 2018-01-15 10:14:10 +01:00
Leonard Gram b63c834a4b Adds Table in backend datasource contract. 2018-01-15 09:41:44 +01:00
Torkel Ödegaard 270db4da8b fix: share snapshot controller was missing ngInject comment, fixes #10511 2018-01-15 09:05:26 +01:00
m-pavel dff66559e4 Use URLEncoding instead of StdEncoding to be sure state value will be corectly decoded (#10512) 2018-01-15 08:49:30 +01:00
Carl Bergquist baffdb156e Merge pull request #10510 from nir0s/fix-docs
Fix docs
2018-01-15 08:10:59 +01:00
nir0s b7d4a1887c Optimize metrics and notifications docs 2018-01-14 10:09:49 +02:00
nir0s 71a12c6bb6 Optimize cli and provisioning docs 2018-01-14 08:57:48 +02:00
Martin Szulecki c82e23d96e imguploader: Add support for new internal image store (#6922) 2018-01-12 21:40:12 +01:00
Daniel Lee 77b5dee408 docs: Guide for IIS reverse proxy 2018-01-12 17:02:10 +01:00
bergquist 594447f5f5 changelog: adds note about closing #9645 2018-01-12 13:20:01 +01:00
Carl Bergquist a69bdf9432 Merge pull request #9967 from rburchell/master
Add support for inline image uploads to telegram notifier plugin
2018-01-12 13:18:22 +01:00
Robin Burchell 43109dc8ca telegram: Send notifications with an inline image
If image upload is enabled, but there is no public image repository,
fall back to sending an image via telegram's API.
2018-01-11 17:23:50 -05:00
Robin Burchell b6fcf2b609 telegram: Switch to using multipart form rather than JSON as a body
This is a pre-requisite for uploading inline images.
2018-01-11 17:21:43 -05:00
Robin Burchell a1a9f339bf telegram: Fix a typo in variable name 2018-01-11 17:21:43 -05:00
Daniel Lee 21b5ded75b dashfolder: refactor breadcrumbs in PageHeader
Combines title and breadcrumbs in PageHeader instead of having to
set title to empty and add it as a breadcrumb.
2018-01-11 17:53:06 +01:00
Daniel Lee 545d7b9477 dashfolders: convert folder settings to React 2018-01-11 15:42:45 +01:00
bergquist 9e942f1a6d Adds Tables types to protobuf 2018-01-11 15:34:07 +01:00
Torkel Ödegaard f3a66ecbcb fix: alert list pause/start toggle was not working properly 2018-01-11 15:18:38 +01:00
Alexander Zobnin 6a73205b18 fix template variable selector overlap by the panel (#10493) 2018-01-11 15:03:24 +01:00
bergquist ce4beb730d Review tsdb protobuf contract 2018-01-11 15:01:49 +01:00
Marcus Efraimsson 2843961677 dashboard: Close/hide 'Add Panel' before saving a dashboard (#10482)
Fixes #10472
2018-01-11 08:56:19 +01:00
bergquist 1fd40a48d9 supports windows compatible plugin binaries 2018-01-10 15:07:04 +01:00
Torkel Ödegaard 9606a34e0a fix: removed unused param 2018-01-10 14:34:08 +01:00
Torkel Ödegaard ae9b3186e3 Merge branch 'master' of github.com:grafana/grafana 2018-01-10 14:30:54 +01:00
Alexander Zobnin bfd7e1043b Fix variables values passing when both repeat rows and panels is used (#10488)
* dashboard: repeat rows and panels tests

* fix variable values passing when both repeat rows and panels is used
2018-01-10 14:30:43 +01:00
Torkel Ödegaard d2f866c27c moved angular-mocks out of dependencies 2018-01-10 14:29:19 +01:00
Torkel Ödegaard b76958f07b ux: minor change to alert list page 2018-01-10 14:18:58 +01:00
Torkel Ödegaard 32df74ffec ux: minor word change to alert list 2018-01-10 13:17:43 +01:00
Torkel Ödegaard 686548a6ed fix: updated snapshot test 2018-01-10 13:16:16 +01:00
Torkel Ödegaard 7854f80f5a Merge remote-tracking branch 'origin/10289_user_picker' 2018-01-10 13:14:43 +01:00
bergquist ebd8677607 moves plugin proxy to plugin package 2018-01-10 12:11:57 +01:00
nicolasguyomar 66d7884b48 Add eu-west-3 in cloudwatch datasource default's region (#10477)
* Add eu-west-3 as a possible default datasource

* Add eu-west-3 as a possible default datasource
2018-01-10 12:07:04 +01:00
Johannes Schill 0b81117ee2 fix: Make sure orig files are not added to git again #10289 2018-01-10 12:04:46 +01:00
bergquist acb7d802d1 improves name for plugin logger 2018-01-10 12:01:39 +01:00
Johannes Schill 79bad41843 fix: Remove conflict file #10289 2018-01-10 12:00:28 +01:00
Alexander Zobnin 1fdc24c412 text panel: fix $apply already in progress error (#10486) 2018-01-10 11:56:01 +01:00
Torkel Ödegaard 5d5de23025 refactoring: alert list improvments PR #10452 2018-01-10 11:54:47 +01:00
bergquist 50db9810e8 uses pluginmanagers log instead of global 2018-01-10 11:49:40 +01:00
Johannes Schill e4a2bda4f2 10389 react tooltip components (#10473)
* poc: Use react-popper for tooltips #10389

* poc: Add popover component and use a hoc() for Tooltip + Popover to avoid code duplication #10389

* jest: Add snapshot tests to Popover and Tooltip #10389

* poc: Move target from hoc into Popover/Tooltip-component #10389

* poc: Clean up unused styles and use the existing Grafana style/colors on popper tooltip #10389

* poc: Remove test code before PR

* poc: Remove imports used in poc but shouldn't be included anymore #10389
2018-01-10 10:27:33 +01:00
Johannes Schill ffda5eef95 test: Updated snapshot for UserPicker jest test #10289 2018-01-09 15:48:02 +01:00
Johannes Schill aac1b250af ux: When adding a new panel we should scroll to top until we figure o… (#10417)
* ux: When adding a new panel we should scroll to top until we figure out a better solution #10299

* ux: Use jquery to add smooth scrolling when scrolling up to add a panel, and make sure to pass the scope to the event emitter, #10299

* ux: Add a close button to the "New panel"-box and make sure you scroll to top every time you click "Add panel" #10299
2018-01-09 15:27:53 +01:00
bergquist e6921a6a01 removes commented code 2018-01-09 15:25:36 +01:00
Patrick O'Carroll d48be3ca15 naming fixes and added test file 2018-01-09 15:16:55 +01:00
bergquist dbd1ba465f makes datasource handshake more explicit 2018-01-09 15:04:59 +01:00
bergquist 44e485af41 backend plugins: improves logging 2018-01-09 14:56:23 +01:00
Daniel Lee e1aff1d5ff dashfolders: show/hide create folder or dashboard buttons
depending on the user role and the permissions the user has for a
folder.
2018-01-09 14:44:36 +01:00
Daniel Lee a8e9a4995c dashfolders: fix mergeconflict error 2018-01-09 14:44:36 +01:00
Daniel Lee 6f98117641 dashfolders: prettify 2018-01-09 14:44:36 +01:00
Daniel Lee c27a74bb6b dashfolders: check permissions for new dashboard
ref #10275. Use the parent folder permissions if new dashboard and
it does not have an id yet.
2018-01-09 14:44:36 +01:00
Daniel Lee ae69c96518 dashfolders: allow any signed in user to get list of teams 2018-01-09 14:44:36 +01:00
Daniel Lee b7f023bc26 fix gofmt warning 2018-01-09 14:44:36 +01:00
Daniel Lee 3ae1bf0c16 dashfolders: permissions for saving annotations
ref #10275 Use folder permissions instead of hard coded
permissions on the annotations routes.
2018-01-09 14:44:36 +01:00
Daniel Lee eef37c4071 dashfolders: disable save button after save of acl 2018-01-09 14:44:36 +01:00
Daniel Lee e77878bba8 dashfolders: on folder page, hide tabs if not has admin permission 2018-01-09 14:44:36 +01:00
Daniel Lee 61ed0b0381 dashfolders: remove role requirements on dashboard routes
and rely on the permission system instead.
2018-01-09 14:44:36 +01:00
Daniel Lee f7bbfeba28 dashfolders: must have admin permission to save/see dash acl 2018-01-09 14:44:36 +01:00
Daniel Lee 5b6ee6f37b dashfolders: prettify on tests file 2018-01-09 14:44:36 +01:00
Daniel Lee 1e496ec76c dashfolders: permissions tab in dashboard settings 2018-01-09 14:44:36 +01:00
Daniel Lee 5400692cd4 dashfolders: permissions tab for dashboard folders 2018-01-09 14:44:36 +01:00
Daniel Lee 3ea63a1064 fix for unsaved changes popup on tab close/refresh
Incorrect return values in onbeforeunload event handler mean that the
unsaved changes popup is shown despite there being no changes.
2018-01-09 14:42:58 +01:00
Johannes Schill c62a6aa7df fix: Clean up logging and remove unused css #10289 2018-01-09 14:42:23 +01:00
Johannes Schill c297a1c5a5 fix: Rename directive user-pickerr (yes two r's) to select-user-picker 2018-01-09 14:42:23 +01:00
Johannes Schill 1a993378bd fix: Accidently added the conflict files (#10289) 2018-01-09 14:39:10 +01:00
Johannes Schill 76ba7d1f8c test: Add snapshot tests for UserPicker and UserPickerOption (#10289) 2018-01-09 14:39:10 +01:00
Johannes Schill 68d43b865f fix: Add interface for props to UserPickerOption (#10289) 2018-01-09 14:39:10 +01:00
Johannes Schill 5931d6c87d ux: POC on new select box for the user picker (#10289) 2018-01-09 14:39:10 +01:00
Alexander Zobnin 04b9752932 dashboard: fix opening links in new tab (#10465) 2018-01-09 13:59:11 +01:00
Alexander Zobnin 51cd3a0d0c alert list: fix rendering timeout when share panel (#10467) 2018-01-09 13:58:24 +01:00
Alexander Zobnin a4972f44ad fix missing profile icon (#10469) 2018-01-09 13:58:03 +01:00
Marcus Efraimsson 3ecec8e0d2 More fixes for relative urls when running Grafana under a different sub path (#10470)
* Add nginx proxy docker container

Ease test/verification of running Grafana thru a reverse proxy

* Add apache proxy docker container

Ease test/verification of running Grafana thru a reverse proxy

* Fix relative urls for reset password page

* Fix relative urls for signup page

* Fix relative urls for login page

* Fix relative urls edit plugin page
2018-01-09 13:56:41 +01:00
Patrick O'Carroll 48548f0641 put this.props.search in the Highlighter 2018-01-09 13:18:16 +01:00
Patrick O'Carroll bebcc24f3d moved state handling for search to store 2018-01-09 13:05:50 +01:00
Torkel Ödegaard 776d17458b Delete CopyQuery.png 2018-01-09 12:50:59 +01:00
Torkel Ödegaard 69936057a9 Delete tgr288gear_line6.pdf 2018-01-09 12:50:18 +01:00
Marcus Efraimsson 4af1aca97c Merge pull request #10463 from AnonyV/master
Fixed the subUrl bugs for folder/settings/teams etc. with root_url modified
2018-01-09 12:42:22 +01:00
Torkel Ödegaard 62165f91bf fix: added back colors to rootScope, fixes #10462 2018-01-09 11:13:37 +01:00
AnonyV 6c9554499b fixed the subUrl bugs from https://community.grafana.com/t/suburl-not-work-at-some-links-and-buttons/4701 with folder/settings/teams etc. 2018-01-09 18:03:43 +08:00
Carl Bergquist 044a44757c Merge pull request #10457 from pachico/master
Fix typo in error message
2018-01-09 08:32:51 +01:00
Mariano Benítez Mulet ec9db318e3 Fix typo in error message 2018-01-09 08:24:14 +01:00
Carl Bergquist e8704569f0 Merge pull request #10449 from xlson/update-go-stack-dependency
Updates go-stack to v1.7.0.
2018-01-08 21:19:56 +01:00
Patrick O'Carroll 025835c9bf updated snapshot 2018-01-08 17:43:33 +01:00
Patrick O'Carroll 8b00e65a83 styling fix 2018-01-08 17:28:18 +01:00
Patrick O'Carroll 457a02b970 added highlight to search 2018-01-08 17:22:44 +01:00
Leonard Gram ff766970dc Updates go-stack to v1.7.0.
Closes #10435
2018-01-08 15:28:47 +01:00
Carl Bergquist 42374f9655 docs: adds note about tlsSkipVerify to docs
ref #9504
2018-01-08 13:21:51 +01:00
Patrick O'Carroll fc6d14127d fixed regex issue 2018-01-05 15:19:25 +01:00
Patrick O'Carroll 3797054eb4 made a view of filtered list 2018-01-05 14:17:50 +01:00
Patrick O'Carroll 5079dcdc62 updated jest file and snapshot 2018-01-05 10:34:01 +01:00
Daniel Lee ccf1a5124b plugin: fix path for app plugins on windows
This fixes when an app that contains a plugin (which means it has
a filepath with more parts) gets a back slash in the path for the
plugin module. The string replace now replaces all back slashes and
not just the first one.
2018-01-04 17:32:57 +01:00
Patrick O'Carroll 2248bf437c added search function 2018-01-04 15:27:09 +01:00
Patrick O'Carroll 0068e82718 new styling and markup 2018-01-04 13:08:49 +01:00
Torkel Ödegaard 27835f373e cleanup: removed unused typescript typings import 2018-01-04 10:12:02 +01:00
Torkel Ödegaard c42a232644 Merge branch 'react-mobx' 2018-01-04 09:12:57 +01:00
Trent White ee05ea8d60 new add alert notification channel icon 2018-01-03 14:23:14 -05:00
Johannes Schill 8abef88b94 mobx: poc in using each store as individual prop on the react containers (#10414)
* mobx: poc in using each store as individual prop on the react containers

* prettier test

* fix: end the war between prettier vs tslint.

* mobx: Move stores into their own folders

* mobx: Refactor the AlertRule into its own file and add a helper-file

* mobx: Move NavItem out of NavStore and remove lodash dependancy

* mobx: Move ResultItem and SearchResultSection models out of the SearchStore

* mobx: ServerStatsStore rename .tsx => .ts. And move ServerStat-model to its own file.

* mobx: Remove lodash and jquery dependancy from ViewStore

* mobx: Remove issue with double question mark
2018-01-03 20:11:07 +01:00
Johannes Schill d2cdacce40 fix: Change max size of panel JSON editor so button is shown on smaller screens, #10346 (#10415) 2018-01-03 20:04:45 +01:00
Oleksandr Kushchenko 5c94daa011 Add AWS/AmazonMQ namespace metrics to CloudWatch tsdb (#10407) 2018-01-03 11:11:31 +01:00
Dan Cech f31d6438a2 add docs for using oauth login with OneLogin (#10385) 2018-01-03 10:15:35 +01:00
Patrick O'Carroll 58e0bdd71f added empty list cta to notification channels, fixes 10393 (#10400) 2018-01-02 12:16:38 +01:00
Torkel Ödegaard f049fc4816 mobx: fixed issue with view store, and added missing snapshot 2018-01-02 11:02:43 +01:00
Torkel Ödegaard 5981f67226 tech: enzyme container test working 2018-01-01 18:54:23 +01:00
Torkel Ödegaard 644adef465 tech: enzyme container test working 2018-01-01 16:04:32 +01:00
Torkel Ödegaard 3301f8f194 react: trying to get enzyme and mobx tests working 2018-01-01 15:39:26 +01:00
Torkel Ödegaard 8f50795a94 tech: url and query mobx store so now react components and containers can read and modify url path and query via mobx store 2017-12-31 22:31:11 +01:00
Torkel Ödegaard 029317ed18 tech: alert list react migration progress 2017-12-31 14:16:19 +01:00
Alexander Zobnin 62df406d7b fix info popover, #10302 (#10377) 2017-12-31 12:26:02 +01:00
Alexander Zobnin e84b6d189a fix move dashboard variables, #10347 (#10375) 2017-12-31 12:24:42 +01:00
Marcus Efraimsson 11ae7d5964 dashfolders: relative links should work when root_path is specified (#10363)
Fixes #10336
2017-12-31 12:24:21 +01:00
Alexander Zobnin d210e766e7 fix mixed datasource add query button, #10316 (#10361) 2017-12-31 12:21:49 +01:00
Torkel Ödegaard 5a571f4784 tech: react mobx progress 2017-12-29 17:13:58 +01:00
Carl Bergquist be93468b58 Merge pull request #10383 from babolivier/enhance/doc-dashboard-version
Doc version and schemaVersion properties of dashboards
2017-12-29 13:56:53 +01:00
Brendan Abolivier 511f7f9000 Doc version and schemaVersion properties of dashboards 2017-12-29 09:45:07 +01:00
Torkel Ödegaard 4c1a67c34e tech: began reworking alerting list to mobx 2017-12-28 18:49:33 +01:00
Torkel Ödegaard 8fd8853770 tech: progress on react pages 2017-12-28 17:03:40 +01:00
bergquist 1f9e2ef6ec prom: fixes broken test 2017-12-28 16:43:48 +01:00
Carl Bergquist 16ef068342 Merge pull request #10373 from bergquist/dashboard_folder_provisioning
Dashboards as cfg: create dashboard folder if missing
2017-12-28 16:13:18 +01:00
bergquist 71272d9076 prom: make $__$interval the first suggested range vector 2017-12-28 16:01:02 +01:00
bergquist a4e4b76785 fixes log typo 2017-12-28 15:51:31 +01:00
bergquist b840514797 imguploader: log if the configuration is invalid 2017-12-28 15:48:19 +01:00
bergquist 212bb2a385 changelog: adds note about closing #8955 2017-12-28 15:37:43 +01:00
Carl Bergquist 29f58475a3 Merge pull request #8956 from saada/azure-external-image-store
Azure Blob Storage external image uploader
2017-12-28 15:34:20 +01:00
bergquist 8a5fe5b0df renderer: avoid calling Handle twice 2017-12-28 14:37:10 +01:00
Carl Bergquist 7a8a52a145 Merge pull request #10362 from grafana/cloudwatch-file-to-ts
migrated datasource to ts
2017-12-28 13:44:18 +01:00
bergquist f5e00e133b dashboards as cfg: moves dashcash into its own file 2017-12-28 13:37:02 +01:00
bergquist 237d469ed4 dashboards as cfg: create dashboard folders if missing
closes #10259
2017-12-28 13:33:11 +01:00
Patrick O'Carroll 54c502ae4d fixed error 2017-12-28 09:44:37 +01:00
bergquist f4078e1935 tests: for skipping with hidden folders 2017-12-27 15:04:49 +01:00
Mahmoud Saada af15e3c0d0 Implement Azure Blob external image uploader 2017-12-27 08:53:00 -05:00
Patrick O'Carroll 0c5314cec7 migrated datasource to ts 2017-12-27 13:25:40 +01:00
Torkel Ödegaard 5b91bb9163 tech: minor progress on mobx state tree & react containers, working on unit testing 2017-12-27 13:15:27 +01:00
Torkel Ödegaard 8aff969f70 Merge branch 'master' into react-mobx 2017-12-27 11:00:37 +01:00
Alexander Zobnin 1108101087 Fix tooltip unit when legend isn't shown (#10348)
* graph: fix tooltip unit when legend isn't shown, #10311

* fix broken tests (updateLegendValues() function)
2017-12-27 09:50:51 +01:00
Torkel Ödegaard c8f87a3d09 refactor: minor refactoring of PR #10236 2017-12-27 09:49:12 +01:00
Alexander Zobnin 77843623b2 don't save dashboard on make editable, #10236 2017-12-27 09:49:12 +01:00
Alexander Zobnin d4ff603eb0 fix scripted dashboard loader, #10350 (#10351) 2017-12-27 09:36:25 +01:00
Lichun Wei 2559259763 new aws region cn-northwest-1 (#10353)
see http://docs.aws.amazon.com/general/latest/gr/rande.html for regions
2017-12-27 09:34:12 +01:00
Torkel Ödegaard 3e7420320c Merge branch 'master' into react-mobx 2017-12-26 13:53:39 +01:00
Marcus Efraimsson 39eb8f9eba Dashboard: View JSON improvements (#10327)
* dashboard: enable copy to clipboard for view json and panel json

* dashboard: use code editor for view json under settings
2017-12-26 13:52:19 +01:00
Torkel Ödegaard c11cf18879 refactor: tried to simplify and also minimize scope a bit for #10323 2017-12-26 13:22:01 +01:00
Torkel Ödegaard b4ab91d651 Merge remote-tracking branch 'origin/10248_copy_panels' 2017-12-26 12:31:46 +01:00
Torkel Ödegaard 8fb0692da6 Merge remote-tracking branch 'origin/migrate-dashboard-files-to-ts' 2017-12-26 12:26:50 +01:00
Torkel Ödegaard 7e55509106 Merge branch 'smallsinglestat' of https://github.com/roidelapluie/grafana into roidelapluie-smallsinglestat 2017-12-26 12:00:08 +01:00
Mitsuhiro Tanda 6d5628f2ea ignore trailing whitespace (#10344) 2017-12-26 11:59:03 +01:00
Mitsuhiro Tanda e3274d6765 (prometheus) show label name in paren after by/without/on/ignoring/group_left/group_right 2017-12-26 01:57:10 +09:00
bergquist 75a54e85dc dont spawn new subprocess while shutting down 2017-12-25 14:12:25 +01:00
Julien Pivotto 6a6633ab86 Fix small singlestat value display
This fix improves the rendering of singlestats in small boxes in grafana
5. This allows the user to get boxes oh height=1 and still see the value
of the stat entirely.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-12-23 14:57:37 +01:00
Torkel Ödegaard 24723cdb3c fix: fixed issue with optimized build, fixes #10333 2017-12-23 08:34:48 +01:00
Patrick O'Carroll 52f30f6f00 migrated file to ts (#10328) 2017-12-22 20:52:57 +01:00
bergquist 05362a9666 plugins: restart killed plugins 2017-12-22 15:40:45 +01:00
bergquist 4aeef32073 query result should be a map 2017-12-22 14:40:38 +01:00
bergquist e234cf5b18 prom: removes limitation of one query per tsdb call 2017-12-22 12:22:42 +01:00
bergquist cd92d219cd changelog: adds note about closing #10222 2017-12-22 11:00:18 +01:00
bergquist 7917efb31a pagerduty: fixes invalid default value
autoResolve incident checkbox was set to disabled by default but
the backend used enabled as default. This commit makes both use
disabled by defualt

fixes #10222
2017-12-22 10:54:48 +01:00
Marcus Efraimsson 281e519fab fix: remove unused code 2017-12-22 10:26:01 +01:00
Marcus Efraimsson 68457f5636 dashboard: copy panel to clipboard
Adds a new menu item to panels, Copy to Clipboard, that will both
copy the panel json to the clipboard and temporarily store the panel object
in the browsers window object. The temporarily stored panel object are
available in Add Panel from any dashboard for as long you don't refresh
the browser.
Fixes #10248, #1004
2017-12-22 10:24:55 +01:00
bergquist e480a38dc1 pagerduty: adds test for reading auto resolve setting 2017-12-22 09:58:37 +01:00
Patrick O'Carroll 972c3bc635 code formatting fix 2017-12-21 13:44:34 +01:00
Patrick O'Carroll 9b63a81756 migrated files to ts + fixed specfile 2017-12-21 13:22:20 +01:00
Torkel Ödegaard 02ad2e5f0f tech: cleaned up unused stuff 2017-12-21 12:31:04 +01:00
Torkel Ödegaard 9f7560b6f9 ux: removed unused stuff form style guide 2017-12-21 12:20:55 +01:00
Torkel Ödegaard 4181602b78 react: progress on react containers and mobx-state-tree store 2017-12-21 11:56:45 +01:00
Torkel Ödegaard 3a1f52d8a2 prettier: ran on all files again, sorry. now settings are defined in package.json 2017-12-21 08:39:31 +01:00
Torkel Ödegaard 444240dffc tech: mobx tests 2017-12-21 08:27:47 +01:00
Marcus Efraimsson af34f9977e Add avatar to team and team members page (#10305)
* teams: add db migration for email column in teams table

* teams: /teams should render index page with a 200 OK

* teams: additional backend functionality for team and team members

Possibility to save/update email for teams.
Possibility to retrive avatar url when searching for teams.
Possibility to retrive avatar url when searching for team members.

* teams: display team avatar and team member avatars

Possibility to save and update email for a team

* teams: create team on separate page instead of modal dialog
2017-12-20 21:20:12 +01:00
Marcus Efraimsson d41ce4f9ca Various dashboard folders improvements (#10309)
* dashfolders: fix url for create dashboard from manage dashboards

Don't include folderId querystring if you don't manage a folder and
creating a new dashboard from there.

* dashfolders: don't store folderId in dashboard model

Use folderId from meta instead
#10307

* dashfolders: minor ux fix

* dashfolders: minor fix for edit folder title
2017-12-20 21:17:55 +01:00
Torkel Ödegaard 354913a704 mobx: progress on poc 2017-12-20 17:24:04 +01:00
Carl Bergquist d2ea5415da test for plugin path builder 2017-12-20 16:33:53 +01:00
Carl Bergquist 20284f7745 merge backend datasources and datasources 2017-12-20 16:24:49 +01:00
Carl Bergquist 8b37e27dde use int64 for timestamps 2017-12-20 16:03:53 +01:00
Carl Bergquist 8a7c455697 Merge branch 'master' into backend_plugins
* master: (48 commits)
  fix: unit test fixed
  prettier: change to single quoting
  ux: minor name change to search sections
  db: fix postgres regression when comparing boolean columns/values (#10303)
  dashboard: delete row improvements
  fix missing comma in documentation output example
  fix broken link (#10291)
  minor fixes and formatting after review
  dashfolders: use validation service for folder creation and dashboard import. #10197
  dashfolders: support creating new folder when moving dashboards. #10197
  dashfolders: support creating new folder when saving a dashboard. #10197
  dashfolders: support creating new folder in dashboard settings. #10197
  dashfolders: support creating new folder from the folder picker. #10197
  tech: ran prettier on all scss files
  tech: ran pretttier on all typescript files
  search: closes dash search when selecting current dashboard (#10285)
  fix: Original dashboard link from snapshot should be an a-tag, not a button (#10269) (#10283)
  dashboard: fixes #10262
  added new to new dahsboard and folder
  test: Update test with new component signature
  ...
2017-12-20 14:20:33 +01:00
Carl Bergquist cef3800c33 fixes invalid valud/timestamp order 2017-12-20 14:20:08 +01:00
Torkel Ödegaard 61b4e5ab2d fix: unit test fixed 2017-12-20 13:02:52 +01:00
Torkel Ödegaard 85879a7014 prettier: change to single quoting 2017-12-20 12:33:33 +01:00
Torkel Ödegaard 2a360c45a2 ux: minor name change to search sections 2017-12-20 12:26:52 +01:00
Torkel Ödegaard 06c803405a Merge branch 'master' of github.com:grafana/grafana 2017-12-20 12:24:39 +01:00
Torkel Ödegaard e683f6afa4 Merge remote-tracking branch 'origin/10277_logout_route_full_page_reload' 2017-12-20 12:20:06 +01:00
Marcus Efraimsson df3655dd4a db: fix postgres regression when comparing boolean columns/values (#10303)
Use the dialect specific BooleanStr when comparing boolean columns/values.
Fixes #10300
2017-12-20 12:15:49 +01:00
Torkel Ödegaard 4acf6b0eee Merge remote-tracking branch 'origin/10190_fix_select_icon_and_firefox' 2017-12-20 11:22:29 +01:00
Marcus Efraimsson bbdb1cddd7 dashboard: delete row improvements
Possibility to delete row and all its panels or
only the row which will leave its panels in the dashboard.
2017-12-20 11:13:24 +01:00
Torkel Ödegaard ee216ba6fb poc: mobx test 2017-12-20 10:53:16 +01:00
Carl Bergquist 07432cb4fa Merge pull request #10297 from m0nhawk/patch-1
fix missing comma in documentation output example
2017-12-20 10:07:50 +01:00
Andrew Prokhorenkov 30e51ad136 fix missing comma in documentation output example 2017-12-19 22:30:35 +02:00
Anastasios Gogos 9dbaca4cc6 fix broken link (#10291)
minor typo:
'(' instead of '/'
2017-12-19 18:40:41 +01:00
Marcus Efraimsson 9184300398 Merge pull request #10278 from grafana/10197_new_folder
Create new folder from the folder picker component
2017-12-19 18:39:47 +01:00
Marcus Efraimsson 1ddcaf5b6f minor fixes and formatting after review 2017-12-19 18:01:09 +01:00
Marcus Efraimsson 0bfedfe4d6 dashfolders: use validation service for folder creation and dashboard import. #10197 2017-12-19 18:00:59 +01:00
Marcus Efraimsson 4846125ec0 dashfolders: support creating new folder when moving dashboards. #10197 2017-12-19 18:00:47 +01:00
Marcus Efraimsson 2d0f5f06e4 dashfolders: support creating new folder when saving a dashboard. #10197 2017-12-19 18:00:38 +01:00
Marcus Efraimsson 7f9c0df464 dashfolders: support creating new folder in dashboard settings. #10197 2017-12-19 18:00:26 +01:00
Marcus Efraimsson 60d7e4308c dashfolders: support creating new folder from the folder picker. #10197 2017-12-19 18:00:06 +01:00
Torkel Ödegaard af1f3dd77b poc: mobx poc 2017-12-19 17:26:51 +01:00
Torkel Ödegaard 908b6c8d0b tech: ran prettier on all scss files 2017-12-19 16:22:41 +01:00
Torkel Ödegaard fadfc665e4 tech: ran pretttier on all typescript files 2017-12-19 16:06:54 +01:00
Johannes Schill 143c0022b8 Merge branch 'master' into 10190_fix_select_icon_and_firefox 2017-12-19 15:54:02 +01:00
Marcus Efraimsson b1621e1e8f Merge pull request #10286 from grafana/10230_new_to_search_popup
added new to new dahsboard and folder
2017-12-19 15:51:04 +01:00
Daniel Lee 6ad06364c7 search: closes dash search when selecting current dashboard (#10285)
Fixes #10231.
2017-12-19 15:28:58 +01:00
Johannes Schill 0bc6f4e2bd fix: Original dashboard link from snapshot should be an a-tag, not a button (#10269) (#10283) 2017-12-19 14:58:12 +01:00
Johannes Schill bc7462cd04 Merge branch 'master' into 10190_fix_select_icon_and_firefox 2017-12-19 14:55:18 +01:00
Daniel Lee 31fc19c6d7 dashboard: fixes #10262 2017-12-19 14:55:03 +01:00
Patrick O'Carroll 0d283214a0 added new to new dahsboard and folder 2017-12-19 14:52:34 +01:00
Johannes Schill 23cceaecc4 test: Update test with new component signature 2017-12-19 14:45:44 +01:00
Carl Bergquist 326ba11c42 Merge pull request #10280 from bergquist/windows_build
WIP: delete unused icon files
2017-12-19 14:35:22 +01:00
Carl Bergquist d671f5b404 Merge branch 'devkid-patch-1'
* devkid-patch-1:
  pushover: update default message
  Add default message for Pushover notifications
2017-12-19 14:31:57 +01:00
Carl Bergquist e2be6a38c4 pushover: update default message 2017-12-19 14:31:26 +01:00
Carl Bergquist f36aa2e953 Merge branch 'patch-1' of https://github.com/devkid/grafana into devkid-patch-1
* 'patch-1' of https://github.com/devkid/grafana:
  Add default message for Pushover notifications
2017-12-19 14:30:09 +01:00
Johannes Schill f6163a59af Merge branch 'master' into 10190_fix_select_icon_and_firefox 2017-12-19 14:11:37 +01:00
Carl Bergquist 8055dcae44 delete unused icon files 2017-12-19 14:02:06 +01:00
Carl Bergquist 887af65ca9 Merge pull request #10264 from SteelPhase/patch-2
fix: Extra forward slash added when org redirect middleware is called (#10263)
2017-12-19 13:58:33 +01:00
Johannes Schill add5df07bf Merge branch 'master' into 10190_fix_select_icon_and_firefox 2017-12-19 13:52:45 +01:00
Johannes Schill fee3e7c02a Merge branch 'master' into 10277_logout_route_full_page_reload 2017-12-19 13:50:36 +01:00
Johannes Schill a55b42d11f fix: The /logout route should always full page reload (#10277) 2017-12-19 13:39:11 +01:00
Torkel Ödegaard 75bb511019 tech: added prettier to precommit 2017-12-19 13:27:05 +01:00
Johannes Schill 3e28ce94eb ux: Add icon to selected option in PageHeader navigation on small screens, update select boxes for Firefox so the arrow to the right is aligned with the other select boxes (#10190) 2017-12-19 13:19:44 +01:00
Carl Bergquist 0d9378d18e Merge pull request #10274 from bergquist/alerting_without_rows
Alerting without dashboard rows
2017-12-19 13:19:33 +01:00
Johannes Schill e1a527a87a ux: Fix color picker positioning when scrolled down to the bottom of a page (#10258) (#10271) 2017-12-19 12:58:55 +01:00
Carl Bergquist 644c2f7fb0 test: remove unused code 2017-12-19 11:23:21 +01:00
Carl Bergquist 66cf224e31 alerting: make alert extractor backwards compatible
closes #10270
2017-12-19 11:20:05 +01:00
Carl Bergquist 1816e89730 alerting: move test json into files 2017-12-19 10:22:26 +01:00
SteelPhase a320a83138 Use strings.TrimPrefix to make sure relative url doesn't start with forward slash
Closes grafana/grafana#10263
2017-12-19 03:01:33 -05:00
Torkel Ödegaard dd2192cccc Update README.md 2017-12-18 16:54:09 +01:00
Torkel Ödegaard 0a28def71f Update CHANGELOG.md 2017-12-18 16:52:31 +01:00
Johannes Schill e569c8ea10 fix: Navigation on small screens when Grafana is installed in a sub directory (#10252) (#10261)
* ux: Add missing icon for login with grafana-com, fixes #10238

* fix: This fix potentially solves installations in sub directories, #10252
2017-12-18 16:22:58 +01:00
Torkel Ödegaard 22643eb109 cloudwatch: fixed optimized build issue, fixes #10174 2017-12-18 14:36:34 +01:00
Mitsuhiro Tanda 3cb841f3db fix text panel rows limit (#10246) 2017-12-18 14:29:48 +01:00
Mitsuhiro Tanda 6bb7f77346 use ace editor in panel edit (#10245) 2017-12-18 14:29:23 +01:00
Daniel Lee 78fb5be2cf docs: mysql example with macro 2017-12-18 14:24:04 +01:00
Daniel Lee 40af84a83f docs: mysql macros update 2017-12-18 14:12:04 +01:00
Torkel Ödegaard 40482d9ada Merge branch 'master' of github.com:grafana/grafana 2017-12-18 13:38:54 +01:00
Torkel Ödegaard 51ec64f872 fix: reduced team name column length, fixes #10244 2017-12-18 13:38:29 +01:00
shankdever 7256884555 ux: Add missing icon for login with grafana-com, fixes #10238 (#10249) 2017-12-18 13:33:28 +01:00
Carl Bergquist 47fb017a5f Merge pull request #10240 from sernst/master
Kinesis Metric Capitalization
2017-12-16 13:16:01 +01:00
Scott Ernst fcf1ff10d2 Kinesis Metric Capitalization
Fixes the capitalization of the AWS/Kinesis ShardId metric, which
was incorrectly specified as "ShardID" instead of "ShardId" as
specified in the AWS documentation:

http://docs.aws.amazon.com/streams/latest/dev/monitoring-with-cloudwatch.html
2017-12-15 12:44:13 -06:00
bergquist 7977d6b669 merge backend-datasource and datasource type 2017-12-15 17:17:58 +01:00
Daniel Lee 77cc546315 dashfolder: nginject fix 2017-12-15 16:36:31 +01:00
Daniel Lee 7dac64354f teams: missing nginject attribute 2017-12-15 16:26:00 +01:00
Torkel Ödegaard 71658d1e76 grid: disable resize and drag on non editable dashboards, closes #10235 2017-12-15 16:23:26 +01:00
Torkel Ödegaard 4112abd699 logging: removed logging from panel loader 2017-12-15 15:43:32 +01:00
Torkel Ödegaard 36fe8f5873 menu: fixed create default url 2017-12-15 15:17:05 +01:00
Torkel Ödegaard 23e0ca5543 Merge branch 'master' of github.com:grafana/grafana 2017-12-15 14:55:50 +01:00
Torkel Ödegaard d1e0e36996 fix: dont show settings for viewers 2017-12-15 14:51:20 +01:00
bergquist 8573f73d72 Merge branch 'master' into backend_plugins
* master: (584 commits)
  prometheus: change default resolution to 1/1
  fix: viewers can edit now works correctly
  fix: fixed minor ux and firefox issues, fixes #10228
  ux: minor fixes
  profile: use name or fallback for profile page
  fix: sidemenu profile main text is now username instead of name
  build: update master version to 5.0.0-pre1
  dashfolder: change to migration text
  ux:s sidemenu icon rules
  teams: add team count when searching for team
  changed background color for infobox and new blues in light theme, light theme now uses blue-dark in panel query (#10211)
  ux: fixed navbar issue when sidemenu closes
  ux: minor position change for layout selector, fixes #10217
  fix: view json from share modal now works, #10217
  ux: used new add data sources icon
  dashfolders: styling of selected filters
  dashfolders: styling of selected filters
  dashfolders: fix moving plugin dashboard to folder
  changelog: adds note about closing #9170
  dashfolders: fix folder selection dropdown in dashboard settings
  ...
2017-12-15 14:34:55 +01:00
bergquist ea4ef47982 prometheus: change default resolution to 1/1
this should make the value of the step value more
consistant for most users

ref #9705
2017-12-15 14:24:31 +01:00
Torkel Ödegaard a8a5f8181b fix: viewers can edit now works correctly 2017-12-15 14:19:49 +01:00
Torkel Ödegaard ed48d27d85 fix: fixed minor ux and firefox issues, fixes #10228 2017-12-15 13:34:50 +01:00
Torkel Ödegaard 63d4499a2b ux: minor fixes 2017-12-15 13:14:00 +01:00
Torkel Ödegaard 2797e8e2d0 profile: use name or fallback for profile page 2017-12-15 13:06:11 +01:00
Torkel Ödegaard fdf4bad1b7 fix: sidemenu profile main text is now username instead of name 2017-12-15 13:03:07 +01:00
Torkel Ödegaard 7bec195599 build: update master version to 5.0.0-pre1 2017-12-15 12:09:11 +01:00
Torkel Ödegaard c395237710 Merge branch Grafana v5 'develop' branch 2017-12-15 12:06:09 +01:00
Torkel Ödegaard 8905c8e5fb Merge branch 'team_member_count' of https://github.com/bergquist/grafana into develop 2017-12-15 11:53:47 +01:00
Torkel Ödegaard 75bfe313d7 Merge remote-tracking branch 'origin/develop-filter-table' into develop 2017-12-15 11:44:51 +01:00
Daniel Lee 2b814738c1 dashfolder: change to migration text
First index for the dashboard_acl table had the word
unique in the migration description even though the
index is not unique
2017-12-15 11:35:14 +01:00
Torkel Ödegaard ff0c2b496f ux:s sidemenu icon rules 2017-12-15 11:18:22 +01:00
bergquist 256f7176a2 teams: add team count when searching for team
closes #10207
2017-12-15 11:08:06 +01:00
Torkel Ödegaard 68ab11d7bf Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-15 11:01:30 +01:00
Patrick O'Carroll c78f1834bd changed background color for infobox and new blues in light theme, light theme now uses blue-dark in panel query (#10211) 2017-12-15 11:01:18 +01:00
Torkel Ödegaard 313d20292e ux: fixed navbar issue when sidemenu closes 2017-12-15 10:28:45 +01:00
Torkel Ödegaard 9a711a4fc3 ux: minor position change for layout selector, fixes #10217 2017-12-15 09:58:39 +01:00
Torkel Ödegaard 3300af909a Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-15 09:50:18 +01:00
Torkel Ödegaard ba3dbac50d fix: view json from share modal now works, #10217 2017-12-15 09:49:57 +01:00
Torkel Ödegaard 69305c20a0 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-15 09:29:41 +01:00
Torkel Ödegaard 25d8f21b64 ux: used new add data sources icon 2017-12-15 09:19:29 +01:00
Marcus Efraimsson a84e03ddc4 dashfolders: styling of selected filters
#10081
2017-12-15 09:14:10 +01:00
Marcus Efraimsson bd7837e8d7 dashfolders: styling of selected filters
#10081
2017-12-14 20:20:36 +01:00
Torkel Ödegaard 581257416e Merge remote-tracking branch 'origin/develop-icons' into develop 2017-12-14 19:56:19 +01:00
Marcus Efraimsson 62e6fed5ce dashfolders: fix moving plugin dashboard to folder
If moving a dashboard and the server responds with a plugin-dashboard
error we add the overwrite flag and moving the dashboard again.
Fixes #10183
2017-12-14 16:51:23 +01:00
bergquist 11fd401fad changelog: adds note about closing #9170 2017-12-14 15:59:49 +01:00
Marcus Efraimsson b1bb012343 dashfolders: fix folder selection dropdown in dashboard settings
Use folder id from meta instead of dashboard object
2017-12-14 15:58:24 +01:00
Carl Bergquist f5d26bfcc9 Merge pull request #10050 from davkal/davkal/multi-query-table
Add support to render values of multiple queries in the same table
2017-12-14 15:57:07 +01:00
Patrick O'Carroll 780d3e2c8f fix for merge conflict 2017-12-14 15:50:47 +01:00
Carl Bergquist 45eda16a87 Merge pull request #10203 from queeno/dashboard_provisioner_id_validation
Avoid ID validation before provisioning dashboards
2017-12-14 15:43:07 +01:00
Trent White 764992df2a add links for large cta 2017-12-14 09:31:59 -05:00
Patrick O'Carroll 0f62b3e04d resolve merge conflict 2017-12-14 15:15:54 +01:00
Marcus Efraimsson 854d22fa8e dashfolders: bulk move/delete improvements
bulk delete dashboards synchronously
moved bulk delete and move dashboards to backend_srv
better error handling/messages when moving and deleting folders/dashboards
fixes #10181
2017-12-14 15:09:17 +01:00
Torkel Ödegaard 4f56d4ac07 snapshots: fixed snapshot issues, fixes #10214 2017-12-14 14:58:45 +01:00
bergquist 4a433ee630 docs: include all notifiers type 2017-12-14 14:45:17 +01:00
Patrick O'Carroll 33f2e31393 replaced old table with filter-table, removed edit button, made whole rows to links 2017-12-14 14:30:13 +01:00
Torkel Ödegaard 4e38526404 playlist: fixed playlist buttons in dashboard header, fixes #10213 2017-12-14 14:27:47 +01:00
Torkel Ödegaard 66ca8a6621 Update CHANGELOG.md 2017-12-14 13:58:33 +01:00
Torkel Ödegaard 88e9012cef Update CHANGELOG.md 2017-12-14 13:58:11 +01:00
bergquist f6f9e58d45 docs: update latest version to 4.6.3 2017-12-14 13:45:44 +01:00
Torkel Ödegaard 0085114d4e ux: minor changes to search input 2017-12-14 13:08:32 +01:00
Johannes Schill b012131050 Magnifying glass on search fields #10188 (#10206)
* ux: Add magnifying glass icon to search input and remove the text label (#10188)

* ux: Add new look on search field to manage dashboards, users, teams, data sources, plugins. Change to use our own icon class instead of .fa (#10188)

* ux: Add new search look on org/users (#10188)
2017-12-14 12:46:00 +01:00
Torkel Ödegaard 776c39fd79 templating: made templateSrv globally accessable as ES6 module, DashboardRow can not interpolate row title 2017-12-14 12:31:57 +01:00
Torkel Ödegaard 9007e26106 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-14 12:10:59 +01:00
Torkel Ödegaard ff89531849 fix: ignore row clones in schema migration 2017-12-14 12:10:32 +01:00
Robin Gustafsson cf7a49977f proxyds: delete cookies except those listed in keepCookies 2017-12-14 11:46:44 +01:00
Daniel Lee bcc85862fe dshttpsettings: Move whitelisted cookies to end of config page 2017-12-14 11:46:44 +01:00
Daniel Lee f1aa7dcd52 proxyds: failing test for keepCookies
If the cookies are specified in the keepCookies property then they
should not be deleted from proxied requests for data sources
2017-12-14 11:46:44 +01:00
Daniel Lee 592cb386e2 dshttpsettings: add field for cookies that should be kept
The ds proxy strips out cookies. Cookie names specified in
this field will not be stripped out. This is the frontend
change only.
2017-12-14 11:46:44 +01:00
Marcus Efraimsson e136b7c286 dashfolders: /dashboards should render index page with a 200 OK 2017-12-14 11:30:57 +01:00
bergquist 43ac2b1dba update version for packagecloud 2017-12-14 11:30:10 +01:00
Marcus Efraimsson 196a05d487 dashfolders: bulk move/delete improvements
Use slug and url instead of uri
Check/uncheck a folder will check/uncheck all its children dashboards
Allow to move dashboards when there are both folders and dashboards selected
Hide the header of section when only managing one folder
#10081 #10181
2017-12-14 11:26:16 +01:00
bergquist 294a6a0046 add release date for 4.6.3 2017-12-14 11:20:34 +01:00
Daniel Lee fcca36a256 fix: after removed file 2017-12-14 09:46:55 +01:00
Daniel Lee 34cffc6b92 dashfolder: fix after backendSrv change
also removes unused create folder modal
2017-12-14 09:35:14 +01:00
Daniel Lee f1b1dbc6dd dashboard: fix test after merge conflict 2017-12-14 09:34:00 +01:00
Daniel Lee c5c403b6ef orgswitcher: update test 2017-12-14 09:02:23 +01:00
Simon Aquino 5dbbf1826c Avoid ID validation before provisioning dashboards
Attempting to provision grafana using a previously exported
JSON dashboard with the ID field already set, might result in an error.
In fact, Grafana might believe that a dashboard with that
given ID already exists in the database, throwing an error if it doesn't.
(see pkg/services/sqlstore/dashboard.go#L32)

The dashboard provisioner should set the dashboard id to zero in order to
avoid this behaviour inducing the dashboard to be written to the DB
without ID validation.
2017-12-14 02:07:50 +01:00
Trent White 2c4de364f8 annotation icon fix 2017-12-13 18:18:51 -05:00
Trent White d23131bbd2 udpate dark json icon 2017-12-13 18:18:15 -05:00
Trent White 1cbd88fc14 dashboard settings icons 2017-12-13 18:17:56 -05:00
Trent White 2a32d01bd5 replace icon on dashboard list (fa-th-large - looked squished) with a smaller version of dashbord icon. This may not be the best way to do the css, so it's a separate commit 2017-12-13 17:51:01 -05:00
Trent White e2bbb85daa new icons created and added to nav 2017-12-13 17:48:44 -05:00
bergquist 75ecc019d3 changelog: adds note about closing #7481 2017-12-13 19:32:06 +01:00
bergquist 97c5498093 fixes broken unit test 2017-12-13 19:27:53 +01:00
Torkel Ödegaard 00e2413013 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 19:18:47 +01:00
Torkel Ödegaard a7645b710d Merge remote-tracking branch 'origin/master' into develop 2017-12-13 19:18:10 +01:00
bergquist a7d746375d Merge branch 'Thib17-master'
* Thib17-master:
  alertmanager: endAt should only be used if we have the correct value
  alertmanager: code style
  alerting: reduce log level for notifiers
  Alertmanager notifier: add "metric" labels if no tags
  Alertmanager notifier: make it match the new notifier interface
  support alertmanager
2017-12-13 19:17:10 +01:00
bergquist ade734168c alertmanager: endAt should only be used if we have the correct value 2017-12-13 19:17:00 +01:00
bergquist 3691faf136 alertmanager: code style 2017-12-13 19:17:00 +01:00
bergquist 1240db31d3 alerting: reduce log level for notifiers 2017-12-13 19:17:00 +01:00
Thibault Chataigner a8264fe316 Alertmanager notifier: add "metric" labels if no tags
Signed-off-by: Thibault Chataigner <t.chataigner@criteo.com>
2017-12-13 19:17:00 +01:00
Thibault Chataigner 3a7939c930 Alertmanager notifier: make it match the new notifier interface
Signed-off-by: Thibault Chataigner <t.chataigner@criteo.com>
2017-12-13 19:17:00 +01:00
Mitsuhiro Tanda 20d94f9703 support alertmanager 2017-12-13 19:17:00 +01:00
Carl Bergquist 35106537f2 Replace Read Only Editor role with ViewersCanEdit setting (#10166)
* removes readonly editor role

* adds viewersCanEdit setting

This enable you to allow viewers to edit/inspect
dashboards in grafana in their own browser without
allowing them to save dashboards

* remove read only editor option from all dropdowns

* migrates all read only viewers to viewers

* docs: replace readOnlyEditor with viewersCanEdit
2017-12-13 18:53:42 +01:00
Marcus Efraimsson a583f92d16 dashfolders: bulk move dashboards synchronously
#10181
Also added better error handling when moving dashboards to other folders
2017-12-13 18:21:49 +01:00
Marcus Efraimsson d736795fe6 dashfolders: remove error message when moving to the same folder. #10135 2017-12-13 18:21:49 +01:00
Torkel Ödegaard 26b8483fb0 teams: Fixes to edit team page 2017-12-13 18:20:49 +01:00
Torkel Ödegaard 529fcc46c0 Merge remote-tracking branch 'origin/10172_team_edit' into develop 2017-12-13 18:13:16 +01:00
Torkel Ödegaard 6254304667 Merge remote-tracking branch 'origin/select-wrapper' into develop 2017-12-13 18:12:35 +01:00
Torkel Ödegaard 9fb5367eea Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 18:08:29 +01:00
Torkel Ödegaard 2765c2ecc7 Merge branch 'develop-settings-links' into develop 2017-12-13 18:08:12 +01:00
Torkel Ödegaard e99f846a6f ux: minor text change to #10177 2017-12-13 18:07:56 +01:00
Patrick O'Carroll c63569b6ce made template link look like input (#10198) 2017-12-13 18:01:06 +01:00
Torkel Ödegaard 7f0440fded minor tweaks 2017-12-13 18:00:16 +01:00
bergquist 7c0fc59dfb execute process directly instead of creating sub shell 2017-12-13 17:58:50 +01:00
Alexander Zobnin a48ba7b19e Dashboard grid fixes (#10194)
* grid: fix layout saving after panel move, #10185

* don't allow to drag fullscreen panels, #10171
2017-12-13 17:53:57 +01:00
Torkel Ödegaard 90c5a8435f refactor: minor change to #10199 2017-12-13 17:52:42 +01:00
Torkel Ödegaard 04bb2b8ce8 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 17:49:08 +01:00
Alexander Zobnin 3cdf0af398 fix broken 'd r' shortcut (refresh dashboard) (#10199) 2017-12-13 17:48:58 +01:00
Torkel Ödegaard 59ea19e03b Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 17:46:51 +01:00
Torkel Ödegaard 1eeb421ddb ux: updated login page 2017-12-13 17:46:14 +01:00
Daniel Lee fa29ff0d79 fixes switching org when url contains orgId querystring param 2017-12-13 17:29:17 +01:00
Torkel Ödegaard 8ea94817f5 build: fixed build issue 2017-12-13 16:56:24 +01:00
Torkel Ödegaard db95a01feb Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 16:31:11 +01:00
Torkel Ödegaard 3c65015671 ux: refactoring login page change 2017-12-13 16:30:31 +01:00
Daniel Lee 7d0ca63b72 navmodel: fix for signout link on pref page
without a target property on the link, the signout tab on
the preferences page returned a 404.
2017-12-13 16:28:36 +01:00
bergquist f18eeaa920 change protip to go to manage dashboards 2017-12-13 16:08:32 +01:00
Torkel Ödegaard aa4f1fa971 Merge remote-tracking branch 'origin/9879-login' into develop-login2 2017-12-13 16:06:17 +01:00
Torkel Ödegaard d417a625d5 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-13 15:55:16 +01:00
Torkel Ödegaard 313735bd75 search: worked on search results 2017-12-13 15:51:59 +01:00
Patrick O'Carroll 3b783216fa added select-wrapper to where it was missing for unified look 2017-12-13 15:05:43 +01:00
bergquist dfde6e75ed changelog: adds note about closing #10151 2017-12-13 14:41:28 +01:00
Johannes Schill c433597f99 Merge branch 'develop' into 9879-login 2017-12-13 14:21:39 +01:00
Johannes Schill b8bfe51b03 ux: wip - Login animation POC (#9879) 2017-12-13 14:20:07 +01:00
bergquist ee5f030ded changelog: adds note about closing #9318 2017-12-13 13:53:38 +01:00
Johannes Schill 0be9789364 ux: Move "Sign up" and "Reset password" to its own pages - and remove all inline styling (#9879) 2017-12-13 13:51:52 +01:00
bergquist bf999a4f82 fixes broken alert eval when first condition is using OR
closes #9318
2017-12-13 13:37:10 +01:00
Torkel Ödegaard ccbd18006e ux: org user management changes 2017-12-13 13:16:44 +01:00
bergquist dd3dd407ad removes unused property 2017-12-13 13:12:50 +01:00
Patrick O'Carroll 29d1ec561f fixed edit team header, fixes #10172 2017-12-13 12:48:49 +01:00
Patrick O'Carroll daf32c579d changed width to input fields (#10184) 2017-12-13 12:42:50 +01:00
Torkel Ödegaard cacbcb9c99 ux: added search box to ds list page, closes #10106 2017-12-13 11:29:29 +01:00
Torkel Ödegaard 22aa1f7e42 ux: change members to users 2017-12-13 11:21:33 +01:00
Torkel Ödegaard 60e2ba111f plugins: fixed plugin edit page and plugin page 2017-12-13 11:12:35 +01:00
Marcus Efraimsson c6a02bec81 dashfolders: Minor css fixes for bulk edit 2017-12-13 11:08:28 +01:00
Marcus Efraimsson a9ba7b912f dashfolders: Minor css fixes for bulk edit 2017-12-13 10:59:29 +01:00
Daniel Lee 02d3a9f365 docs: SSL Mode config settings for Postgres 2017-12-13 10:55:58 +01:00
Daniel Lee c98e15903e dashfolder: settings page for folder
with rename and delete. Fixes #10120
2017-12-13 10:54:08 +01:00
bergquist 355a12d7cb Merge branch 'Thib17-master'
* Thib17-master:
  removes verbose logging
  Add a per-notifier ShouldNotify()
2017-12-13 10:26:35 +01:00
bergquist 0b6169b3f5 removes verbose logging 2017-12-13 10:21:11 +01:00
Torkel Ödegaard 2465fcbd6b fix: FolderId and IsFolder when saving dashboard 2017-12-13 10:00:54 +01:00
Torkel Ödegaard d3858d8847 ux: fixed inactive view mode and removed animation 2017-12-13 09:49:24 +01:00
Patrick O'Carroll afc8948905 removed unused declaration 2017-12-13 09:46:55 +01:00
Patrick O'Carroll f28a434566 updated dashlink editor, now has list 2017-12-13 09:44:51 +01:00
Johannes Schill 6a2b1e52b2 Merge branch 'develop' into 9879-login 2017-12-13 09:22:48 +01:00
Johannes Schill 1f8c1a5cc3 fix: Handle state when no password is entered on registration page (#9879) 2017-12-13 09:09:58 +01:00
Alexander Zobnin d85405d5b5 ux: move add member into its own page (#10167) 2017-12-12 20:15:26 +01:00
Thibault Chataigner fd633a1d5d Add a per-notifier ShouldNotify()
This way we are able to edit notification behavior per notifier.
This would be usefull to let some notifiers send notifications,
even when the state doesn't change, or with custom condition.

Signed-off-by: Thibault Chataigner <t.chataigner@criteo.com>
2017-12-12 17:35:54 +01:00
Torkel Ödegaard 67f1435dc7 minor fix for #10136 2017-12-12 17:18:25 +01:00
Torkel Ödegaard 05cc1f85c3 Merge branch 'refactor-user-group-to-team' of https://github.com/alexanderzobnin/grafana into user-group-to-team 2017-12-12 17:07:00 +01:00
Alexander Zobnin 10fbfcb1d3 Fix graph legend scroll (#10169)
* graph panel: fix legend scroll

* graph panel: enable scroll for table legend

* graph panel: fix legend right side toggle
2017-12-12 17:02:19 +01:00
Alexander Zobnin 8aaaee5e16 fix colorpicker colors order (width issue) (#10170) 2017-12-12 17:00:56 +01:00
Torkel Ödegaard a02086814e graphite: remove check so that query is sent even for possible non leaf nodes 2017-12-12 17:00:00 +01:00
Torkel Ödegaard e88bd67d5b fix: fixed build failure 2017-12-12 16:31:24 +01:00
Johannes Schill 8624414657 ux: Use the previously renamed classes (#9879) 2017-12-12 16:29:45 +01:00
Torkel Ödegaard 89db9cc976 fix: fixed dashboard api tests 2017-12-12 16:15:24 +01:00
Torkel Ödegaard de91d68402 fix: don't detect graphite version before it's saved 2017-12-12 15:28:41 +01:00
Torkel Ödegaard cfd755eb93 updated new dashboard folder 2017-12-12 15:19:59 +01:00
Torkel Ödegaard 271c597c9b ux: style tweaks 2017-12-12 15:13:47 +01:00
Johannes Schill 01e9053625 ux: Update ui of login buttons via third parties and add link to sign up page (#9879) 2017-12-12 15:00:04 +01:00
Patrick O'Carroll 9b9ac45295 redesigning links editor 2017-12-12 14:05:24 +01:00
Torkel Ödegaard d379b501aa ux: search look update 2017-12-12 13:55:32 +01:00
Torkel Ödegaard df25c9f0fa tech: updated version for react-grid item 2017-12-12 13:27:56 +01:00
Torkel Ödegaard 8a61e0967e Merge branch 'master' into develop 2017-12-12 13:22:13 +01:00
Torkel Ödegaard a00af85f36 build: fixed unit test failure 2017-12-12 13:21:50 +01:00
Torkel Ödegaard cafed8ce8f Merge branch 'master' into develop 2017-12-12 13:19:07 +01:00
David Kaltschmidt edb2dcf1b0 Extracted row matching function and added comments 2017-12-12 13:18:06 +01:00
bergquist ff1b71bc20 allow overriding dashboards from api 2017-12-12 13:18:00 +01:00
Patrick O'Carroll a69c260173 redesigning links editor 2017-12-12 13:06:32 +01:00
Torkel Ödegaard 871b98c06b graphite: minor fix for PR #10142 the query was being sent for every segmen t you selected before you completed the metric path 2017-12-12 12:56:40 +01:00
Torkel Ödegaard bb52f3670e Merge branch 'parseTarget' of https://github.com/DanCech/grafana into DanCech-parseTarget 2017-12-12 12:38:58 +01:00
Torkel Ödegaard e98f573732 build: fixed broken test 2017-12-12 12:31:41 +01:00
Torkel Ödegaard 35c8cdf3a5 refactor: minor change to panel json fix PR #10156 2017-12-12 12:10:19 +01:00
Alexander Zobnin 86204abbfe Move panel JSON editor to modal dialog (#10156)
* panel: fix JSON edit, #10149

* panel: show JSON editor in modal, #10149
2017-12-12 12:04:08 +01:00
Torkel Ödegaard bbd0b98be9 Merge branch 'develop-settings' into develop 2017-12-12 12:03:10 +01:00
Torkel Ödegaard 7b0bbefb96 ux: minor updates to dashboard settings 2017-12-12 12:02:44 +01:00
Torkel Ödegaard 0a8bd5d289 ux: dashboard settings updated 2017-12-12 11:49:01 +01:00
Patrick O'Carroll 515faa9ec5 new dashboard and folder in search (#10152)
* new dashboard and folder in search

* code formatting fixes
2017-12-12 11:26:15 +01:00
bergquist c68e7c7283 avatar: avoid concurrent map writes 2017-12-12 11:25:47 +01:00
Patrick O'Carroll 6ae94dda87 redesign dashlinks 2017-12-12 11:21:32 +01:00
Torkel Ödegaard 79d9b64f82 fix: fixed issue with optimized build grid directive missing ngInject comment, fixes #10161 2017-12-12 11:00:16 +01:00
Carl Bergquist ea2f65b4c3 Merge pull request #10110 from bwhaley/master
Fixes bug in cloudwatch regarding credentials
2017-12-12 10:16:53 +01:00
Alfred Krohmer 72e686457c Add default message for Pushover notifications
If the message field is left empty for Pushover notifications, the API will return an error. This adds a default message if the message would otherwise be empty.

This fixes #8006.
2017-12-11 22:14:38 +01:00
Alexander Zobnin 26281dd9d8 refactor: format files by gofmt 2017-12-11 19:46:05 +03:00
Johannes Schill 097596a336 ux: Adjust margins when external auth providers are enabled (#9879) 2017-12-11 17:22:40 +01:00
Torkel Ödegaard cc046f03aa ux: dashboard settings progress 2017-12-11 17:19:17 +01:00
Torkel Ödegaard 97bd00c520 ux: dashboard settings work progress 2017-12-11 16:46:10 +01:00
Daniel Lee a37f1b77f1 dashfolders: new dashboard with folder selected
Fixes #10133
2017-12-11 16:37:40 +01:00
Johannes Schill f77d34f7c9 ux: wip - Push pixels for new login, remove inline styling, change so we use media queries using min-width instead of max-width and make sure it looks ok across all screen sizes (#9879) 2017-12-11 16:31:50 +01:00
Torkel Ödegaard 008b9bb3e9 ux: dashboard settings work progress 2017-12-11 16:28:57 +01:00
bergquist 411e8a16c2 backend plugins: manage plugins lifecycle with context 2017-12-11 15:05:06 +01:00
Torkel Ödegaard c4b759fe6d ux: dashboard settings progress 2017-12-11 15:04:48 +01:00
Torkel Ödegaard 7f597283e8 ux: dashboard settings progress 2017-12-11 13:47:04 +01:00
Torkel Ödegaard 61dbcfd35b ux: dashboard settings progress 2017-12-11 13:29:23 +01:00
bergquist 1af4f7a1b4 backend plugins: dont swallow errors 2017-12-11 13:16:16 +01:00
Torkel Ödegaard a682475152 fix: fixed failing test 2017-12-11 13:09:25 +01:00
bergquist 026eb9ac36 backend plugins: cleanup protobuf files 2017-12-11 13:09:10 +01:00
Torkel Ödegaard 05ec7541c8 ux: dashboard settings progress 2017-12-11 13:04:06 +01:00
bergquist 7f68c2a53d backend plugins: add more datasource params 2017-12-11 12:53:01 +01:00
David Kaltschmidt 8d70f13393 Type-agnostic row merge in table transform for multiple queries
* moved unique value naming to datasource (credit: @bergquist)
* merge rows based on same column-values and empty values
* expanded tests
2017-12-11 12:42:53 +01:00
Torkel Ödegaard 8354c64ff5 Merge branch 'develop' into develop-settings 2017-12-11 12:15:59 +01:00
Torkel Ödegaard 09cc60ffe4 ux: dashboard settings progress 2017-12-11 12:13:45 +01:00
Torkel Ödegaard 795d9c0362 ux: fixed navbar and sidemenu z-index issue and improved responsive rules 2017-12-11 11:42:13 +01:00
bergquist 48e7f866f6 code style 2017-12-11 11:26:36 +01:00
bergquist 55a39dd2ad implement upstream changes 2017-12-11 11:14:03 +01:00
Torkel Ödegaard 2ce4a8e4c5 fix: fixed build failure 2017-12-11 10:52:38 +01:00
bergquist a4748d82ab Merge branch 'master' into backend_plugins
* master:
  changelog: adds note about closing #10131
  Explicitly specify default region in CloudWatch datasource (#9440)
  wait for all sub routines to finish
  changelog: adds ntoe about closing #10111
  postgres: change $__timeGroup macro to include "AS time" column alias (#10119)
  fixes broken test
  Solves problem with Github authentication restriction by organization membership when the organization's access policy is set to "Access restricted". "Access restricted" policy should not stop user to authenticate.
2017-12-11 10:43:41 +01:00
Carl Bergquist 5d70a36ad8 Merge pull request #10150 from jomenxiao/jomenxiao/render_setting_lang
[render image]add encoding param
2017-12-11 10:36:38 +01:00
Torkel Ödegaard 84aa1e89c0 Merge branch 'develop' into develop-login 2017-12-11 10:29:37 +01:00
Carl Bergquist 43cff3a2bd Merge pull request #10146 from noakup/master
hyphen
2017-12-11 10:18:00 +01:00
bergquist 66bc1fea2d changelog: adds note about closing #10131 2017-12-11 09:45:47 +01:00
Carl Bergquist a5b3f2b891 Merge pull request #10132 from bergquist/go_routine_management
Wait for all sub routines to finish before closing Grafana
2017-12-11 09:43:37 +01:00
Mikael Olenfalk 8e7166b5c4 Explicitly specify default region in CloudWatch datasource (#9440)
The datasource uses the default region in the query if the region
is "" in the settings. However setting the region to an empty string
is almost impossible and rendered incorrectly.

This commit introduces a special value "default" for region which
is shown in the drop down and is translated to the default region
of the data source when performing queries.
2017-12-11 09:37:27 +01:00
Torkel Ödegaard 502171fff1 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-11 09:18:03 +01:00
jomenxiao ad2a69bff4 add encoding param 2017-12-11 16:01:17 +08:00
bergquist f7ed24475c wait for all sub routines to finish
simple solution for waiting for all go sub routines to
finish before closing Grafana. We would use errGroup
here as well but I dont like spreading context's all
over the place.

closes #10131
2017-12-11 08:53:06 +01:00
Dan Cech 588ce6606c fix function re-ordering broken in #9436 2017-12-10 21:20:38 -05:00
noakup e6bdccbb05 hyphenhyphen 2017-12-10 18:38:48 +02:00
Dan Cech 525ae4fdf5 support metric trees of varying depth, never send '.select metric' to graphite 2017-12-10 10:48:12 -05:00
Dan Cech 8dcfa18761 simplify function parameter addition 2017-12-10 10:45:41 -05:00
Torkel Ödegaard 511fa7dec1 ux: dashboard settings progress 2017-12-10 12:41:11 +01:00
Torkel Ödegaard 00c723f04a ux: minor changes 2017-12-10 12:21:04 +01:00
Torkel Ödegaard e1440dcc44 ux: navbar progress 2017-12-09 22:45:33 +01:00
Dan Cech 3a1700cbee improve handling of query references 2017-12-09 16:27:05 -05:00
Torkel Ödegaard 1e5983b46c Merge branch 'develop' into develop-settings 2017-12-09 21:50:26 +01:00
Torkel Ödegaard 47ecbbab8d build: fix for tslint 2017-12-09 21:47:59 +01:00
Torkel Ödegaard 7f73fae6ae ux: form styles polish, improvement but can be better 2017-12-09 21:46:30 +01:00
Dan Cech 4fcf79a3a6 demonstrate parseTarget issue 2017-12-09 11:17:34 -05:00
Torkel Ödegaard 55609382f1 fix: fixed panel size rerendering issues 2017-12-09 13:53:03 +01:00
Torkel Ödegaard fbe9f759ad ux: work on dashboard settings views 2017-12-08 18:15:24 +01:00
Marcus Efraimsson 47014ddb65 dashfolders: Do not allow loading a folder as a dashboard 2017-12-08 17:50:37 +01:00
Marcus Efraimsson 70b0165835 fix: Remove console.log 2017-12-08 17:49:33 +01:00
Marcus Efraimsson 1985027549 dashfolders: Folder picker should set correct default values. Fixes #10135 2017-12-08 17:46:52 +01:00
Alexander Zobnin e4675ca5c1 refactor: user groups to teams, replace rest mentions 2017-12-08 19:01:10 +03:00
Alexander Zobnin 5d3bfee2f1 refactor: user groups to teams, rename backend files 2017-12-08 18:51:59 +03:00
Alexander Zobnin 9e62a777c7 refactor: user groups to teams, rename frontend files 2017-12-08 18:47:55 +03:00
Alexander Zobnin d8612380e9 refactor: rename User Groups to Teams 2017-12-08 18:25:45 +03:00
bergquist 0506cfdc1d changelog: adds ntoe about closing #10111 2017-12-08 16:09:32 +01:00
Carl Bergquist 2408d8f09a Merge pull request #10112 from adiletmaratov/master
Solves problem with Github authentication restriction by organization
2017-12-08 16:05:27 +01:00
Torkel Ödegaard 7a2e886e70 Merge branch 'develop' into develop-settings 2017-12-08 16:02:42 +01:00
Torkel Ödegaard 10a77b0353 ux: forms style font size change 2017-12-08 15:59:51 +01:00
Torkel Ödegaard 1b6be031e5 ux: dashboard settings progress 2017-12-08 15:53:26 +01:00
Sven Klemm ce809de1ed postgres: change $__timeGroup macro to include "AS time" column alias (#10119)
* change $__timeGroup macro to include column alias

* update docs and help text for $__timeGroup macro
2017-12-08 15:14:10 +01:00
Torkel Ödegaard db663c380b new timepicker is working 2017-12-08 14:38:33 +01:00
Torkel Ödegaard 9369a87e93 Merge branch 'develop' into develop-settings 2017-12-08 14:32:15 +01:00
Marcus Efraimsson b03b360414 dashfolders: Create nav model for folder page client side #10083 2017-12-08 14:08:16 +01:00
Torkel Ödegaard 63b717f607 ux: minor change to new folder page 2017-12-08 13:54:11 +01:00
Patrick O'Carroll 9cae579c75 fix for search dropdown on small screen + icon overlapping fix (#10091)
* fix for search dropdown on small screen + icon overlapping fix

* fixing search filter for small screen

* hid tags and filter box

* iphone input zoom fix

* moved input styling to old-responsive
2017-12-08 13:37:37 +01:00
Torkel Ödegaard 77b537f45f ux: added react scrollbar component and added it to add panel panel 2017-12-08 13:30:16 +01:00
Torkel Ödegaard 2bc23d2063 tech: updated ngreact and with custom PR applied 2017-12-08 12:26:19 +01:00
Torkel Ödegaard e03abde778 refactoring: #10130 2017-12-08 12:17:09 +01:00
Torkel Ödegaard 974d4d9739 Revert "Don't animate panels on initial render (#10130)"
This reverts commit e0c173c5af.
2017-12-08 11:53:51 +01:00
Torkel Ödegaard b59d06cab6 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-08 11:49:28 +01:00
Alexander Zobnin e0c173c5af Don't animate panels on initial render (#10130)
* grid: dont animate panels on initial render

* grid: dont animate panels on initial render
2017-12-08 11:49:14 +01:00
Torkel Ödegaard 9f87d8d344 Merge branch 'develop-graph-legend' into develop 2017-12-08 11:47:50 +01:00
Torkel Ödegaard 35a7109a6a refactoring: fixing bug when all values are null 2017-12-08 11:45:44 +01:00
bergquist 0c5ef1453d fixes broken test 2017-12-08 11:33:15 +01:00
Marcus Efraimsson f78f86d0ab dashfolders: Hide search input area when showing CTA. #10083 2017-12-08 11:23:57 +01:00
bergquist f0abe696b5 Merge branch 'master' into backend_plugins
* master:
  improve error handling for datasources as cfg
  improve sample datasource.yaml
2017-12-08 10:55:55 +01:00
Torkel Ödegaard 4aad4a069c ux: graph legend refactoring 2017-12-08 10:54:53 +01:00
bergquist 5f5cdad97a improve error handling for datasources as cfg 2017-12-08 10:50:11 +01:00
bergquist c766802325 improve sample datasource.yaml 2017-12-08 10:28:38 +01:00
bergquist 7f6e028850 Merge branch 'master' into backend_plugins
* master:
  make gitignore more generic
  fixes issue with datasource/dash as cfg and gitignore
2017-12-08 10:26:26 +01:00
bergquist 80a852b00a make gitignore more generic 2017-12-08 09:35:46 +01:00
Alexander Zobnin cd3cf5d19b grid css transforms: minor refactor (#10128) 2017-12-08 08:43:47 +01:00
Alexander Zobnin 3de17ecda7 dashboard grid: enable CSS transforms (#10125) 2017-12-08 08:21:00 +01:00
bergquist 79d7213e11 fixes issue with datasource/dash as cfg and gitignore 2017-12-08 06:52:47 +01:00
Torkel Ödegaard 8415ea6c71 refactoring: changing how graph height and legend height is calculated, using flex box seems to actually work, #10079 2017-12-07 19:53:32 +01:00
Marcus Efraimsson 017b337f00 dashfolders: create folder page
Fixes #10085
2017-12-07 19:32:38 +01:00
Torkel Ödegaard c629a58b6d refactor: removed graph height from legend decimal calc 2017-12-07 18:13:56 +01:00
Marcus Efraimsson ff535a5e9a dashfolders: css fix 2017-12-07 18:05:47 +01:00
bergquist 9edd7701b2 fixes failing tests 2017-12-07 18:05:11 +01:00
Marcus Efraimsson 2ea663df78 dashfolders: New Dashboard Folder page
Fixes #10083. Permissions page is just a placeholder
for now.
2017-12-07 17:30:54 +01:00
Marcus Efraimsson 10b0fc79f3 fix: move components tests to specs folder 2017-12-07 17:30:54 +01:00
Ben Whaley 51854ff4fa Fix go fmt 2017-12-07 16:10:13 +00:00
Torkel Ödegaard a7897b945b Merge branch 'graph-legend-v5' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-graph-legend-v5 2017-12-07 17:09:46 +01:00
bergquist e1d4bf2607 kill plugin processes when grafana shuts down 2017-12-07 16:59:35 +01:00
Torkel Ödegaard 87ceeb0898 fix: v5 sidemenu & link to shortcuts now works, fixes #10087 2017-12-07 16:58:57 +01:00
bergquist a2d47427ba separate plugin impl and proto files 2017-12-07 16:33:36 +01:00
bergquist 0bc5bf53ce correct comments 2017-12-07 16:33:36 +01:00
bergquist 3f5daa5e58 add hclog wrapper for grafanas logger in plugins 2017-12-07 16:33:36 +01:00
bergquist 0f6c470e03 add go-plugin deps to vendor 2017-12-07 16:33:36 +01:00
bergquist a97360ab27 initial version of proto files 2017-12-07 16:32:17 +01:00
bergquist 7b81ebc991 changelog: breaking regardless what your running 2017-12-07 16:29:56 +01:00
bergquist f39b40c2dd changelog: better styling 2017-12-07 16:29:00 +01:00
bergquist 5aab6b5c20 removes last pieces of dashboard.json 2017-12-07 16:26:07 +01:00
Torkel Ödegaard 68dab71275 refactor: sidemenu toggle & hiding logic 2017-12-07 16:25:21 +01:00
bergquist 5fb8b37241 changelog: note about closing #5269 and #9654 2017-12-07 16:13:08 +01:00
Carl Bergquist fb386f3c8d Merge pull request #10052 from bergquist/dashboards_from_disk
Load dashboards from disk into the database at regular interval
2017-12-07 16:12:02 +01:00
bergquist 5006f9e4c5 dashboards as cfg: update docs to use /provisioning 2017-12-07 15:55:00 +01:00
bergquist 2e610cb256 dashboards as cfg: move dash/ds config files to /provisioning/* 2017-12-07 15:27:01 +01:00
bergquist 50bc801f1c dashboards as cfg: copy dash/ds files if missing 2017-12-07 15:27:01 +01:00
bergquist 361acd3fa1 dashboards as cfg: include cfg files in dist packages 2017-12-07 15:27:01 +01:00
bergquist 1dfa529941 dashboards as cfg: avoid walking fs in parallel 2017-12-07 15:27:01 +01:00
bergquist b28ea0b407 dashboards as cfg: type 2017-12-07 15:27:01 +01:00
bergquist 2a18345eb2 dashboards as cfg: disable loading dashboards from disk by default 2017-12-07 15:27:01 +01:00
bergquist 099178466d dashboards as cfg: wire up dashboard repo 2017-12-07 15:27:01 +01:00
bergquist 288cc35529 dashboards as cfg: use gocache for caching 2017-12-07 15:27:01 +01:00
bergquist f5eac2e91d dashboards as cfg: expose dashboard service as interface 2017-12-07 15:27:01 +01:00
bergquist 16f072b320 dashboards as cfg: move saving logic for dashboards into its own service 2017-12-07 15:27:01 +01:00
bergquist 9cebb23e01 dashboards as cfg: revert minor changes 2017-12-07 15:27:01 +01:00
bergquist 74e12c260f dashboards as cfg: move dashboard saving into its own service 2017-12-07 15:27:01 +01:00
bergquist 09cb0f378b dashboards as cfg: minor tweaks 2017-12-07 15:27:01 +01:00
bergquist 93e1d8a19c dashboards as cfg: make dashboard none editable by default 2017-12-07 15:27:01 +01:00
bergquist 7f3a7ea128 dashboards as cfg: more tests 2017-12-07 15:27:01 +01:00
bergquist dc0fb8be06 dashboards as cfg: code cleanup 2017-12-07 15:27:01 +01:00
bergquist d69b63cbc0 dashboards as cfg: read first cfg version 2017-12-07 15:27:01 +01:00
Torkel Ödegaard 955dcf2418 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-07 14:15:35 +01:00
Torkel Ödegaard beb9f8ee74 Merge remote-tracking branch 'origin/master' into develop 2017-12-07 14:14:50 +01:00
Patrick O'Carroll 1542e8c1b2 removed row to center footer (#10115)
* removed row to center footer

* code formatting fix
2017-12-07 14:07:16 +01:00
Torkel Ödegaard 548652aab1 ux: minor cleanup 2017-12-07 13:33:46 +01:00
Sven Klemm a62ebb3e59 mysql: pass timerange for template variable queries (#10071)
* mysql: pass timerange for template variable queries

* mysql: document time range macro usage in template variables

* mysql: docs for on time range change refresh mode for template queries

* Revert "mysql: docs for on time range change refresh mode for template queries"

This reverts commit 5325972aa4.
2017-12-07 11:18:36 +01:00
Marcus Efraimsson d0a9770b8b dashboard: fix edge case with keyboard nav in dashboard search. #10100
If expanding a folder using mouse, unselect current keyboard selection
2017-12-07 11:14:43 +01:00
Adilet Maratov 50daf7463d Solves problem with Github authentication restriction by organization membership when the organization's access policy is set to "Access restricted". "Access restricted" policy should not stop user to authenticate.
How it is solved:
* Take organizations_url field data from user basic data response
* Make another request to get all organization the user is a member of (public membership)
* Authenticate user if appropriate organization found in that list
2017-12-07 16:13:49 +06:00
Alexander Zobnin 9bff005faf Merge remote-tracking branch 'upstream/develop' into graph-legend-v5 2017-12-07 12:45:08 +03:00
Alexander Zobnin 58d40eb6a0 graph: fix legend height calculation 2017-12-07 12:39:10 +03:00
Sven Klemm b44c599410 postgres: pass timerange for template variable queries (#10069)
* pass timerange for template queries when refresh is set to timerange
change

* document on time range change refresh mode for template queries
2017-12-07 10:05:04 +01:00
Alexander Zobnin 3cdf0dce56 graph: move auto decimals calc to ticks.ts and use it for legend values format. 2017-12-07 10:49:00 +03:00
Ben Whaley fe88658bdd Resolves grafana/grafana:#9309 2017-12-07 03:43:32 +00:00
Marcus Efraimsson 58fb35c5cb dashboard: fix linting and formating - #10100 2017-12-06 23:51:39 +01:00
Marcus Efraimsson cb0dac11a3 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-06 20:35:16 +01:00
Marcus Efraimsson f87b9aaa8a dashboard: keyboard nav in dashboard search - closes #10100
Pressing enter/return for a folder toggles it.
Pressing enter/return for a dashboard navigates to it.
2017-12-06 20:34:41 +01:00
Alexander Zobnin 2cf1c29eae graph: refactor (don't render twice) 2017-12-06 21:30:14 +03:00
Sven Klemm c80eadcdf4 handle native postgres datetime types in annotation queries (#9986) 2017-12-06 18:12:24 +01:00
Sven Klemm 373389c920 treat any text column in timeseries query as metric name unless column (#9985)
named metric is present
2017-12-06 18:04:33 +01:00
Johannes Schill e8807f4bce Fixing tabs for Grafana 5 - #10082 (#10103)
* ux: Make new tabs responsive #10082

* ux: Add possibility to manipulate url in angular router outside of angular - and use it in the responsive navigation #10082
2017-12-06 17:36:44 +01:00
Patrick O'Carroll 8adaf99bff other panels now hidden, fixes 10088 (#10102) 2017-12-06 16:55:12 +01:00
Patrick O'Carroll ea3447fbfd fixed 404 for grafana5 + now responsive (#10101)
* fixed 404 for grafana5 + now resonsive

* code formatting fixes
2017-12-06 16:54:24 +01:00
Marcus Efraimsson fe177f198b dashboard: fix search results tests #10083 2017-12-06 14:32:22 +01:00
Marcus Efraimsson 0029d96579 dashboard: Show CTA for empty lists/folders #10083 2017-12-06 14:27:29 +01:00
Marcus Efraimsson dd3c9da009 dashboard: Dashboard folder page wip #10083 2017-12-06 14:11:25 +01:00
bergquist 48d9d0d356 prom: enable min interval per panel
This commit makes it possible to set min interval per panel.
Overrides the value configured on the datasource.

ref #9705
2017-12-06 13:51:19 +01:00
David Kaltschmidt 011b2cd1b2 Fix merge issue on multi-query table transforms
* after a match has been found the merger should keep looking for more
2017-12-06 13:12:16 +01:00
Alexander Zobnin 6b4b7969fe graph: fix karma tests 2017-12-06 14:55:57 +03:00
Alexander Zobnin 0c3e04ca60 graph: render legend before graph 2017-12-06 14:14:00 +03:00
Patrick O'Carroll 3aa1cb012a added tooltip, fixes #10092 (#10097)
* added tooltip, fixes #10092

* fixed code formatting
2017-12-06 12:13:17 +01:00
Alexander Zobnin ae80a589c1 graph: refactor 2017-12-06 12:22:35 +03:00
Alexander Zobnin 36b3309961 graph: convert legend.js to typescript 2017-12-06 11:29:13 +03:00
bergquist bbc8aa0525 docs: link from cfg page to provisioning 2017-12-05 18:44:31 +01:00
Trent White 5894b8f4e0 reduce app icon by 3px on home dashboard - wasn't lining up properly with starred/recently viewed dasboard list properly 2017-12-05 12:30:49 -05:00
Torkel Ödegaard 46c8b36244 ux: minor style tweaks to cards and sidemenu icons for white theme 2017-12-05 15:50:15 +01:00
Torkel Ödegaard 2414074c94 Merge branch 'develop-light-theme' into develop 2017-12-05 15:16:42 +01:00
Torkel Ödegaard 8085182121 ux: tweaked light theme and made page container more fluid 2017-12-05 15:16:06 +01:00
Marcus Efraimsson 8e8c3d2eeb Merge branch 'develop' into develop_searchresults 2017-12-05 14:25:20 +01:00
Daniel Lee 781349d360 dashboard: dashboard search results component. closes #10080 2017-12-05 14:20:44 +01:00
Torkel Ödegaard 16fbefbbc5 Merge branch 'develop' into develop-light-theme 2017-12-05 13:31:05 +01:00
Torkel Ödegaard 35f97c9a2f docs: added utm_source for link from ds list page to docs page 2017-12-05 13:28:20 +01:00
Patrick O'Carroll df5fd3cd1d fixed grey colors in light-theme, added new variables, played a bit with blue 2017-12-05 12:48:16 +01:00
Torkel Ödegaard 282d830ff4 v5: removed permissions from dashboard cog dropdown, closes #10068 2017-12-05 12:28:47 +01:00
Torkel Ödegaard 90bcec8178 nav: updated nav item id for manage dashboards 2017-12-05 12:25:59 +01:00
Torkel Ödegaard 90da964a14 refactoring PR #10068 2017-12-05 12:19:01 +01:00
Torkel Ödegaard cc2349f6aa Merge branch 'feat-10064' of https://github.com/alexanderzobnin/grafana into develop 2017-12-05 12:03:33 +01:00
Torkel Ödegaard 31bb2f8006 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-05 12:03:28 +01:00
Alexander Zobnin afc036492c dashboard: migrations for repeat rows (#10070) 2017-12-05 11:46:58 +01:00
David Kaltschmidt eb31833d52 Backwards-compat for multi-query table transform
* treat single-query table panels like they were before
* adjusted test cases
2017-12-05 11:25:10 +01:00
Alexander Zobnin deebaabfc8 graph: make legend scrollable 2017-12-05 13:07:33 +03:00
Torkel Ödegaard 6fae999f62 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-12-05 10:23:03 +01:00
bergquist 35232a77e6 removes unused properties
the dsType property caused some confusion about what datasource is
beeing used. I just removed it since it not beeing used.

closes #10072
2017-12-05 08:26:43 +01:00
David Kaltschmidt 1dd90c8105 Making the multi-query table transform the default table transform 2017-12-04 17:55:00 +01:00
Torkel Ödegaard 9be6f9734d ux: updated padding 2017-12-04 16:29:46 +01:00
Johannes Schill d5023d0073 Merge branch 'develop' of https://github.com/grafana/grafana into develop 2017-12-04 16:19:07 +01:00
Johannes Schill ba3a81aba5 ux: Add CTA for empty lists 2017-12-04 16:18:46 +01:00
Alexander Zobnin 4d7ff4de15 move import menu item to the original place 2017-12-04 18:00:22 +03:00
Alexander Zobnin 4403d919c1 move DashboardImportCtrl tests to jest 2017-12-04 16:51:37 +03:00
Alexander Zobnin 44ea0ff71d Move import dashboard from modal to the page 2017-12-04 15:55:37 +03:00
Torkel Ödegaard d29c695d44 refactor: minor refactoring of #10027 2017-12-04 13:38:38 +01:00
Torkel Ödegaard df693134bd Merge branch 'feat-10008' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-feat-10008 2017-12-04 13:23:38 +01:00
Patrick O'Carroll a16cfb4b3b Merge branch 'develop' into develop-light-theme 2017-12-04 13:17:19 +01:00
Patrick O'Carroll 5fb3ce1be7 new grays for light theme 2017-12-04 13:12:32 +01:00
Daniel Lee 66657d24b8 sidemenu: responsive sidemenu view for smallest breakpoint
For the smallest breakpoint, expands the sidemenu to be width 100% and
to be toggled on or off rather than visible all the time.
2017-12-04 12:37:00 +01:00
Carl Bergquist f327e7c818 Merge pull request #10055 from paulfantom/master
add Cloud Alchemy Ansible role
2017-12-04 11:26:34 +01:00
Torkel Ödegaard 15f46b8534 ux: tabs update 2017-12-03 16:22:59 +01:00
David Kaltschmidt b6867891f0 Tests for multi-query table transform 2017-12-03 14:32:02 +01:00
Torkel Ödegaard a47bf7dfd9 ux: updated modal header design 2017-12-03 08:11:07 +01:00
Torkel Ödegaard d7337432ac ux: progress on time picker dropdown version 2017-12-03 07:53:47 +01:00
Mitsuhiro Tanda e8a6af7b22 fix templating undefined error (#10004) 2017-12-02 17:21:21 +01:00
Torkel Ödegaard f7babd392b Merge branch 'develop' into develop-settings 2017-12-02 15:45:10 +01:00
Torkel Ödegaard a98b0024fc tweaks to add panel panels 2017-12-02 15:40:38 +01:00
Torkel Ödegaard dae5110db0 ux: updated dashboard nav 2017-12-02 15:35:59 +01:00
Torkel Ödegaard 1c27df97d6 ux: dashboard setings progres 2017-12-02 07:05:58 +01:00
paulfantom 3e94d80430 add Cloud Alchemy Ansible role 2017-12-01 21:26:14 +01:00
Torkel Ödegaard c8ead22722 started on dashboard settings refactor 2017-12-01 21:04:48 +01:00
Torkel Ödegaard e871e56522 ux: add new panel and dash nav improvements 2017-12-01 20:11:55 +01:00
David Kaltschmidt 85eb2aaa80 Added basic table transformer test 2017-12-01 19:03:47 +01:00
bergquist d6d64c53cd typo 💥 2017-12-01 16:23:55 +01:00
Carl Bergquist 89fb60a956 Merge pull request #10020 from jomenxiao/master
fix render http[get] params error
2017-12-01 16:22:47 +01:00
bergquist 9282182805 influxdb: pass tags to alerting from influxdb client
closes #10046
2017-12-01 16:16:49 +01:00
Torkel Ödegaard 126257845c ux: dashboard nav update 2017-12-01 15:58:12 +01:00
Torkel Ödegaard 289ba74ede ux: new dashnav design 2017-12-01 15:56:08 +01:00
bergquist 5e9f0771c5 ignore /conf/**/custom.yaml files 2017-12-01 15:49:54 +01:00
Alexander Zobnin 8593ca001d repeat row: refactor 2017-12-01 16:34:49 +03:00
Alexander Zobnin 8bd3d106a2 Fix dashboard menu overlapping (#10044)
* dashboard menu: fix overlap by singlestat and panel link icon

* refactor: navbar z-index

* hide grafana icon in solo panel mode
2017-12-01 14:31:55 +01:00
David Kaltschmidt 91e866f145 Add multiquery_table table transform
The current table transform renders only the first query.
This PR adds a new transform to render all query results in a JOIN-ish
semantic.

* new table transform: Multi-Query table
* columns is the union of all non-value fields
* one value column per query is added
* rows that share all the same label values are merged into one
2017-12-01 14:27:22 +01:00
bergquist 17bf87fb62 typo 💥 2017-12-01 14:05:47 +01:00
bergquist 7a497fd617 move systemd ready notification to server.go 2017-12-01 14:02:05 +01:00
bergquist 94446fb85c changelog: adds note about closing #10024 2017-12-01 13:54:31 +01:00
Torkel Ödegaard 68580f06a3 page header now on 99% of pages 2017-12-01 13:49:15 +01:00
Carl Bergquist 820abef82d Merge pull request #10025 from jgrassler/systemd-sdnotify
Use systemd notification where applicable
2017-12-01 13:26:13 +01:00
Torkel Ödegaard 6bff416430 navigation: more progress on new page header 2017-12-01 12:51:46 +01:00
Torkel Ödegaard e348ec8c3b Merge branch 'develop-new-page-header' into develop 2017-12-01 11:33:27 +01:00
Torkel Ödegaard 75bb894485 ux: new page-header design, most pages beside admin done 2017-12-01 11:32:00 +01:00
Torkel Ödegaard 92d9093fca fixed sass warnings 2017-12-01 10:48:55 +01:00
Torkel Ödegaard e53b55479a ux: made plugins page work 2017-12-01 10:47:21 +01:00
Johannes Grassler d28ca54129 Use systemd notification where applicable
With this change in place, the grafana service will signal
readiness to serve by writing "READY=1" to the path specified
through the NOTIFY_SOCKET environment variable. If this
environment variable is not present or empty, no notification
will happen. This notification is the standard systemd
mechanism for indicating a service is ready to serve. For
Grafana this may be a couple of seconds from startup due to
database migrations. This change also adjusts the Grafana
systemd service definition to make use of this feature.
2017-12-01 10:31:58 +01:00
Torkel Ödegaard 32ffb2d544 progress on page header 2017-12-01 10:27:05 +01:00
Trent White d29bf0816d tweaked color on heatmap. still not there, but more vibrant 2017-11-30 14:19:48 -05:00
Torkel Ödegaard 6f5a9bf768 ux: new page header progress 2017-11-30 17:28:24 +01:00
Torkel Ödegaard b1a2344be1 added bundled dashboards 2017-11-30 16:51:06 +01:00
Carl Bergquist 142c3a6bc2 Merge pull request #10042 from andrei-kolosok/master
grafana-10039: fix query time range ends in the past
2017-11-30 16:41:43 +01:00
Torkel Ödegaard b2add1977a ux: progress on new page header 2017-11-30 16:35:27 +01:00
Marcus Efraimsson d83692aa80 dashboard: when changing route, scroll to top 2017-11-30 15:59:53 +01:00
Andrei Kalasok 68d4211c50 grafana-10039: fix query time range ends in the past 2017-11-30 15:50:35 +01:00
Torkel Ödegaard 74ceb76ec0 ux: work on page header 2017-11-30 15:37:03 +01:00
Carl Bergquist 603725aeb0 Merge pull request #10041 from grafana/revert-9983-prometheus_nested
Revert "prometheus nested query support"
2017-11-30 15:06:16 +01:00
Carl Bergquist af5ced0e18 Revert "prometheus nested query support" 2017-11-30 15:06:02 +01:00
Carl Bergquist 98f0305e68 Merge pull request #9983 from mtanda/prometheus_nested
prometheus nested query support
2017-11-30 14:57:34 +01:00
Torkel Ödegaard 645f49eda4 ux: updating header design for pages 2017-11-30 11:31:38 +01:00
Marcus Efraimsson 1db9aeaac3 fix: when navigating, scroll to top 2017-11-30 10:50:10 +01:00
Alexander Zobnin 88760983ab repeat row: add more tests 2017-11-30 10:42:53 +03:00
Torkel Ödegaard 47f11c26c0 ux: new page header design 2017-11-30 08:18:23 +01:00
Trent White 66831fb0cd tweak background size 2017-11-29 16:43:06 -05:00
Trent White 583a4f5314 new test svg background, minor form tweaks 2017-11-29 16:41:48 -05:00
Torkel Ödegaard 3d2d789ca2 ux: search filter box 2017-11-29 17:15:27 +01:00
Torkel Ödegaard 8141987303 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-11-29 15:26:37 +01:00
Torkel Ödegaard c9be5c21ae ux: changed body default font size to 13px 2017-11-29 15:26:16 +01:00
Marcus Efraimsson 1e10fcad83 test: fix failing postgres test
Should use case insensitive matching when searching for users
2017-11-29 15:17:31 +01:00
Matt ce494fbedb Added border radius and tightened up the folder boxes. Still needs to have the bottom margin expanded to 8px when in opened state (this needs @torkelo) 2017-11-29 14:45:12 +01:00
Marcus Efraimsson c8ac6add16 test: speedup mysql and postgres integration tests by 10-20x
Use docker tmpfs mounts for mysql and postgres data volumes
2017-11-29 14:40:23 +01:00
Alexander Zobnin 36ef186587 repeat row: expose scopedVars to row panels 2017-11-29 16:40:13 +03:00
Torkel Ödegaard d981fe4f04 ux: search design update 2017-11-29 13:21:42 +01:00
Alexander Zobnin dd9c727e60 repeat row: handle collapsed rows 2017-11-29 14:14:43 +03:00
Daniel Lee 554c7ba96f notifier: Fixes path for uploaded image for Slack notifier
Fixes #10012
2017-11-29 11:16:45 +01:00
Daniel Lee e6bf266c4b formatting in build file 2017-11-29 11:15:27 +01:00
Alexander Zobnin 08d470d76a dashboard: initial repeat row implementation 2017-11-29 12:51:14 +03:00
Mitsuhiro Tanda 98bb8bf761 prometheus nested query support 2017-11-29 18:34:44 +09:00
jomenxiao 3f95180c98 fix render http[get] params error 2017-11-28 22:20:22 +08:00
bergquist c0e087640b test: close file before deleting 2017-11-28 15:05:53 +01:00
Carl Bergquist 2bc91c8660 Merge pull request #10013 from grafana/view-json-template
export view json now templatized, fixes #10001
2017-11-28 15:02:26 +01:00
Marcus Efraimsson 6c5748203d Restore Page Footer after migration to new scrollbar #9652 2017-11-28 14:17:53 +01:00
Patrick O'Carroll afd0fc3652 export view json now templatized, fixes #10001 2017-11-28 13:27:43 +01:00
Marcus Efraimsson a335150ad1 dashfolders: Add a helper for creating a dashboard folder 2017-11-28 12:51:40 +01:00
Marcus Efraimsson 82cd24491e dashfolders: revert automatic creation of folders for plugins 2017-11-28 12:51:40 +01:00
Patrick O'Carroll b19b68df08 styling changes for light theme 2017-11-28 11:27:29 +01:00
Alexander Zobnin 852218e834 grid: use single column layout for mobile devices (#9999) 2017-11-28 09:38:35 +01:00
Alexander Zobnin b97ad93be1 fix panel solo mode (#10002) 2017-11-28 09:38:28 +01:00
Marcus Efraimsson 8f4ad1e496 dashlist: handle recent dashboards removed from backend 2017-11-28 09:07:28 +01:00
Marcus Efraimsson 368a4d7aed dashfolders: don't create app folder on dashboard import if already exists 2017-11-27 18:23:57 +01:00
Daniel Lee 4356e980f0 dashfolders: create app folder on dashboard import 2017-11-27 17:08:39 +01:00
Daniel Lee 07cd182617 datasource: fix merge conflict - restore dashboards tab 2017-11-27 15:17:50 +01:00
Torkel Ödegaard 7f3a3b9e55 search fix and update buttons on dashboard list page 2017-11-27 14:49:31 +01:00
Torkel Ödegaard c38a64e4cc Merge remote-tracking branch 'origin/migrate-view-state' into develop 2017-11-27 13:37:12 +01:00
Torkel Ödegaard 734aa37434 fix: removed table background 2017-11-27 13:36:25 +01:00
Torkel Ödegaard fdb217c283 build: fixed lint issue 2017-11-27 13:19:33 +01:00
Patrick O'Carroll be74957a60 fixed link i specs-file 2017-11-27 12:29:20 +01:00
Alexander Zobnin 24fe3af20f Improve dashboard grid layout migration WIP (#9943)
* grid: fix small panels migration and make panel height closer to row height

* grid: migrate rows

* grid: increase min panel height

* grid: fix panel placement for complex layouts

* dashboard migration: refactor

* dashboard migration: add tests for grid layout

* dashboard: fix complex layout migration

* dashboard migration fix: fill current row if it possible

* test: fix karma tests by setting default panel span

* dashboard: fix migration when panel height more than row height

* dashboard: fix migration for collapsed rows

* grid: add all rows if even one collapsed or titled row is present
2017-11-27 12:22:52 +01:00
Torkel Ödegaard adfb87e811 Merge branch 'develop' into alexanderzobnin-feat-9932 2017-11-27 12:19:07 +01:00
Torkel Ödegaard df2d49da33 test fix 2017-11-27 12:16:40 +01:00
Torkel Ödegaard 0a1c8fdac4 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-11-27 12:15:58 +01:00
Torkel Ödegaard e98af1b3fa updated libs and fixed new typescript errors 2017-11-27 12:14:57 +01:00
Marcus Efraimsson 7ce766d9d4 dashlist: Support for clear all filters 2017-11-27 11:33:54 +01:00
Patrick O'Carroll e3f45546d1 migrated viewstatesrv to ts 2017-11-27 11:23:15 +01:00
Torkel Ödegaard 415526ce45 added yarn.lock file back 2017-11-27 11:14:07 +01:00
Torkel Ödegaard 517c454f8b Merge branch 'feat-9932' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-feat-9932 2017-11-27 09:50:01 +01:00
Carl Bergquist 4a2941dc90 Merge pull request #9981 from grafana/more-js-to-ts-migration
migrated four files from js to ts
2017-11-27 09:41:27 +01:00
Torkel Ödegaard ac17684f50 ux: table design work 2017-11-26 22:07:34 +01:00
Alexander Zobnin 0c7bf42dd6 panel: open panel menu by click on header 2017-11-24 21:44:47 +03:00
Torkel Ödegaard 00df24b348 ux: search progress 2017-11-24 16:54:55 +01:00
Torkel Ödegaard bc81298d4c worked on search 2017-11-24 16:18:56 +01:00
Patrick O'Carroll 015932fd02 migrated four files from js to ts 2017-11-24 13:38:54 +01:00
Patrick O'Carroll b752cfee1f migrated four files to ts, addd some code to config to make it work (#9980) 2017-11-24 12:59:36 +01:00
Torkel Ödegaard 93d21bec75 Merge branch 'master' into develop 2017-11-24 09:25:14 +01:00
Torkel Ödegaard 8ce05a7c24 Update NOTICE.md 2017-11-24 09:14:14 +01:00
Torkel Ödegaard 3ff362e446 Update LICENSE.md 2017-11-24 09:11:10 +01:00
Torkel Ödegaard 02e2d5da2b ux breadcrumb work 2017-11-23 21:50:20 +01:00
Torkel Ödegaard b3ddcc8077 ux: sass fixes and polish 2017-11-23 20:41:16 +01:00
Marcus Efraimsson d9ecb59dae dashlist: Support for check/uncheck all 2017-11-23 18:32:44 +01:00
Patrick O'Carroll 4ce1ee4120 Migrate gfunc to ts (#9973)
* migrated gfunc from js to ts

* deleted gfunc.js, small fixes in gfunc.ts
2017-11-23 17:05:27 +01:00
Patrick O'Carroll 3acf106303 migrated admin files to ts (#9975) 2017-11-23 17:05:08 +01:00
Patrick O'Carroll b94839574c migration of org files from js to ts (#9974)
* migration of org files from js to ts

* more migration of org files to ts

* minor fix to change_password

* renamed files
2017-11-23 17:04:50 +01:00
Torkel Ödegaard 99e52143df sass tweaks 2017-11-23 16:50:22 +01:00
Marcus Efraimsson 7ee57b774a dashlist: When searching should reset checked state to false 2017-11-23 14:59:52 +01:00
Patrick O'Carroll b7956ef499 More js to ts (#9966)
* four files js to ts, fixed ng_model_on_blur

* added /** @ngInject */
2017-11-23 14:53:23 +01:00
Carl Bergquist c3699d8259 Merge pull request #9952 from seuf/log_file_count_lines
Optimized number of lines fetching in log file initialisation
2017-11-23 14:22:50 +01:00
Daniel Lee 9ba9043d64 dashlist: change scrollbar to new perfect scroll directive 2017-11-23 13:31:35 +01:00
Marcus Efraimsson 5b05941dec docs: Improve delete snapshot documentation 2017-11-23 13:08:44 +01:00
Torkel Ödegaard 84c46f0cd3 ux: fixed sass issue 2017-11-23 13:01:19 +01:00
Torkel Ödegaard 2b1371c4b8 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-11-23 12:54:35 +01:00
Torkel Ödegaard 458f6fc4b2 sass refactoring and updating styles for list item elements 2017-11-23 12:54:12 +01:00
Daniel Lee 245cebedde dashlist: style list to be same as dash search 2017-11-23 11:53:55 +01:00
Torkel Ödegaard a1d47d36f6 css tweaks and cleanup 2017-11-23 11:37:59 +01:00
Torkel Ödegaard d9a913afe1 Merge branch 'develop-scrollable-panels' into develop 2017-11-23 11:13:21 +01:00
Torkel Ödegaard f18f1a1093 removing gemini scrollbar and replacing with perfect scrollbar, muuuch better 2017-11-23 11:12:32 +01:00
Torkel Ödegaard 856a0393ab Merge branch 'develop' into develop-scrollable-panels 2017-11-23 10:27:16 +01:00
Daniel Lee 41a3431c4e dashlist: starred filter search 2017-11-22 18:44:57 +01:00
Torkel Ödegaard 2d2015d3dd ux: tweaked panel color and dashboard background is same as page background 2017-11-22 17:18:04 +01:00
Torkel Ödegaard c94331cd20 Merge branch 'develop' into develop-color-tweaks 2017-11-22 14:54:57 +01:00
Torkel Ödegaard b7a8db4937 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-11-22 14:51:53 +01:00
Torkel Ödegaard 905553052a removed call to unused function in panel_ctrl 2017-11-22 14:47:26 +01:00
Torkel Ödegaard 85e81959f2 scrollable panels works better with perfect-scrollbar 2017-11-22 14:46:17 +01:00
Torkel Ödegaard 5ab72f48fc Update latest.json 2017-11-22 14:44:18 +01:00
THIERRY SALLE 658109e0d6 Optimized number of lines fetching in log file initialisation
Added unit tests for file logging line counting

Remove file after unit test
2017-11-22 14:25:39 +01:00
Torkel Ödegaard 68bd17bd0e work on scrollable panels 2017-11-22 13:32:54 +01:00
Carl Bergquist d8d44224f5 Merge pull request #9950 from seuf/es_56_max_concurrent_shards_request
Elasticsearch max_concurrent_shard_requests parameter for es 5.6+
2017-11-22 10:49:46 +01:00
Patrick O'Carroll 27e486d678 converted 3 .js files to .ts (#9958)
* converted files from .js to .ts
2017-11-22 10:11:50 +01:00
bergquist ca940c2ae5 docs: adds docs for pausing all alerts 2017-11-22 09:31:23 +01:00
Daniel Lee 400bd205a8 Removing file that got committed by accident 2017-11-22 09:30:49 +01:00
Alexander Zobnin 18ca7a53aa scrollable panels: fix initial content size (#9960) 2017-11-22 07:05:33 +01:00
Matt Toback 3f2a510568 Delete LICENSE.txt 2017-11-21 17:16:35 -05:00
Carl Bergquist 79e788e46f Merge pull request #9937 from saady/gcs-path
[GCS] Support for gcs path
2017-11-21 19:46:53 +01:00
Daniel Lee ba511f3e24 dashlist: adds tag filter select (GitHub style) 2017-11-21 18:53:49 +01:00
saady 767b460ff1 [GCS] Support for gcs path 2017-11-21 17:22:40 +00:00
Daniel Lee 121d48ec26 dashlist: toggle folders 2017-11-21 17:06:30 +01:00
Daniel Lee 3dc2e06a33 dashboard: fix test for folderIds 2017-11-21 16:41:08 +01:00
Torkel Ödegaard 9fc22e5a66 Merge branch 'master' of github.com:grafana/grafana into develop 2017-11-21 16:05:18 +01:00
bergquist 3a772c7f7f allows head requests for /api/health endpoint
closes #9955
2017-11-21 15:03:04 +01:00
Daniel Lee bd2b26e9f5 dashlist: fix tag filtering and some css 2017-11-21 14:47:19 +01:00
Torkel Ödegaard 43a6a65f8b fix: fixed issue with metric segment introduced in graphite tags query editor PR 2017-11-21 14:39:09 +01:00
Torkel Ödegaard 830c307bba progress on scrollable panels work 2017-11-21 14:30:33 +01:00
Daniel Lee 5dd9582520 mysql: add data source support for Azure MySql
Fixes #9649
2017-11-21 13:21:19 +01:00
Torkel Ödegaard 741e5a38bd Merge branch 'feat-9887' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-feat-9887 2017-11-21 11:55:07 +01:00
Torkel Ödegaard ccbdb29f07 fixed unit tests 2017-11-21 11:53:56 +01:00
Torkel Ödegaard 0d12b37dfd fix: alert list panel now works correctly after adding manual annotation on dashboard, fixes #9951 2017-11-21 11:28:17 +01:00
THIERRY SALLE bd4d665d54 Elasticsearch max_concurrent_shard_requests parameter for es 5.6+ 2017-11-21 10:56:34 +01:00
bergquist 14b8bd35ed Merge branch 'Fresh-Tracks-add-p8s-2-db' 2017-11-21 10:12:33 +01:00
bergquist 0390b4187b prom: add prom2 dashboard as bundled dashboard 2017-11-21 10:12:24 +01:00
Cody Boggs 999b1211b6 show top 5 max scrape durations by job, and fix legend format 2017-11-21 10:12:24 +01:00
Cody Boggs 9151a2468d fix scrape duration, add rule eval iteration stats, and reorg a bit 2017-11-21 10:12:24 +01:00
Cody Boggs 29de4e7c53 fix data source var and remove node_exporter dependency 2017-11-21 10:12:24 +01:00
Cody Boggs d5ef0403af First draft of a Prometheus 2.0 Stats dashboard 2017-11-21 10:12:24 +01:00
bergquist d7321cd89c prom: initial docker block for prometheus 2 2017-11-21 09:55:42 +01:00
Carl Bergquist c83975f2e1 Merge pull request #9936 from grafana/js-to-ts-migration
Js to ts migration
2017-11-21 09:21:22 +01:00
Trent White 56118b9fa4 tweak tabs: 2017-11-20 13:59:21 -05:00
Trent White 8fe8a62645 color fix 2017-11-20 13:31:04 -05:00
Trent White ec49dd9231 make grays cooler 2017-11-20 13:27:20 -05:00
Daniel Lee 8daff73ba2 dashlist: started fixing js/css after design changes 2017-11-20 18:15:59 +01:00
Torkel Ödegaard afa226bec3 updated search 2017-11-20 16:31:23 +01:00
Torkel Ödegaard a8552bac21 more work on search 2017-11-20 16:21:50 +01:00
Torkel Ödegaard c1539b90b7 minor update to dashboard search 2017-11-20 15:46:16 +01:00
Patrick O'Carroll 25f63e0581 converted test-files to jest 2017-11-20 15:25:42 +01:00
Torkel Ödegaard 9ace21b689 improved search srv 2017-11-20 15:11:32 +01:00
Patrick O'Carroll 59cebca4b2 converted influx-series to TS, converted test to jest 2017-11-20 14:31:51 +01:00
Alexander Zobnin 10e3b63ddb Merge remote-tracking branch 'upstream/develop' into feat-9887 2017-11-20 15:51:49 +03:00
Torkel Ödegaard 6c5e19c1e0 dashboard search 2017-11-20 13:37:26 +01:00
Torkel Ödegaard fc1d8416a7 working on dashboard search 2017-11-20 12:47:03 +01:00
Ryan McKinley b1de1e6f26 Move the loading flag to PanelCtrl (#9929) 2017-11-20 11:27:18 +01:00
Alexander Zobnin f54547776d graph: disable zoom in non-timeseries modes (#9914) 2017-11-20 10:06:34 +01:00
Patrick O'Carroll 66e4297816 changed padding to pixels, fixes #9916 (#9924) 2017-11-20 10:05:18 +01:00
Maytee Chinavanichkit c1e5f5be87 Use correct moments format for Showing last us time instead of value test (#9923)
Fixes this issue:
PhantomJS 2.1.1 (Mac OS X 0.0.0) SingleStatCtrl showing last us time
instead of value should set formatted value FAILED
	expected '09/17/2017 4:56:37 pm' to equal '09/17/2017 16:56:37 pm'
2017-11-20 10:00:56 +01:00
Carl Bergquist 3351f959d0 Merge pull request #9913 from tomwilkie/dashboard-json-configmaps
Don't import JSON dashboards from hidden directories.
2017-11-20 08:31:05 +01:00
Tom Wilkie 0015183a7b Don't import JSON dashboards from hidden directories. 2017-11-17 17:21:49 +00:00
Patrick O'Carroll 5356605e1a new design for login 2017-11-17 16:42:56 +01:00
Torkel Ödegaard 0fe4229023 Merge branch 'develop' into develop-search 2017-11-17 16:37:09 +01:00
Torkel Ödegaard 8160e68f93 fix: build & tests 2017-11-17 16:18:30 +01:00
Torkel Ödegaard 7b17d134fc Merge branch 'develop' of github.com:grafana/grafana into develop 2017-11-17 15:49:47 +01:00
Torkel Ödegaard 0e44fe082b Merge branch 'master' into develop 2017-11-17 15:49:17 +01:00
Daniel Lee 7c74111187 search: add expanded folders 2017-11-17 15:30:21 +01:00
Torkel Ödegaard 6595be95eb influxdb: another minor refactor of #9474 2017-11-17 15:23:45 +01:00
Torkel Ödegaard 37409163b9 refactor: refactoring InfluxDB query builder with policy PR #9473 2017-11-17 15:16:36 +01:00
Torkel Ödegaard bcb52417db refactor: refactoring InfluxDB query builder with policy PR #9473 2017-11-17 15:16:04 +01:00
Torkel Ödegaard 4b76c6d652 Merge branch 'master' of https://github.com/omki2005/grafana into omki2005-master 2017-11-17 14:57:44 +01:00
Torkel Ödegaard 153a9bf43a docs: added versions_to_keep to config docs, #9671 2017-11-17 14:53:08 +01:00
Torkel Ödegaard 36c9b7df53 Update CHANGELOG.md 2017-11-17 14:45:38 +01:00
Torkel Ödegaard 98b4074c16 refactoring: minor refactor of clean up dashboard history PR #9882 2017-11-17 14:41:44 +01:00
Torkel Ödegaard aaa465a100 Merge branch 'feat-9671' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-feat-9671 2017-11-17 14:16:49 +01:00
Torkel Ödegaard 908be13c03 Update CHANGELOG.md 2017-11-17 13:26:36 +01:00
Torkel Ödegaard b481ff27b2 Update CHANGELOG.md 2017-11-17 13:22:49 +01:00
Torkel Ödegaard 303e3de488 fix: fix for avatar images when gzip is turned on, fixes #5952 2017-11-17 13:13:58 +01:00
Torkel Ödegaard 7ccc8ae298 elasticsearch: default version to 5.x 2017-11-17 12:23:40 +01:00
Torkel Ödegaard f591bea696 Merge branch 'graphite-series-by-tags' 2017-11-17 12:15:21 +01:00
Alexander Zobnin 490b8fc50f panels: add css tweaks for scrollable panels 2017-11-17 12:13:56 +03:00
Alexander Zobnin a55be07ea5 dashboard history clean up: avoid potential SQL injections 2017-11-17 10:51:50 +03:00
Daniel Lee f47673ab5c search: refactor search sql into a builder class 2017-11-17 00:16:33 +01:00
bergquist fe42f81441 changelog: note about closing #9798 2017-11-16 16:55:02 +01:00
bergquist 0f69e06fcf removes invalid comment 2017-11-16 16:55:02 +01:00
Carl Bergquist 03c23dd9c1 Merge pull request #9901 from grafana/fix_annotations_api
fix: return id from api when creating new annotation, fixes #9798
2017-11-16 16:51:41 +01:00
Marcus Efraimsson 909601d6ab api: fix so that datasources functions returns Response 2017-11-16 16:29:05 +01:00
bergquist dcffcbb6d3 changelog: note about closing #1789 2017-11-16 16:21:14 +01:00
Torkel Ödegaard 26577ab600 Merge branch 'master' into graphite-series-by-tags 2017-11-16 16:20:44 +01:00
Marcus Efraimsson 89b27b35ba fix: Use Response as return type 2017-11-16 16:19:01 +01:00
Marcus Efraimsson 540d540ea9 fix: return id from api when creating new annotation/graphite annotation, fixes #9798
When creating a region annotation the response will include both
id (region start id) and endId (region end id), if not only id.
2017-11-16 16:19:01 +01:00
Carl Bergquist 9ea5af578e Merge pull request #9504 from grafana/datasource_as_cfg
Datasources as configuration
2017-11-16 16:13:02 +01:00
bergquist c60915c146 datasources as cfg: adds docs for all jsondata and secure_json fields 2017-11-16 14:22:52 +01:00
Torkel Ödegaard 3ae0cfa1d0 graphite: minor changes 2017-11-16 14:16:37 +01:00
Alexander Zobnin 126f3703dc text panel: make scrollable 2017-11-16 15:43:04 +03:00
Alexander Zobnin 4b88cc0226 panels: general property which makes panel scrollable 2017-11-16 15:38:52 +03:00
bergquist 87983021e2 datasources as cfg: convert yaml map into json for jsonData 2017-11-16 13:23:42 +01:00
Torkel Ödegaard 119f5427af fix: fix cloudwatch metricFindQuery error that stopped it working completely, fixes #9876 2017-11-16 13:06:24 +01:00
Alexander Zobnin fd046428b4 dashlist: css adjustments for scrollbar 2017-11-16 14:41:42 +03:00
Alexander Zobnin e89e64e94e dashlist: fix resizing after mode switching 2017-11-16 14:40:09 +03:00
Alexander Zobnin 7d8b2cb05f dashlist: add scrollbar 2017-11-16 14:11:01 +03:00
Alexander Zobnin 06622088a1 dashlist: fix panel resizing 2017-11-16 14:10:28 +03:00
bergquist 5b674ce29c docs: release 4.6.2 2017-11-16 11:22:09 +01:00
bergquist bfd8afaf13 docs: update metrics api path 2017-11-16 09:38:37 +01:00
bergquist e15fed10e2 changelog: adds note about closing #1871 2017-11-15 15:04:29 +01:00
Patrick O'Carroll d800e64368 fixes: #1871 Dropdown starred (#9490)
adding the ability to star dashboard in search and dashboard-list

closes #1871
2017-11-15 15:01:44 +01:00
Sven Klemm 26ab25b7c0 dont loose subsecond precision when dealing with timestamp or (#9851)
timestamptz
2017-11-15 14:50:32 +01:00
Torkel Ödegaard 3b18adfe1a graphite: progress on new query editor 2017-11-15 14:35:22 +01:00
bergquist 6267ef1391 datasource as cfg: fixes typos 2017-11-15 14:30:32 +01:00
bergquist 6e82dbafbc docs: format cfg mgt tools as table 2017-11-15 14:30:32 +01:00
bergquist 29dff8b6cd docs: adds more info about provisioning 2017-11-15 14:30:32 +01:00
bergquist b4a89128b6 datasource as cfg: update docs to include globbig 2017-11-15 14:30:32 +01:00
bergquist 06a37d0023 datasource as cfg: show deletes first in example 2017-11-15 14:30:32 +01:00
bergquist ebbfc529e0 datasource as cfg: support globbing 2017-11-15 14:30:32 +01:00
bergquist 0f136a940c datasource as cfg: enable editable ds's 2017-11-15 14:30:32 +01:00
bergquist b72cdae563 datasource as cfg: add org_id to example config 2017-11-15 14:30:32 +01:00
Dan Cech 0b6b5bac30 tweak docs 2017-11-15 14:30:32 +01:00
bergquist 36676e23c1 datasource as cfg: adds readonly datasources 2017-11-15 14:30:32 +01:00
bergquist c6a6ae261f datasource as cfg: refactor to use bus 2017-11-15 14:30:32 +01:00
bergquist dc002abe4c datasource as cfg: test for reading all properties 2017-11-15 14:30:32 +01:00
bergquist 5d49846e1d datasource as cfg: adds provisioning docs 2017-11-15 14:30:32 +01:00
bergquist 665df676a5 datasource as cfg: rename feature to provisioning 2017-11-15 14:30:32 +01:00
bergquist c9bfa781fd datasource as cfg: improve name for this feature 2017-11-15 14:30:32 +01:00
bergquist ba4bbd1d47 datasource as cfg: refactor tests to use yaml files 2017-11-15 14:30:32 +01:00
bergquist 3f0eb52389 datasource as cfg: ignore datasource all ready exist for inserts 2017-11-15 14:30:32 +01:00
bergquist 5910411845 datasource as cfg: add support for securedata field 2017-11-15 14:30:32 +01:00
bergquist 930da63173 datasource as cfg: setting for purging datasources not in cfg 2017-11-15 14:30:32 +01:00
bergquist 0f29b8ac83 datasources as cfg: tests for insert/updating datasources 2017-11-15 14:30:32 +01:00
bergquist 39b6c04643 datasource as cfg: basic implementation 2017-11-15 14:30:32 +01:00
Bruno Binet 014f6d5a75 More energy units (#9743)
* Add mA, mV, mW energy units

* Update case to be consistent with other energy units
2017-11-15 14:23:42 +01:00
Ryan McKinley 41be15ee4e Add feet to the length menu (#9889) 2017-11-15 14:06:17 +01:00
Daniel Lee 0d85c63fff middleware: recovery handles panics in all handlers
Also, changes the order of the middleware so that recovery is after the
gzip middleware. Otherwise, a 200 OK is returned instead of a 500 error.
2017-11-15 13:57:33 +01:00
Daniel Lee b2fbb2691b sql: small fix to error handling 2017-11-15 13:57:33 +01:00
Torkel Ödegaard acede1d5f9 graphite: progress on new query editor 2017-11-15 13:45:51 +01:00
bergquist 4301463c82 changelog: make prom fixes more explicit 2017-11-15 11:42:53 +01:00
Alexander Zobnin 59d89e422b dashboard history clean up: add tests 2017-11-15 13:38:44 +03:00
Alexander Zobnin d4e2f850b8 tech: ignore debug.test file created by VS Code 2017-11-15 13:37:45 +03:00
Alexander Zobnin a0a1f4aacd dashboard history: refactor after review 2017-11-15 13:36:36 +03:00
bergquist 7834eca394 changelog: adds note about closing #9777 2017-11-15 11:27:11 +01:00
Carl Bergquist 5d6ed6c45f prom: add support for default step param (#9866)
Alerting for prometheus have been depending on the step parameter from each query.
In https://github.com/grafana/grafana/pull/9226 we changed the behavior for step in the
frontend which caused problems for alerting. This commit fixes that by introducing a default
min interval value so alerting always have something to depend on. 

closes #9777
2017-11-15 11:22:00 +01:00
Torkel Ödegaard b5b93a68fc Merge branch 'master' into graphite-series-by-tags 2017-11-15 11:12:11 +01:00
Sven Klemm 9e6a7dcb90 properly escape components of connection string (#9850) 2017-11-15 10:55:08 +01:00
Torkel Ödegaard af9941e50a Merge branch 'graphite-seriesbytag' of https://github.com/alexanderzobnin/grafana into graphite-series-by-tags 2017-11-15 10:51:05 +01:00
Torkel Ödegaard 1a3170373a Merge branch 'alertList-notOK' 2017-11-15 10:48:20 +01:00
Torkel Ödegaard ba8c02f594 refactor: changed string slicing to strings.TrimPrefix, #9862 2017-11-15 10:48:03 +01:00
Alexander Zobnin 08e2bbef83 dashboard history: clean up dashboard version history 2017-11-14 18:22:18 +03:00
Torkel Ödegaard a534ac4948 build: fixed jshint error 2017-11-14 12:42:45 +01:00
Sven Klemm 108f582ec4 sync documentation, add remark about to_timestamp and redshift (#9841) 2017-11-14 11:33:55 +01:00
Torkel Ödegaard b1a6c7814d Update CHANGELOG.md 2017-11-14 11:30:39 +01:00
Torkel Ödegaard 6a976a3f48 Merge branch 'master' of github.com:grafana/grafana 2017-11-14 11:27:57 +01:00
Torkel Ödegaard 012b72cdbf fix: Html escaping caused issue in InfluxDB query editor, could not pick greater than or less then operators, fixes #9871 2017-11-14 11:27:36 +01:00
bergquist 9fc7303ddf changelog: adds note about closing #8523 2017-11-14 11:14:27 +01:00
bergquist 0e67d5e327 Merge branch 'anthu-master' 2017-11-14 11:05:09 +01:00
bergquist 3bb704144d teams: removes print statement 2017-11-14 11:05:01 +01:00
Anton Huck fd2451823b Add Microsoft Teams notifier 2017-11-14 11:05:01 +01:00
Daniel Lee 6d7eacfa81 docs: update building from source doc with node-gyp
Adds dependencies for node-gyp to the building from source
docs page. ref #9861
2017-11-13 23:42:05 +01:00
Torkel Ödegaard 81102ccee1 Update CHANGELOG.md 2017-11-13 16:41:02 +01:00
Alexander Zobnin e7f3480803 heatmap: fix tooltip in "Time series bucket" mode, #9332 (#9867) 2017-11-13 15:20:12 +01:00
Marcus Efraimsson ecbe7d06a6 fix: Table panel now renders annotations correctly. Fixes #9842 (#9868) 2017-11-13 15:18:39 +01:00
Daniel Lee ac8b20a60c Merge branch 'windows_build_9790' 2017-11-13 14:20:18 +01:00
Daniel Lee b51b681400 build: fixes build and jest tests on Windows
Fixes #9790
2017-11-13 13:48:48 +01:00
Torkel Ödegaard 9073587705 Update CHANGELOG.md 2017-11-13 13:11:30 +01:00
Mitsuhiro Tanda 52e1c4113b fix cloudwatch ec2_instance_attribute (#9718)
* fix cloudwatch ec2_instance_attribute

* add test

* minor fix
2017-11-13 13:07:46 +01:00
Torkel Ödegaard 685ee393af graph: the stack & legend sort sync was not working correctly, the z-index sorting that happened in after the legend sort order was applied and messed with the order even though the sort function returned zero for all entries, combined the sort function to one sort function, fixes #9789 (#9797) 2017-11-13 12:09:26 +01:00
Patrick O'Carroll 9ad186bcc9 not ok option to alert list, fixes: #9754 2017-11-13 10:30:11 +01:00
Carl Bergquist c44f6e2ec2 Merge pull request #9854 from drenalin23/drenalin-add-networkelb-cloudwatch
Add AWS/NetworkELB to cloudwatch definitions
2017-11-13 07:50:45 +01:00
bergquist ba18a5866c changelog: note about closing #9661 2017-11-13 07:47:14 +01:00
Carl Bergquist c30947df61 Merge pull request #9855 from mtanda/cw_inspector
(cloudwatch) fix query inspector
2017-11-13 07:43:21 +01:00
Carl Bergquist 6a485f3016 Merge pull request #9856 from mtanda/cw_null_for_no_datapoint
(cloudwatch) return empty array for no datapoints
2017-11-13 07:41:08 +01:00
Mitsuhiro Tanda 6488ccd113 return empty array for no datapoints 2017-11-12 00:48:54 +09:00
Mitsuhiro Tanda ae4bcdd54b fix query inspector for cloudwatch 2017-11-12 00:41:14 +09:00
Scott Nelson Windels 343143e95f Add AWS/NetworkELB to cloudwatch definitions 2017-11-10 15:13:09 -08:00
bergquist 5e11f1a2a1 changelog: note about closing #9784 2017-11-09 18:13:23 +01:00
Carl Bergquist 48d77ea2a8 Merge pull request #9785 from certusoft/mysql_performance
MySQL Performance when using GF_DATABASE_URL
2017-11-09 18:07:22 +01:00
Carl Bergquist 56fe1308ce Merge pull request #9826 from agnivade/hexencoding
Use hex.EncodeToString to encode to hex
2017-11-09 17:58:35 +01:00
bergquist d4e8e22fda test: adds tests for password encodiing 2017-11-09 17:55:12 +01:00
Dan Cech 5b38c230db use SHOW RETENTIONS to test influxdb connection (#9824) 2017-11-08 20:33:15 +01:00
Agniva De Sarker 143b56b5ac Use hex.EncodeToString to encode to hex
Using the EncodeToString function from the encoding/hex package
is much faster than calling the fmt.Sprintf with %x

Benchmark results below with the following code

func BenchmarkHexPrint(b *testing.B) {
  data := []byte("hellothere")
  for n := 0; n < b.N; n++ {
    // _ = fmt.Sprintf("%x", data)
    _ = hex.EncodeToString(data)
  }
}

name        old time/op    new time/op    delta
HexPrint-4     188ns ± 1%      99ns ± 1%  -47.40%  (p=0.008 n=5+5)

name        old alloc/op   new alloc/op   delta
HexPrint-4     64.0B ± 0%     64.0B ± 0%     ~     (all equal)

name        old allocs/op  new allocs/op  delta
HexPrint-4      2.00 ± 0%      2.00 ± 0%     ~     (all equal)
2017-11-08 22:44:31 +05:30
Seuf b3a53b8c56 Added missing documentation for auth.proxy (#9796) 2017-11-08 11:03:18 +01:00
Mitsuhiro Tanda e46814ba05 fix date test (#9811) 2017-11-08 11:01:19 +01:00
Daniel Lee 799aaf720a docker: expose statsd endpoint for graphite block 2017-11-07 15:14:39 +01:00
Sven Klemm f8698dc49b update lib/pq (#9788) 2017-11-06 19:51:49 +01:00
Furtchet a51b1e8951 Update the config key to database_log_queries so it is more descriptive, as suggested in #9785. 2017-11-06 08:01:31 -06:00
Carl Bergquist b65ea57f97 Merge pull request #9787 from nadezhdamosunova/patch-2
Update postgres.md
2017-11-06 07:59:44 +01:00
Alexander Zobnin f5c5c4b88b graph: don't change original series name in histogram mode, #8886 (#9782) 2017-11-04 08:09:41 +01:00
Furtchet 5fdfa3ff7e MySQL Performance when using GF_DATABASE_URL
Set MaxIdleConn and MaxOpenConn when using the GF_DATABASE_URL configuration. Also added GF_DATABASE_DEBUG flag to print SQL statements and SQL execution times.
See #9784 for the details.
2017-11-03 14:05:32 -05:00
Nadezhda Mosunova 5b1e6513e6 Update postgres.md
'Annotations' is a plural noun, so it doesn't require adding ‑s to the end of the verb
2017-11-03 17:57:03 +03:00
Torkel Ödegaard b8f9edaea3 Update CHANGELOG.md 2017-11-03 13:40:55 +01:00
Alexander Zobnin a3bf38cc21 colorpicker: fix color string change #9769 (#9780) 2017-11-03 13:29:00 +01:00
Torkel Ödegaard f18de7e6a0 Merge branch 'alertList-no-alerts' 2017-11-03 10:17:07 +01:00
Torkel Ödegaard cd95f5bcc2 refactor: alert list panel fixes and no alerts message, rewrite of PR #9721 2017-11-03 10:16:25 +01:00
Torkel Ödegaard 72783785a8 Merge branch 'disable-timepicker' 2017-11-03 09:14:00 +01:00
Torkel Ödegaard bf82d166bc feat: refactoring hide time picker PR #9756 2017-11-03 09:13:40 +01:00
Torkel Ödegaard c1fcfdb536 search: began writing test for new search 2017-11-02 16:54:33 +01:00
Torkel Ödegaard 27acaf3830 Merge branch 'develop-search' of github.com:grafana/grafana into develop-search 2017-11-02 16:36:54 +01:00
Torkel Ödegaard 564b74cb7b Merge branch 'develop' into develop-search 2017-11-02 16:00:50 +01:00
Torkel Ödegaard 10fcf2f5be Merge branch 'master' into develop 2017-11-02 15:56:09 +01:00
Patrick O'Carroll a433698ddf changed class name for no-alerts 2017-11-02 08:44:09 +01:00
Carl Bergquist bf85735a36 Merge pull request #9765 from RatnadeepSimhadri/patch-1
chore(docs): update the search Query Example
2017-11-02 07:50:08 +01:00
Carl Bergquist 17492c091a Merge pull request #9752 from mtanda/cw_alias_fix
[bug fix] (cloudwatch) fix default alias format
2017-11-02 07:45:26 +01:00
Ratna Deep Simhadri 538a8cff1e chore(docs): update the search Query Example
- Updated the last  Search Dashboards Example , so that the Example Request and Response seem related
2017-11-01 23:04:51 -07:00
Torkel Ödegaard f4d0e2caee ux: search progress 2017-11-01 20:26:14 +01:00
Daniel Lee 84b277d5c0 dashfolders: fix for dashlist nav 2017-11-01 20:12:32 +01:00
bergquist 6292d7c204 reduce docker-compose header version 2017-11-01 19:28:28 +01:00
Torkel Ödegaard b9d6c97147 ux: progress on new search 2017-11-01 16:59:20 +01:00
Torkel Ödegaard 97cc454ded ux: minor changes 2017-11-01 14:23:46 +01:00
Carl Bergquist c783bdac39 Merge pull request #9753 from mtanda/cw_period
(cloudwatch) add period alias
2017-11-01 14:02:41 +01:00
bergquist 8b10fe1abc ignore docker-compose.yaml 2017-11-01 13:43:39 +01:00
bergquist 4dae217afc docs: update latest release to 4.6.1 2017-11-01 13:31:10 +01:00
bergquist d5d42c046d packages: update published package version 2017-11-01 12:54:35 +01:00
Patrick O'Carroll 63c79f066a option to hide Time picker, fixes #2013 2017-11-01 12:26:45 +01:00
Torkel Ödegaard 894951c7d4 fix: panel view now wraps, no scrolling required, fixes #9746 2017-11-01 11:24:26 +01:00
bergquist 575f746baa changelog: set release date for 4.6.1 2017-11-01 11:03:10 +01:00
bergquist d854abccad changelog: adds note about closing #9707 2017-11-01 11:00:47 +01:00
Torkel Ödegaard f46b7560e8 Update CHANGELOG.md 2017-11-01 10:50:24 +01:00
Mitsuhiro Tanda 4a63d696ff fix default alias 2017-11-01 18:48:30 +09:00
Mitsuhiro Tanda ebcb8be19a add period alias 2017-11-01 18:47:21 +09:00
Torkel Ödegaard e19b4a9291 plugins: fix for loading external plugins behind auth proxy, fixes #9509 2017-11-01 10:45:20 +01:00
Torkel Ödegaard c3bd07f9b4 testdata: added manual entry mode to test data 2017-11-01 09:59:24 +01:00
Patrick O'Carroll 5a26fc252e new design for no alerts in alert-list, fixes #9721 2017-11-01 09:44:51 +01:00
Torkel Ödegaard fec37f22b8 fix: fixed compiler error from #9676 2017-11-01 08:08:16 +01:00
Patrick O'Carroll c8f7361e3f converted ng_model_on_blur.js to ts, deletedkeyboard_manager.js (#9676) 2017-11-01 07:51:40 +01:00
Daniel Lee 624b75b58c docs: update testdata enable explanantion 2017-10-31 18:25:35 +01:00
Carl Bergquist d4f40eac6f Merge pull request #9745 from cglewis/master
MAINTAINER is deprecated, now using LABEL
2017-10-31 18:24:34 +01:00
cglewis f5d2ce2a72 MAINTAINER is deprecated, now using LABEL 2017-10-31 10:21:20 -07:00
Charlie Lewis dbc0ff9739 Merge pull request #1 from grafana/master
sync
2017-10-31 10:19:28 -07:00
Torkel Ödegaard 84b10df887 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-31 16:14:40 +01:00
Torkel Ödegaard ae367db377 Update ROADMAP.md 2017-10-31 16:07:45 +01:00
Carl Bergquist 8ed1d935df Merge pull request #9741 from akshaychhajed/docker-compose-v3
Transitioning fig to docker-compose v3
2017-10-31 15:23:59 +01:00
Ryan McKinley a1c1704d1f Adding energy, area, and acceleration units (#9336)
* Adding more units

* move changes to kbn.ts

* remove accidental commits
2017-10-31 14:57:57 +01:00
Torkel Ödegaard 9d020ea1e2 Merge branch 'master' of github.com:grafana/grafana 2017-10-31 14:30:26 +01:00
Torkel Ödegaard 7f83460f42 tests: migrated tests for link_srv to jest, #9666 2017-10-31 14:30:06 +01:00
Torkel Ödegaard 9aa6a6b4c4 Merge branch 'linkSrv-js-to-ts' 2017-10-31 14:29:42 +01:00
Akshay Chhajed 38ec8ddefc Transitioning fig to docker-compose v3 2017-10-31 18:59:27 +05:30
Torkel Ödegaard ec94dfa890 tests: migrated tests for link_srv to jest, #9666 2017-10-31 14:29:25 +01:00
Patrick O'Carroll 1206ce261c fix for dashboard tag link bug, fixes #9737 (#9739) 2017-10-31 14:29:10 +01:00
bergquist ae5b3fd4b5 github: dont require bug/fr in title 2017-10-31 14:14:50 +01:00
bergquist 3c572aece6 changelog: adds note about closing #9713 2017-10-31 14:11:13 +01:00
Patrick O'Carroll c3a9a04dad converted confirm_click.js to .ts (#9674)
* converted confirm_click.js to .ts

* deleted confirm_click.ts

* removed import of confirm_click
2017-10-31 13:58:38 +01:00
Torkel Ödegaard afd4f37f39 Update codecov.yml 2017-10-31 13:58:01 +01:00
Torkel Ödegaard 7336a98bb1 Update CHANGELOG.md 2017-10-31 13:56:00 +01:00
Sven Klemm a503c1d39c change default sslmode for postgres to verify-full (#9736) 2017-10-31 13:55:32 +01:00
Alexander Zobnin 948a5259a2 fix: color picker bug at series overrides page, #9715 (#9738) 2017-10-31 13:53:45 +01:00
Torkel Ödegaard 497993e2b2 Update ROADMAP.md 2017-10-31 13:04:10 +01:00
bergquist 1be476b5f5 tech: switch to golang 1.9.2 2017-10-31 12:36:52 +01:00
Sven Klemm b6fafb13f5 always quote template variables for mysql when multi-value is allowed (#9712)
* always quote template variables for mysql when multi-value is allowed

* handle include all option similar to multi value

* declare type

* adjust tests to quoting change

* dont specify type but let it be inferred

* fix test for variable with includeAll
2017-10-31 12:23:50 +01:00
Sven Klemm caa8b6100e always quote template variables for postgres when multi-value or include (#9714)
all is allowed
2017-10-31 12:23:21 +01:00
Torkel Ödegaard ae11bf7c14 fix: dashboard links dropdown toggle did not update view, fixes #9732 2017-10-31 09:22:45 +01:00
Torkel Ödegaard 3ff2dc2850 Merge branch 'master' of github.com:grafana/grafana 2017-10-31 09:17:44 +01:00
bergquist d23c77119e docs: adds prom grafana dashboard 2017-10-31 09:13:35 +01:00
Torkel Ödegaard 8838e43088 Merge branch 'master' of github.com:grafana/grafana 2017-10-31 09:01:10 +01:00
Alexander Zobnin ac2e72f22a graphite: tag is required for values autocomplete 2017-10-31 10:20:01 +03:00
Daniel Lee a366b137a2 dashfolders: bulk edit tag filtering
Still ugly though
2017-10-30 19:34:55 +01:00
Carl Bergquist 7583b78c3a Merge pull request #9723 from boeboe/master
Correct help message of api_dataproxy_request_all_milliseconds
2017-10-30 13:08:32 +01:00
Bart Van Bos 1a8d05bbcb Correct help message of api_dataproxy_request_all_milliseconds 2017-10-30 12:50:57 +01:00
bergquist e7b604f538 changelog: adds note about closing #9645 2017-10-30 11:17:30 +01:00
Carl Bergquist 1a3373e049 Merge pull request #9699 from it-teaching-abo-akademi/master
Alertlist: Inform when no alerts in current time range
2017-10-30 11:12:11 +01:00
bergquist 92d8b3f095 changelog: adds note about closing #9698 2017-10-30 11:09:48 +01:00
Carl Bergquist d83f0fb266 Merge pull request #9698 from mtanda/text_ace_editor
[Feature Request] ace editor for text panel
2017-10-30 11:07:53 +01:00
Mitsuhiro Tanda e9645045a0 ace editor for text panel 2017-10-30 11:05:09 +09:00
Daniel Lee e85abf6810 dashboards: bulk edit delete
If both a parent folder and a child is chosen then
only sends the parent folder for deletion as the
child folder will be deleted anyway.
2017-10-29 22:08:26 +01:00
bergquist e1765e360e tech: add missing include 2017-10-29 20:21:41 +01:00
Daniel Lee 752453f204 dashboards: fix link to bulk edit 2017-10-29 20:20:51 +01:00
Daniel Lee e541e60bc3 sql: remove title from annotation help
Fixes #9710
2017-10-29 20:03:23 +01:00
bergquist 7dcfd800b3 changelog: adds note about closing #9681 2017-10-29 19:32:49 +01:00
Carl Bergquist e5ec357625 Merge pull request #9697 from bergquist/fix_removed_threshols
save as should only delete threshold for panels with alerts
2017-10-28 23:48:31 +02:00
Torkel Ödegaard d03b0d664b Merge branch 'master' of github.com:grafana/grafana 2017-10-28 13:28:30 +02:00
Torkel Ödegaard 3e3cef28ec fix: undefined is not an object evaluating this., #9538 2017-10-28 13:28:06 +02:00
pkarmaka cdd17f4871 [Bug Fix] Opentsdb Alias issue (#9613) 2017-10-28 13:10:18 +02:00
Torkel Ödegaard 43d45f9fae fix: graphite annotation tooltip included undefined, fixes #9707 2017-10-28 12:59:32 +02:00
Tomas Strand 357d394c66 Alertlist: Inform when no alerts in current time range
Shows info that no alerts are found for the currently selected interval in Alertlist.
Fixes #9624
2017-10-27 17:20:07 +03:00
bergquist 728471eef4 save as should only delete threshold for panels with alerts
closes #9681
2017-10-27 15:41:53 +02:00
Alexander Zobnin 2374e91bfa graphite: tags and values autocomplete based on @DanCech PR to graphite-web 2017-10-27 13:15:54 +03:00
Daniel Lee 71d9126bb6 changelog: note for #9596 2017-10-27 11:28:04 +02:00
Sven Klemm 34da0711ab add __timeGroup macro for mysql (#9596)
* add __timeGroup macro for mysql

* put example __timeGroup query in frontend help

* do __timeGroup interval parsing in go similar to mysql

* ignore whitespace around interval
2017-10-27 11:26:25 +02:00
Torkel Ödegaard cae852a1a2 updated icons 2017-10-27 08:33:04 +02:00
Daniel Lee 6aa0f35012 docs: fix link 2017-10-26 17:39:54 +02:00
Torkel Ödegaard 9b4e1aa0e7 ux: testing 3px panel border radius 2017-10-26 16:06:28 +02:00
Torkel Ödegaard 9605ab4475 Merge branch 'master' into develop 2017-10-26 15:59:50 +02:00
Torkel Ödegaard 9d5e4bee56 Merge branch 'master' of github.com:grafana/grafana 2017-10-26 15:27:46 +02:00
Patrick O'Carroll f097bce565 more link fixes 2017-10-26 14:47:07 +02:00
Patrick O'Carroll e654f80e4b fixed link issues 2017-10-26 14:25:43 +02:00
Patrick O'Carroll a228bb2308 renamed file 2017-10-26 13:34:41 +02:00
Patrick O'Carroll 0f2989e19b converted inspect_ctrl.js to ts (#9673) 2017-10-26 13:27:17 +02:00
Patrick O'Carroll bb1097b7c9 converted dashboard_loaders.js to .ts (#9672)
* converted dashboard_loaders.js to .ts

* class name change
2017-10-26 13:26:03 +02:00
Patrick O'Carroll 2f4744ca71 declared any to info in declaration 2017-10-26 13:25:47 +02:00
Patrick O'Carroll c84e3c00fe converted analytics.js to ts, minor code formatting fix to timer.ts (#9663) 2017-10-26 13:22:45 +02:00
Torkel Ödegaard c78a9368f0 docs: updated download links 2017-10-26 13:17:51 +02:00
Daniel Lee a7d7f0d9f8 docs: update alerting with new data sources 2017-10-26 12:32:37 +02:00
Daniel Lee e33faac63b changelog: spelling 2017-10-26 12:15:59 +02:00
Torkel Ödegaard 01f16ece3e plugins: added backward compatible path for rxjs 2017-10-26 12:07:23 +02:00
Torkel Ödegaard bf680acae5 ux: updated singlestat default colors 2017-10-26 11:57:48 +02:00
Torkel Ödegaard 74fcb2494a prometheus: fixed unsaved changes warning when changing time range due to step option on query model was changed in datasource.query code, fixes #9675 2017-10-26 11:46:33 +02:00
Torkel Ödegaard 77331e92b6 docs: updated changelog 2017-10-26 10:57:41 +02:00
Torkel Ödegaard 0c2aa91e61 fix: firefox can now create region annotations, fixes #9638 2017-10-26 10:56:10 +02:00
bergquist b80b5e0317 changelog: adds note about closing #9639 2017-10-26 10:44:09 +02:00
bergquist 261a832460 set release date for 4.6.0 2017-10-26 10:41:06 +02:00
Torkel Ödegaard 9718fa7c03 grid: work in progress on row repeats 2017-10-26 09:53:48 +02:00
Daniel Lee 7f3293ce80 dashfolders: rough draft of bulk edit 2017-10-25 16:12:03 +02:00
Patrick O'Carroll 2dd49e6e50 converted linkSrv.js to linkSrv.ts 2017-10-25 15:29:13 +02:00
Daniel Lee 80903c162e docs: update docker installation docs 2017-10-25 14:21:32 +02:00
Carl Bergquist c91a1e994b Merge pull request #9594 from bergquist/datasources_optimistic_concurrency
datasources: change to optimistic concurrency
2017-10-25 12:44:36 +02:00
Torkel Ödegaard 7559982b05 grid: minor changes 2017-10-25 12:38:08 +02:00
Patrick O'Carroll aa3fc9f45f converted outline.js to outline.ts (#9658) 2017-10-25 12:32:33 +02:00
Patrick O'Carroll 4b5929d577 converted timer.js to timer.ts (#9656) 2017-10-25 12:32:19 +02:00
bergquist d68bfaa8be datasource as cfg: typo 2017-10-25 12:21:06 +02:00
Torkel Ödegaard 17d95dc848 Create codecov.yml 2017-10-25 11:23:47 +02:00
bergquist da6430ac01 datasource as cfg: explain why cmd.version can be higher 2017-10-25 09:39:27 +02:00
zhengkai 2848773ab4 #edit_grafana_organisation_apis_doc (#9651) 2017-10-25 08:15:51 +02:00
xjewer bddebf4c82 add a phantomjs execution status to log if errors happens, e.g. OOM killer kills it (#9644)
fixes #9643
2017-10-25 08:14:14 +02:00
Torkel Ödegaard a299118c92 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-24 20:29:53 +02:00
Torkel Ödegaard 38f97d5cc9 grid: worked on row options modal and row removal 2017-10-24 20:13:34 +02:00
Daniel Lee f70fb7dbf3 dashboard: fix home dashboard getting started panel 2017-10-24 19:22:56 +02:00
Carl Bergquist 89a070029f Merge pull request #9648 from jasonodonnell/master
Fix typo in template help tab
2017-10-24 16:54:05 +02:00
Jason O'Donnell 577478baff Fix typo in template help tab 2017-10-24 10:48:49 -04:00
Patrick O'Carroll 95250e4ea3 replace store.js with store.ts, test for store.ts (#9646) 2017-10-24 16:13:49 +02:00
Torkel Ödegaard df12cbc4a7 tests: added test for DashboardRow 2017-10-24 15:46:03 +02:00
Daniel Lee 676a113966 docs: update first page with data source guides 2017-10-24 15:23:19 +02:00
Daniel Lee fc76530577 docs: document annotations for postgres/mysql 2017-10-24 15:13:04 +02:00
Daniel Lee f48703502d docs: update for template variables
ref #9030
2017-10-24 14:44:34 +02:00
Daniel Lee 201e93b7f9 changelog: spelling 2017-10-24 14:41:17 +02:00
Alin Sinpalean d99f4f95c0 Allow for multiple auto interval template variables (#9216)
* Allow for multiple auto interval template variables without them overwriting each other's value.

* Add test for multiple auto interval template variables.

* Correctly handle old links with .
2017-10-24 14:39:10 +02:00
bergquist 834446260f changelog: adds note about closing #9645 2017-10-24 14:19:53 +02:00
bergquist dea631bedc tech: remove rabbitmq event publisher
closes #9645
2017-10-24 14:10:23 +02:00
Daniel Lee 8334b24b42 changelog: note for #9030 2017-10-24 14:09:33 +02:00
Sven Klemm 56e53b8343 dont quote variables for mysql and postgres datasource (#9611) 2017-10-24 14:05:41 +02:00
bergquist 2f35759346 asscoiate comment with name 2017-10-24 13:40:38 +02:00
Carl Bergquist 5701b73ab2 Merge pull request #9642 from nadezhdamosunova/patch-1
Update development.md
2017-10-24 13:24:16 +02:00
Nadezhda Mosunova 8070a7ca35 Update development.md 2017-10-24 14:18:47 +03:00
Torkel Ödegaard 15024e96e4 ux: row collapse / expand starting to work 2017-10-24 12:33:14 +02:00
bergquist 5a53051f72 changelog: adds note about closing #9640 2017-10-24 11:08:34 +02:00
Torkel Ödegaard 68562a2077 Merge branch 'master' into develop 2017-10-24 11:02:48 +02:00
bergquist 9b6535cca1 alerting: only editors can pause rules
closes #9640
2017-10-24 11:01:08 +02:00
bergquist beb203209b prom: adds pre built grafana dashboard 2017-10-24 11:01:08 +02:00
bergquist 5f0a86be4c changelog: adds note about closing #9636 2017-10-24 11:01:08 +02:00
Torkel Ödegaard 7861c27557 fix: another fix for playlist view state, #9639 2017-10-24 10:58:14 +02:00
Torkel Ödegaard 3e89ec4ff2 ux: updated icons 2017-10-24 10:47:24 +02:00
Patrick O'Carroll a8285d0eb4 shore: migrating config/settings.js to typescript 2017-10-24 10:45:46 +02:00
Patrick O'Carroll 8afb84a5e5 fix: fixed playlist controls and view state, fixes #9639 2017-10-24 10:43:48 +02:00
Carl Bergquist e91b00c355 Merge pull request #9637 from utkarshcmu/singlestat_fix
Fixed #9636
2017-10-24 10:19:05 +02:00
utkarshcmu a4a10f2b03 Fixed #9636 2017-10-24 00:49:03 -07:00
Torkel Ödegaard b44daaabf2 Merge branch 'master' into develop 2017-10-24 09:06:09 +02:00
Torkel Ödegaard 4d72323623 shore: removed unused old system conf file 2017-10-23 20:31:23 +02:00
Alexander Zobnin 396eadc5ac Use d3 from node_modules (#9625)
* tech: annotations refactor, add tests for regions processing

* tech: move d3 to npm and webpack, #9480

* tech: move color scale functions to separate module

* fix opacity legend rendering
2017-10-23 20:30:43 +02:00
stuart nelson 93ac6680ab update log15 (#9622)
* Update log15 and go-isatty

* Update usage in pkg log
2017-10-23 19:57:19 +02:00
Daniel Lee 9e697a1f6e docs: update whats-new-in 2017-10-23 16:40:57 +02:00
Daniel Lee cda359e844 changelog: small text change 2017-10-23 16:32:23 +02:00
Daniel Lee 884e85fc81 changelog: v4.6.0-beta3 released 2017-10-23 16:29:13 +02:00
Alexander Zobnin 2b78c47a5a tech: annotations refactor, add tests for regions processing (#9618)
* tech: annotations refactor, add tests for regions processing

* tech: remove unused imports from annotations tests
2017-10-23 15:46:36 +02:00
Daniel Lee c3b90f2028 Move #9527 to 4.6.0-beta3 2017-10-23 15:31:21 +02:00
Daniel Lee c22097c95e build: disable jest on precommit hook -windows fix
Temporary fix until we get jest tests working on Windows
2017-10-23 13:03:06 +02:00
Daniel Lee 0ba4c161c3 build: fix all npm run commands for Windows
Adds node before each command otherwise Windows does not understand
commands starting with ./
2017-10-23 13:03:06 +02:00
Daniel Lee 7863a0417c plugins: fixes path issue on Windows
When loading a plugin and setting the path, an extra backslash sneaks
when running on Windows. Fixes #9597
2017-10-23 13:03:06 +02:00
Torkel Ödegaard 4fdb351c32 build: tryingt of fix windows build issue 2017-10-23 12:33:30 +02:00
bergquist d25d689efa tests: removes commented tests 2017-10-23 11:32:34 +02:00
bergquist fcd5d581a8 graph: invert order when sorting by legend
sort order have now been inverted. Biggest values should
be at bottom of the graph.

ref #9538
2017-10-23 11:32:09 +02:00
Torkel Ödegaard b986f744e4 fix: escape series name in graph legend, added aliasEscaped to time series model to reuse escape, fixes #9615 2017-10-23 10:15:58 +02:00
Torkel Ödegaard 9cce5217d0 build: fixed gofmt issue and addd mock response feature 2017-10-23 09:57:28 +02:00
bergquist 139f077453 prometheus: enable gzip for /metrics endpoint
closes #9464
2017-10-23 09:35:46 +02:00
Torkel Ödegaard 1fd2270a93 build: split circle test shell scripts 2017-10-23 09:06:50 +02:00
bergquist 89923bf77a datasources: change to optimisic concurrency
prerequisite for #9504
2017-10-23 07:55:16 +02:00
Torkel Ödegaard 48f384dcf1 build: reduced webpack log output and remove race flag from go tests 2017-10-22 20:16:32 +02:00
Torkel Ödegaard b6184a71bd build: set max workers to 2 for jest 2017-10-22 19:22:06 +02:00
Torkel Ödegaard 76b9b792b4 build: log heap usage 2017-10-22 19:19:29 +02:00
Torkel Ödegaard 4632b8daa5 build: another build fix 2017-10-22 18:10:22 +02:00
Torkel Ödegaard 7a277c69ac tests: migrated two more tests to jest 2017-10-22 17:36:50 +02:00
Torkel Ödegaard c6feb903b1 build: fixed build failure 2017-10-22 17:31:10 +02:00
Torkel Ödegaard 2de439c5a1 build: reworking pre commit hook 2017-10-22 15:19:06 +02:00
Torkel Ödegaard cde87d9adc build: added precommit 2017-10-22 15:11:37 +02:00
Torkel Ödegaard 34edea4ac7 fix: fixed tslint validation error 2017-10-22 14:56:20 +02:00
Torkel Ödegaard adb9d92082 test: added first react snapshot test 2017-10-22 12:48:20 +02:00
Torkel Ödegaard a06ccaa428 docs: another docs fix 2017-10-22 12:00:35 +02:00
Torkel Ödegaard 974d38583d docs: fix docs redirect for older datasources index page, fixes #9609 2017-10-22 11:53:30 +02:00
Torkel Ödegaard fff0fa2aee Merge branch 'master' into develop 2017-10-22 11:51:14 +02:00
Torkel Ödegaard 4aa227dd84 [Tech]: Start migrating to Jest for tests (#9610)
* tech: investigating karma + jest mix

* tech: migrating tests to jest

* tech: moved anoter test file to jest

* test: migrated two more test files to jest

* test: updated readme and made test fail to verify that it causes CI build failure

* tech: added code coverage for jest tests

* tech: testing codecov coverage

* tech: migrated more tests

* tech: migrated template srv to typescript and the tests to jest

* tech: minor build fix

* tech: build fixes

* build: another attempt at fixing go test with coverage
2017-10-22 07:03:26 +02:00
Carl Bergquist c4365e225c Merge pull request #9605 from jasonodonnell/master
Fix typos in init.d comment
2017-10-20 20:12:51 +02:00
Jason O'Donnell b51476f18a Fix typo in init.d script 2017-10-20 13:31:52 -04:00
Alexander Zobnin 6114f63d7c graphite: auto detect version 2017-10-20 16:26:00 +03:00
Alexander Zobnin 89aea278a9 graphite: improved version comparison 2017-10-20 15:50:44 +03:00
Alexander Zobnin c22a192bb8 graphite: split tags and functions into 2 rows when seriesByTag used 2017-10-20 12:32:20 +03:00
Alexander Zobnin 968ce15e7f graphite: add tags to dropdown and switch to tag editor if selected 2017-10-20 12:07:31 +03:00
Daniel Lee 90ef877e6e plugins: expose dashboard impression store 2017-10-20 10:38:52 +02:00
Torkel Ödegaard a56287c2dc ux: minor ux tweaks 2017-10-19 13:42:49 +02:00
Carl Bergquist 1d7a0db54b Sort series in the same order as legend in graph panel (#9563)
* graph: sort series in the same order as legend

closes #9538

* style: use function arrows

* graph: remove sort by legend option

sort series based on legend by default is sort order
is set and stack is enabled

* graph: remove useless sort

* graph: make code simpler
2017-10-19 13:04:02 +02:00
Torkel Ödegaard d58a560fda Update CHANGELOG.md 2017-10-19 12:55:52 +02:00
Torkel Ödegaard 1e61eae9f4 fix: fixed save to file button in export modal, fixes #9586 2017-10-19 12:52:26 +02:00
Carl Bergquist e8141b48d2 Merge pull request #9555 from mtanda/prometheus_46_improve_minor_fix
(prometheus) minor fix of auto complete
2017-10-19 10:42:34 +02:00
bergquist b3a8d93dca mysql: add usage stats for mysql 2017-10-19 10:30:54 +02:00
Daniel Lee 6bb4abc0ac note for #9527 2017-10-18 18:21:22 +02:00
Sven Klemm b2d880c6de modify $__timeGroup macro so it can be used in select clause (#9527)
* modify $__timeGroup macro so it can be used in select clause

* fix $__interval_ms for postgres datasource

* use $__timeGroup macro in documentation

* fix annotation template query
remove title since its no longer used and add tags instead

* change __timeFilter macro to work on postgresql < 8.1 and redshift
2017-10-18 18:10:01 +02:00
Torkel Ödegaard 6c01125416 Update CHANGELOG.md 2017-10-18 15:22:34 +02:00
Alexander Zobnin 92c67e8c83 Fix heatmap Y axis rendering (#9580)
* heatmap: fix Y axis rendering, #9576

* heatmap: fix color legend rendering
2017-10-18 15:19:20 +02:00
bergquist c2c5f529f3 prometheus: add builtin template variable as range vectors
add $__interval and $__interval_ms as range vectors to
prometheus editor
2017-10-18 14:03:23 +02:00
Daniel Lee 9ae3938136 Note for #5457 2017-10-18 13:43:51 +02:00
Carl Bergquist e8da084baf Merge pull request #9561 from mtanda/prometheus_46_fix_range
(prometheus) fix to show vector range popup
2017-10-18 13:39:57 +02:00
Torkel Ödegaard 8d68bd6bb9 fix: fixed prometheus step issue that caused browser crash, fixes #9575 2017-10-18 13:28:18 +02:00
bergquist 1797e2221a changelog: adds note about closing #9551 2017-10-18 12:13:54 +02:00
Carl Bergquist 43f039859a Merge pull request #9573 from cjchand/master
When Messasge field is set for an alert, map it to the output field i…
2017-10-18 12:10:42 +02:00
Torkel Ödegaard 039fc2964a fix: getting started panel and mark adding data source as done, fixes #9568 2017-10-18 12:02:57 +02:00
Daniel Lee 7cbb4020e9 pluginloader: esModule true for systemjs config
Supports importing a module's contents with the
'* as module' syntax. The latest version of SystemJS turns
it off per default which broke several plugins.
2017-10-18 11:16:18 +02:00
Alexander Zobnin 74e90d01ec Fixes for annotations API (#9577)
* annotations: throw error if no text specified and set default time to Now() if empty, #9571

* annotations: fix saving graphite event with empty string tags

* docs: add /api/annotations/graphite endpoint docs, #9571
2017-10-18 10:13:02 +02:00
Torkel Ödegaard 6f71af449b ux: new fixes 2017-10-18 09:48:37 +02:00
Patrick O'Carroll 148a4c6c2d Grafana5 light (#9559)
* variable for theme name for icons

* changes to navbar, sidemenu, breadcrumb, form-labels, dashlistlinks, searchitems etc

* fixed some missed issues with breadcrumbs
2017-10-18 07:49:52 +02:00
Chris Chandler 204fe007b7 When Messasge field is set for an alert, map it to the output field in a Sensu check result. If Message is empty, send "Grafana Metric Condition Met" 2017-10-17 16:22:56 -05:00
Torkel Ödegaard bc8c2409c0 ux: work on rows 2017-10-17 14:53:52 +02:00
Mitsuhiro Tanda 8a43d4e25c fix vector range 2017-10-17 21:27:04 +09:00
Carl Bergquist 5910453e8a Merge pull request #9560 from mtanda/prometheus_46_metric_name_matching
(prometheus) allow ":" character for metric name
2017-10-17 13:34:25 +02:00
Mitsuhiro Tanda ebebbddb2d allow ":" character for metric name 2017-10-17 19:44:59 +09:00
Torkel Ödegaard eda3cffe22 build: added imports of rxjs utility functions 2017-10-17 12:14:54 +02:00
Torkel Ödegaard e375159eec grid: row work 2017-10-17 12:04:18 +02:00
Torkel Ödegaard d8230f8fa7 Merge branch 'master' into develop 2017-10-17 11:17:28 +02:00
Carl Bergquist 4cc9f4f075 Merge pull request #9558 from mtanda/cw_fix_expand_46
(cloudwatch) fix template variable expanding
2017-10-17 11:15:44 +02:00
Mitsuhiro Tanda 0f87279ab8 fix template variable expanding 2017-10-17 18:11:21 +09:00
Torkel Ödegaard 233062229a Update CHANGELOG.md 2017-10-17 11:08:43 +02:00
krise3k 45a572ebd8 annotations: quote reserved fields (#9550) 2017-10-17 11:03:19 +02:00
Carl Bergquist c144dc86f2 Update CHANGELOG.md 2017-10-17 10:59:23 +02:00
Carl Bergquist 7923864935 Update CHANGELOG.md 2017-10-17 10:57:33 +02:00
Carl Bergquist 702c9f7cc5 Update CHANGELOG.md 2017-10-17 10:53:13 +02:00
Torkel Ödegaard 574afe8568 fix: fixed color pickers that were broken in minified builds, fixes #9549 2017-10-17 10:51:42 +02:00
Torkel Ödegaard b86ae3f0e8 ux: align alert and btn colors 2017-10-17 09:35:14 +02:00
Torkel Ödegaard 8ff7e1d05d docs: doc updates 2017-10-17 09:35:14 +02:00
Torkel Ödegaard 00c2153edd Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-17 09:21:45 +02:00
Carl Bergquist 24a0eb909c Merge pull request #9553 from ryantxu/typo
Fix typo in PLUGIN_DEV.md
2017-10-17 07:05:06 +02:00
Mitsuhiro Tanda c4c64365f1 remove duplicative prometheus function 2017-10-17 12:24:29 +09:00
Mitsuhiro Tanda c51f84a12e remove label match operator from keyword.operator 2017-10-17 12:19:56 +09:00
Mitsuhiro Tanda 8580b78ce6 remove label match operator from keyword.operator 2017-10-17 12:19:42 +09:00
Mitsuhiro Tanda cc1e69ace3 remove extra state push 2017-10-17 11:50:33 +09:00
ryan 85e3ed623a fix typo 2017-10-17 01:10:40 +02:00
Carl Bergquist 11e3876a16 Update CHANGELOG.md 2017-10-16 21:27:30 +02:00
Torkel Ödegaard cd10be0f52 newgrid: row progress 2017-10-16 16:09:23 +02:00
Daniel Lee 5f6ab1e370 styleguide: fix link in index 2017-10-16 14:11:52 +02:00
Daniel Lee b866383ec0 api: fix for dashboard version history 2017-10-16 14:09:52 +02:00
Daniel Lee 14241404ff textpanel: fixes #9491 2017-10-16 13:39:16 +02:00
Alexander Zobnin 199d0d152e graphite: datasource refactor 2017-10-16 14:23:29 +03:00
Daniel Lee f3ec139eab csv: fix import for saveAs shim
After switch from systemjs to webpack, needed to import the
file-saver saveAs shim for it work. Fixes #9525
2017-10-16 13:20:37 +02:00
Torkel Ödegaard a979767439 grid: minor progress on new row concept 2017-10-16 10:58:08 +02:00
Torkel Ödegaard 2ff4b86781 ux: add panel progress 2017-10-16 10:39:50 +02:00
bergquist 9de4d0fa6b alert_tab: clear test result when testing rules
closes #9539
2017-10-16 10:31:09 +02:00
Torkel Ödegaard 772ab7812f ux: worked on add panel function 2017-10-16 09:55:55 +02:00
Daniel Lee eb4e71e2c6 plugins: expose more util and flot dependencies
Also, fix for coremodules export. Have to add the __esModule
attribute to fool SystemJS.
2017-10-16 09:06:34 +02:00
Carl Bergquist c215f0b5ec Merge pull request #9528 from ericdahl/tsdb_cloudwatch_req_per_target
CloudWatch: Add ALB RequestCountPerTarget metric
2017-10-16 08:41:31 +02:00
Mitsuhiro Tanda 7edc95cc35 (cloudwatch) fix cloudwatch query error over 24h (#9536)
fix cloudwatch query error over 24h
2017-10-16 08:31:05 +02:00
Carl Bergquist 2d840f12e0 Merge pull request #9534 from mtanda/cw_improve_err_msg
(cloudwatch) show error message when cloudwatch datasource can't add
2017-10-16 08:08:35 +02:00
Joaquin Casares fa68eb9be6 Add autofocus tag for username field on login.html (#9526) 2017-10-16 07:25:30 +02:00
Mitsuhiro Tanda 40b11654fd show error message when cloudwatch datasource can't add 2017-10-16 13:05:53 +09:00
Torkel Ödegaard 48b6692491 ux: minor button changes 2017-10-15 12:25:31 +02:00
Eric Dahl 888d608090 CloudWatch: Add ALB RequestCountPerTarget metric
This commit adds the new ALB metric `RequestCountPerTarget` which was
released in July 2017.
2017-10-14 21:50:23 -07:00
Torkel Ödegaard 9b7d346d3f ux: color tweaks 2017-10-14 21:51:36 +02:00
Torkel Ödegaard a3bd761b0c ux: testing out new icons 2017-10-14 21:17:16 +02:00
Torkel Ödegaard 7e16254b1a Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-14 08:21:55 +02:00
bergquist 91f60bb6c4 set nightly version to v4.7.0-pre1 2017-10-13 17:12:40 +02:00
bergquist 86b2048d3b changelog: adds release date for v4.6.0-beta1 2017-10-13 17:12:40 +02:00
Torkel Ödegaard 825cac38b4 ux: minor fixes 2017-10-13 17:01:38 +02:00
Torkel Ödegaard 0c31d23086 grid: fixed grid width issues 2017-10-13 15:11:05 +02:00
Torkel Ödegaard 70005d3e37 grid: repeat refactoring and unit tests 2017-10-13 14:50:16 +02:00
Carl Bergquist a316b5fb80 Merge pull request #9519 from Foxboron/patch-1
Missing dot in aws credentials path
2017-10-13 14:22:21 +02:00
Morten Linderud 4a22d22857 Missing dot in aws credentials path
As far as i know the path hasn't changed, but the dot is missing in one place.
2017-10-13 14:08:37 +02:00
Torkel Ödegaard e5a6cb6241 newgrid: added constants, changed grid to 24 cols, added tests for panel repeats 2017-10-13 13:51:05 +02:00
bergquist 7069fed31d update packagecloud script for 4.6.0-beta1 2017-10-13 13:11:18 +02:00
Torkel Ödegaard 9fb4f61975 Merge branch 'master' into develop 2017-10-13 10:49:55 +02:00
Torkel Ödegaard 7bfd8e2a56 docs: doc updates 2017-10-13 10:31:34 +02:00
bergquist 9d916fdad6 changelog: adds note about closing #9516 2017-10-13 10:29:11 +02:00
bergquist ec14fa58b5 alerting: add count_non_null reducer
makes it possible to have a second condition requering
at least X points of data.
2017-10-13 09:47:10 +02:00
Alexander Zobnin a834812e13 Merge branch 'master' into graphite-seriesbytag 2017-10-13 10:26:20 +03:00
Carl Bergquist 8e4a7060ca Merge pull request #9515 from imweijh/patch-1
Update rpm.md
2017-10-13 08:54:19 +02:00
weijh d0ace0bc13 Update rpm.md
for error "The GPG keys listed for the "grafana" repository are already installed but they are not correct for this package."
2017-10-13 12:00:22 +08:00
Torkel Ödegaard 8bb9d92a73 grid: minor progress on panel repeats 2017-10-12 21:37:27 +02:00
Torkel Ödegaard 215d59865e changed name back to use underscore instead of camelcase, need to think more about this 2017-10-12 20:02:07 +02:00
Torkel Ödegaard 83e496606e fixed dashboard sorting 2017-10-12 19:55:52 +02:00
Torkel Ödegaard 770a21b368 newgrid: worked panel duplicate 2017-10-12 19:01:02 +02:00
Torkel Ödegaard 48c8e4d627 fix: various fixes for new grid 2017-10-12 17:38:49 +02:00
Torkel Ödegaard 88ceb19d96 Merge branch 'master' into develop 2017-10-12 16:32:44 +02:00
Torkel Ödegaard 2992fb4b0e fix: can now remove annotation tags without popover closing 2017-10-12 16:24:32 +02:00
Alexander Zobnin 3b14bee559 tech: add backward compatibility for <spectrum-picker> directive (#9510) 2017-10-12 15:31:59 +02:00
Torkel Ödegaard e7b718ed7a fix: fixed links on new 404 page, fixes #9493 2017-10-12 15:31:41 +02:00
bergquist b5727949fd logging: dont use cli logger in http_server 2017-10-12 15:29:01 +02:00
bergquist 88f55b01d8 oauth: raise error if session state is missing
ref #9476
2017-10-12 15:25:27 +02:00
bergquist 0848ba2e9c oauth: provide more logging for failed oauth requests 2017-10-12 15:25:27 +02:00
bergquist 23c610015f prepare for 4.6.0-beta1 release 2017-10-12 15:25:27 +02:00
Torkel Ödegaard 2564dda2d0 docs: updated whats new article 2017-10-12 14:53:29 +02:00
Patrick O'Carroll 1334a9e138 docs: initial draft release v46 2017-10-12 13:55:27 +02:00
Daniel Lee 4bdc3a5829 graph: fix y-axis decimalTick check. Fixes #9405 2017-10-12 12:45:20 +02:00
Torkel Ödegaard a7068d835a Merge branch 'master' of github.com:grafana/grafana 2017-10-12 12:40:43 +02:00
Torkel Ödegaard c879cc7615 minor docs update 2017-10-12 12:40:37 +02:00
Torkel Ödegaard a90052dac3 docs: annotation docs update 2017-10-12 12:19:25 +02:00
bergquist 7548734510 changelog: adds note about closing #7104 2017-10-12 12:13:00 +02:00
bergquist a45bd400f1 changelog: adds note about closing #9373 2017-10-12 12:11:51 +02:00
Carl Bergquist b63725033e Merge pull request #9450 from utkarshcmu/kafka_alert
Kafka alerting
2017-10-12 12:11:13 +02:00
Carl Bergquist ee5f69beb4 metrics: disable gzip for /metrics endpoint (#9468)
Prometheus client lib support gzip by itself. Which caused the
response to be double gzipped sometimes. We should use the Grafana
middle ware instead.

closes #9464
2017-10-12 12:02:36 +02:00
Daniel Lee 4c5bf76829 dashgrid: fix or skip tests for repeat rows 2017-10-12 12:01:13 +02:00
Patrick O'Carroll 5895f9dc89 Annotation docs (#9506)
* added images to annotation docs

* added gifs and png to annotations, minor code formatting fix in alertlist
2017-10-12 11:37:42 +02:00
Torkel Ödegaard 98f00f7e1f Update CHANGELOG.md 2017-10-12 11:35:47 +02:00
Daniel Lee 55d510a319 Update PLUGIN_DEV.md 2017-10-12 11:32:33 +02:00
Daniel Lee b38016e97f Update PLUGIN_DEV.md 2017-10-12 11:31:04 +02:00
Torkel Ödegaard 64d75db514 Update README.md 2017-10-12 11:30:01 +02:00
Carl Bergquist 9d53653647 Merge pull request #9378 from mattbostock/verify_tls
Bugfix: Always verify TLS unless explicitly told otherwise
2017-10-12 11:11:02 +02:00
Daniel Lee 5272dd6605 dashboardgrid: disable dynamic_dashboard_srv for now
The row concept is probably going to change a lot so disabling
the repeating panels and repeating rows code and tests for now.
2017-10-12 11:04:38 +02:00
Patrick O'Carroll 45704d4570 Fixed link issue in CHANGELOG 2017-10-12 10:56:24 +02:00
Torkel Ödegaard b81e01d1ec Create PLUGIN_DEV.md
initial draft of plugin dev document
2017-10-12 10:53:42 +02:00
bergquist 1f4df2b694 changelog: adds note about closing #9371,#5334,#8812 2017-10-12 10:44:40 +02:00
bergquist 4ca3cc90dd Merge branch 'mattbostock-verify_datasource_tls' 2017-10-12 10:39:07 +02:00
bergquist 79afd638bb ds_edit: placeholder should only be cert header 2017-10-12 10:38:45 +02:00
Patrick O'Carroll b76de790f9 fixed minor styling issus (#9497)
* fixed minor styling issus

* fixed code formatting
2017-10-12 10:33:42 +02:00
Torkel Ödegaard 81a4df1372 fix: alert api limit param did not work and caused SQL syntax error, fixes #9492 2017-10-12 10:22:53 +02:00
bergquist c0d257a0ee Merge branch 'verify_datasource_tls' of https://github.com/mattbostock/grafana into mattbostock-verify_datasource_tls 2017-10-12 10:15:32 +02:00
Alexander Zobnin 04ea7efac9 annotations: add endpoint for writing graphite-like events (#9495)
* annotations: add endpoint for writing graphite-like events

* annotations: fix new line handling in tooltip

* annotations: support tags in prior to Graphite 0.10.0 format
2017-10-12 10:12:15 +02:00
Carl Bergquist 19a57f7cb1 Merge pull request #9505 from PaulMest/you-to-your-typo
You to your typo
2017-10-12 08:49:58 +02:00
Paul Mestemaker 2f73208ca8 Update unsaved_changes_modal.ts 2017-10-11 15:57:33 -07:00
Paul Mestemaker e1d61c9678 Merge pull request #1 from grafana/master
Merging upstream
2017-10-11 15:55:05 -07:00
Torkel Ödegaard 98b582bead ux: style tweaks 2017-10-11 22:10:33 +02:00
Torkel Ödegaard 3a089dd04c newgrid: various fixes 2017-10-11 21:36:03 +02:00
Omkar Wagh 209f2debe6 If retention policy is set for influxDB, preprend that to the measurement name
for exploration queries.
2017-10-11 13:22:48 -04:00
Torkel Ödegaard 0d9ac4d5a4 newgrid: fixed migration code to new grid 2017-10-11 16:58:11 +02:00
Torkel Ödegaard 9358d0c6f7 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-11 16:48:30 +02:00
Torkel Ödegaard ad1d69861e Merge branch 'master' of github.com:grafana/grafana into develop 2017-10-11 16:47:16 +02:00
Torkel Ödegaard 3471e262a5 docker: updated our graphite docker container 2017-10-11 16:40:15 +02:00
Torkel Ödegaard 85405a2e8d Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-11 16:32:14 +02:00
Torkel Ödegaard 331b50dcaa grid: edit/view now works 2017-10-11 16:32:05 +02:00
Daniel Lee 0f6270098b dashboard: fixes for panels without rows 2017-10-11 16:09:05 +02:00
Daniel Lee 5e8f253ff8 webpack: changed devtools setting to stop exceptions 2017-10-11 16:09:05 +02:00
Torkel Ödegaard 9785e6b630 fix: ignore upgrading dashboard grid when there are no rows 2017-10-11 14:40:18 +02:00
Torkel Ödegaard d8e4decc60 grid: fixed migration for rows without height 2017-10-11 14:36:25 +02:00
Torkel Ödegaard d4ebcc82b4 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-10-11 13:52:59 +02:00
Torkel Ödegaard 18f58ea36c ux: minor fix sidemenu 2017-10-11 13:52:36 +02:00
Torkel Ödegaard 087b55aece newgrid: progress on fullscreen/edit view modes 2017-10-11 11:42:49 +02:00
Torkel Ödegaard 4c8310c2bf Merge branch 'graphite-seriesbytag' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-graphite-seriesbytag 2017-10-11 11:35:07 +02:00
Torkel Ödegaard 2bc57d856c fix: set lastSeenAt date when creating users to then years in past insteasd of empty date, fixes #9260 2017-10-11 11:29:17 +02:00
Torkel Ödegaard 71a839deaf ux: minor ux fix 2017-10-11 11:17:54 +02:00
Matt Bostock 4f3856adfb Retain old name for TLS client auth
I renamed `tlsAuth` to `tlsClientAuth` to better describe the fact that
this variable is used to enable TLS client authentication (as opposed to
server authentication) in c04d95f35.

However, changing the name breaks backwards compatibility for existing
installations using this feature and Grafana does not have a
standardised way of migrating changes in the schema:
https://github.com/grafana/grafana/pull/9377#issuecomment-333063543

For reasons of expediency given the severity of the bug (not verifying
TLS), keep the old name.
2017-10-11 08:18:04 +01:00
Matt Bostock f6aa0e41e5 Return error if datasource TLS CA not parsed 2017-10-11 08:18:03 +01:00
Matt Bostock e23c678df9 Datasource settings: Make HTTP all caps
It's an acronym, so it should be all caps.
2017-10-11 08:18:03 +01:00
Matt Bostock 5d312be419 Datasource HTTP settings: Add TLS skip verify
In c04d95f35 I changed the default for datasource HTTP requests so that
TLS is always verified.

This commit adds a checkbox to allow an admin to explicitly skip TLS
verification, for testing purposes.
2017-10-11 08:18:03 +01:00
Matt Bostock ef52d956bf Make URL capitalisation consistent in UI
URL is an acronym, it should be all caps.
2017-10-11 08:18:03 +01:00
Matt Bostock a286ffa5f2 Alias macron package in app_routes.go
...to make this file compatible with goimports:
https://godoc.org/golang.org/x/tools/cmd/goimports
2017-10-11 08:18:03 +01:00
Matt Bostock 43169e4302 Verify datasource TLS and split client auth and CA 2017-10-11 08:18:03 +01:00
Matt Bostock 4719a8c8dd Tidy spacing in datasource TLS settings 2017-10-11 08:18:03 +01:00
Matt Bostock 592c46c8b5 Tests: Clarify what InsecureSkipVerify does 2017-10-11 08:18:03 +01:00
Daniel Lee 7713009caa postgres: add missing ngInject decorator 2017-10-11 09:15:55 +02:00
Daniel Lee cd6a18ec62 search: fix search to limit dashboards better
Change the query to first select the dashboards, apply the limit then
join with tags. Means the limit will apply to the number of dashboards
returned in the search. The disadvantage is that the query will return
more rows than the limit, no. of dashboards x no. of tags. So hard limit
set to 5000 for all rows.
2017-10-10 20:56:05 +02:00
Torkel Ödegaard df61558018 grid: fixed geting started panel pos 2017-10-10 19:48:06 +02:00
Torkel Ödegaard 2e77bd0cb1 grid: progress on react grid 2017-10-10 17:57:53 +02:00
Torkel Ödegaard 05fbed4a36 docs: initial docs for new annotation features, #9483 2017-10-10 16:02:56 +02:00
Daniel Lee 679b169291 Adds note for #9209 to changelog 2017-10-10 15:23:22 +02:00
Daniel Lee d1c9760fa8 Postgres Data Source (#9475)
* add postgresql datasource

* add rest of files for postgres datasource

* fix timeseries query, remove unused code

* consistent naming, refactoring

* s/mysql/postgres/

* s/mysql/postgres/

* couple more tests

* tests for more datatypes

* fix macros for postgres

* add __timeSec macro

* add frontend for postgres datasource

* adjust documentation

* fix formatting

* add proper plugin description

* merge editor changes from mysql

* port changes from mysql datasource

* set proper defaultQuery for postgres

* add time_sec to timeseries query
accept int for value for timeseries query

* revert allowing time_sec and handle int or float values as unix
timestamp for "time" column

* fix tslint error

* handle decimal values in timeseries query

* allow setting sslmode for postgres datasource

* use type switch for handling data types

* fix value for timeseries query

* refactor timeseries queries to make them more flexible

* remove debug statement from inner loop in type conversion

* use plain for loop in getTypedRowData

* fix timeseries queries

* adjust postgres datasource to tsdb refactoring

* adjust postgres datasource to frontend changes

* update lib/pq to latest version

* move type conversion to getTypedRowData

* handle address types cidr, inet and macaddr

* adjust response parser and docs for annotations

* convert unknown types to string

* add documentation for postgres datasource

* add another example query with metric column

* set more helpful default query

* update help text in query editor

* handle NULL in value column of timeseries query

* add __timeGroup macro

* add test for __timeGroup macro

* document __timeGroup and set proper default query for annotations

* fix typos in docs

* add postgres to list of datasources

* add postgres to builtInPlugins

* mysql: refactoring as prep for merging postgres

Refactors out the initialization of the xorm engine and the query logic
for an sql data source.

* mysql: rename refactoring + test update

* postgres:refactor to use SqlEngine(same as mysql)

Refactored to use a common base class with the MySql data source.

Other changes from the original PR:
- Changed time column to be time_sec to allow other time units in the
future and to be the same as MySQL
- Changed integration test to test the main Query method rather than
the private transformToTable method
- Changed the __timeSec macro name to __timeEpoch
- Renamed PostgresExecutor to PostgresQueryEndpoint

Fixes #9209 (the original PR)

* postgres: encrypt password on config page

With some other cosmetic changes to the config page:
- placeholder texts
- reset button for the password after it has been encrypted.
- default value for the sslmode field.

* postgres: change back col name to time from time_sec

* postgres mysql: remove annotation title

Title has been removed from annotations

* postgres: fix images for docs page

* postgres mysql: fix specs
2017-10-10 15:19:14 +02:00
Torkel Ödegaard 630e6f5da6 tech: expose more to plugins, closes #9456 2017-10-10 15:07:09 +02:00
Alexander Zobnin 3184942aeb Fix NaN handling (#9469)
* graph: fix NaN formatting, #9012

* singlestat: prevent null value coloring, #9012, #8404

* timeseries: add tests for #9012 and move test file to TS
2017-10-10 14:25:57 +02:00
Alexander Zobnin 473c47cd1c snapshots: improve snapshot listing performance, #9314 (#9477)
exclude dashboard field from snapshot list search
2017-10-10 14:25:19 +02:00
Torkel Ödegaard 10a3504309 grid: progress on new grid, resize & saving layouts works 2017-10-10 14:20:53 +02:00
Daniel Lee 002b4d3403 mysql: fix interpolation for numbers in temp vars 2017-10-10 11:59:44 +02:00
utkarshcmu 8aff343ce3 Added docs for Kafka alerting 2017-10-10 02:11:02 -07:00
Torkel Ödegaard 207773e07e grid: minor progress 2017-10-10 09:34:14 +02:00
utkarshcmu da47dc8947 Fixed failing go tests 2017-10-09 18:56:05 -07:00
utkarshcmu a562dc7c2b gofmt fixes 2017-10-09 18:27:04 -07:00
utkarshcmu 138bee99ef Added tests 2017-10-09 18:27:04 -07:00
utkarshcmu d60339a9b1 Kafka REST Proxy works with Grafana 2017-10-09 18:27:04 -07:00
Torkel Ödegaard a867dc069b tech: got angular component to load inside react grid 2017-10-09 20:38:48 +02:00
Torkel Ödegaard 63bf2a0278 grid: need to find a way to add angular component inside react 2017-10-09 17:52:25 +02:00
Torkel Ödegaard 6cd2624caf ux: initial react grid poc 2017-10-09 17:24:10 +02:00
Torkel Ödegaard 647a3cc5ae Merge branch 'master' into develop 2017-10-09 16:01:54 +02:00
Patrick O'Carroll 68829a821e added insrtuctions for oauth2 okta bitbucket (#9471) 2017-10-09 15:41:14 +02:00
Alexander Zobnin a174ad4c9a Unified Color picker fixes (#9466)
* colorpicker: fix opening error when color is undefined

* colorpicker: replace spectrum picker by new color picker

* colorpicker: remove old spectrum picker directive

* annotations: use tinycolor for working with region colors
2017-10-09 13:54:14 +02:00
Axel 6ce990af57 Show min interval query option for mixed datasource (#9467) 2017-10-09 12:56:34 +02:00
Daniel Lee 8423260f58 gzip: plugin readme content set explicitly
Macaron's gzip middleware tries to automatically figure out the content
type for a file when gzipped and seems to mostly fail with plugin
readmes. This change sets the content type to plain text.

Fixes #9344. Ref #5952.
2017-10-09 10:17:45 +02:00
bergquist 5e4bbfb08e ignore pattern for vendored libs 2017-10-09 10:11:36 +02:00
Torkel Ödegaard 4814b05746 Merge branch 'master' of github.com:grafana/grafana 2017-10-09 07:24:28 +02:00
Torkel Ödegaard ec802dbc1f fix: escape metric segment auto complete, fixes #9423 2017-10-09 07:24:09 +02:00
Anton Hvornum 08dc08550c Corrected a PostgreSQL SELECT statement. (#9460)
At least in my Postgresql 9.6.5, the old syntax of capitalized queries doesn't work (Linux).<br>
Running with UTF-8 as standard encoding and the ` notations didn't work either, so removed those.
2017-10-08 20:37:16 +02:00
Torkel Ödegaard 9e61cacd16 tests: found the unhandled promise issue in the dash import tests 2017-10-08 15:56:42 +02:00
Torkel Ödegaard b228c23dbe testing: fixing tests 2017-10-07 22:05:31 +02:00
Torkel Ödegaard 3519d8d69b annotations: minor change to default/edit annotation color 2017-10-07 12:23:20 +02:00
Torkel Ödegaard 25aa9df270 Create annotations (#8197)
* annotations: add 25px space for events section

* annotations: restored create annotation action

* annotations: able to use fa icons as event markers

* annotations: initial emoji support from twemoji lib

* annotations: adjust fa icon position

* annotations: initial emoji picker

* annotation: include user info into annotation requests

* annotation: add icon info

* annotation: display user info in tooltip

* annotation: fix region saving

* annotation: initial region markers

* annotation: fix region clearing (add flot-temp-elem class)

* annotation: adjust styles a bit

* annotations: minor fixes

* annoations: removed userId look in loop, need a sql join or a user cache for this

* annotation: fix invisible events

* lib: changed twitter emoij lib to be npm dependency

* annotation: add icon picker to Add Annotation dialog

* annotation: save icon to annotation table

* annotation: able to set custom icon for annotation added by user

* annotations: fix emoji after library upgrade (switch to 72px)

* emoji: temporary remove bad code points

* annotations: improve icon picker

* annotations: icon show icon picker at the top

* annotations: use svg for emoji

* annotations: fix region drawing when add annotation editor opened

* annotations: use flot lib for drawing region fill

* annotations: move regions building into event_manager

* annotations: don't draw additional space if no events are got

* annotations: deduplicate events

* annotations: properly render cut regions

* annotations: fix cut region building

* annotations: refactor

* annotations: adjust event section size

* add-annotations: fix undefined default icon

* create-annotations:  edit event (frontend part)

* fixed bug causes error when hover event marker

* create-annotations:  update event (backend)

* ignore grafana-server debug binary in git (created VS Code)

* create-annotations: use PUT request for updating annotation.

* create-annotations: fixed time format when editing existing event

* create-annotations: support for region update

* create-annotations: fix bug with limit and event type

* create-annotations: delete annotation

* create-annotations: show only selected icon in edit mode

* create-annotations: show event editor only for users with at least Editor role

* create-annotations: handle double-sized emoji codepoints

* create-annotations: refactor

use CP_SEPARATOR from emojiDef

* create-annotations: update emoji list, add categories.

* create-annotations: copy SVG emoji into public/vendor/npm and use it as a base path

* create-annotations: initial tabs for emoji picker

* emoji-picker: adjust styles

* emoji-picker: minor refactor

* emoji-picker: refactor - rename and move into one directory

* emoji-picker: build emoji elements on app load, not on picker open

* emoji-picker: fix emoji searching

* emoji-picker: refactor

* emoji-picker: capitalize category name

* emoji-picker: refactor

move buildEmojiElem() into emoji_converter.ts for future reuse.

* jquery.flot.events: refactor

use buildEmojiElem() for making emojis, remove unused code for font awesome based icons.

* emoji_converter: handle converting error

* tech: updated

* merged with master

* shore: clean up some stuff

* annotation: wip tags

* annotation: filtering by tags

* tags: parse out spaces etc. from a tags string

* annotations: use tagsinput component for tag filtering

* annotation: wip work on how we query alert & panel annotations

* annotations: support for updating tags in an annotation

* linting

* annotations: work on unifying how alert history annotations and manual panel annotations are created

* tslint: fixes

* tags: create tag on blur as well

Currently, the tags directive only creates the tag when the
user presses enter. This change means the tag is created on
blur as well (when the user clicks outside the input field).

* annotations: fix update after refactoring

* annotations: progress on how alert annotations are fetched

* annotations: minor progress

* annotations: progress

* annotation: minor progress

* annotations: move tag parsing from tooltip to ds

Instead of parsing a tag string into an array in the annotation_tooltip
class, this moves the parsing to the datasources. InfluxDB ds already
does that parsing. Graphite now has it.

* annotations: more work on querying

* annotations: change from tags as string to array

when saving in the db and in the api.

* annotations: delete tag link if removed on edit

* annotation: more work on depricating annotation title

* annotations: delete tag links on delete

* annotations: fix for find

* annotation: added user to annotation tooltip and added alertName to annoation dto

* annotations: use id from route instead from cmd for updating

* annotations: http api docs

* create annotation: last edits

* annotations: minor fix for querying annotations before dashboard saved

* annotations: fix for popover placement when legend is on the side (and doubel render pass is causing original marker to be removed)

* annotations: changing how the built in query gets added

* annotation: added time to header in edit mode

* tests: fixed jshint built issue
2017-10-07 10:31:39 +02:00
Matt Bostock 83f1ae4e3e OAuth: Rename sslcli
Rename `sslcli` to the more descriptive `oauthClient`.
2017-10-06 17:10:03 +01:00
Matt Bostock ccf093da81 OAuth: Separate TLS client auth and CA config
It should be specify to either use TLS client authentication or use a
user-supplied CA; previously you had to enable client authentication to
use a custom CA.
2017-10-06 17:10:03 +01:00
Matt Bostock f2f8ca52d9 OAuth: Check both TLS client cert and key
If either is set, try to use them.

This should help avoid a situation where someone has half-configured TLS
client authentication and it doesn't work without raising an obvious
error.
2017-10-06 17:10:03 +01:00
Matt Bostock 16c5d0e4b7 Always verify TLS unless explicitly told otherwise
TLS was not being verified in a number of places:

- connections to grafana.com

- connections to OAuth providers when TLS client authentication was
  enabled

- connections to self-hosted Grafana installations when using the CLI
  tool

TLS should always be verified unless the user explicitly enables an
option to skip verification.

Removes some instances where `InsecureSkipVerify` is explicitly set to
`false`, the default, to help avoid confusion and make it more difficult
to regress on this fix by accident.

Adds a `--insecure` flag to `grafana-cli` to skip TLS verification.

Adds a `tls_skip_verify_insecure` setting for OAuth.

Adds a `app_tls_skip_verify_insecure` setting under a new `[plugins]`
section.

I'm not super happy with the way the global setting is used by
`pkg/api/app_routes.go` but that seems to be the existing pattern used.
2017-10-06 17:09:27 +01:00
Lucas Costa 43903d71ec fix: threshold's colors in table panels (#9445) (#9453) 2017-10-06 17:05:26 +02:00
Alexander Zobnin 5561a099b0 singlestat: fix sizing bug #9337 (#9448) 2017-10-06 13:41:39 +02:00
Torkel Ödegaard 7af4daf23b Revert "Fix coloring in singlestat if null value (#9438)" (#9443)
This reverts commit 213ba0377b.
2017-10-05 20:29:06 +02:00
Adrien Raffin-Caboisse 213ba0377b Fix coloring in singlestat if null value (#9438)
This modification aim to allow users to set value via textMapping and
these values to be used in background coloring as it text coloring.

This pull request closes #8404, but doesn't agree with #9012.
The issue #9012 consider that no coloring output should be put when
there is no data. I partially agree with this as I explicitely setted a
value in the textMapping I obviously want to treat `N/A` as a number.

`data.valueFormatted` contain the stringified version of `data.value`

If `Number()` cannot convert a string into a number a `NaN` value is
returned. So the code is still valid if the inputted value in
`data.valueFormatted` is not a number.
2017-10-05 20:26:28 +02:00
Torkel Ödegaard e42c118b3d fix: missing semicolon 2017-10-05 19:06:46 +02:00
Patrick O'Carroll d6b512478e changed jsontree to use jsonexplorer (#9416) 2017-10-05 19:01:23 +02:00
Patrick O'Carroll e951200404 docs page for authproxy (#9420) 2017-10-05 19:01:15 +02:00
Patrick O'Carroll 81be4e2612 Update codebox (#9430)
* updated the codeboxes in docs

* codebox change from json to http
2017-10-05 19:01:03 +02:00
Alexander Zobnin 19b5d91b75 Series color picker fix (#9442)
* colorpicker: fix spectrum color update on series color picker

* colorpicker: minor refactor
2017-10-05 18:34:12 +02:00
Carl Bergquist 9b34346f6b Merge pull request #9441 from genofire/patch-1
fix typo in readme
2017-10-05 17:38:33 +02:00
Geno 22cfb614bf fix type in readme 2017-10-05 17:34:13 +02:00
Carl Bergquist 6f4038e885 Merge pull request #9437 from Ijin08/table-column-styles
fixed layout for column options, changed dropdown for date format kep…
2017-10-05 17:18:15 +02:00
Patrick O'Carroll bb52f00d2d removed commented line 2017-10-05 16:29:01 +02:00
Carl Bergquist 7e432df511 Merge pull request #9439 from shabscan/patch-1
Fixed typo
2017-10-05 16:13:46 +02:00
bergquist 4cda9d0128 changelog: adds note about closing #9110 2017-10-05 16:13:03 +02:00
shabscan eb4a568240 Fixed typo 2017-10-05 10:11:57 -04:00
Carl Bergquist ab5bc1bf4a Merge pull request #9111 from eloo/feature/enhance_hipchat_card
Feature/enhance hipchat card
2017-10-05 16:11:04 +02:00
Joseph Weigl 6a030b2e8c Change empty string checks and improve logging 2017-10-05 16:00:55 +02:00
Alexander Zobnin 2f1c14fc98 graphite-tags: refactor, improve performance - remove unnecessary parseTarget() calls 2017-10-05 16:30:20 +03:00
Carl Bergquist 6979dbd921 Merge pull request #9435 from alin-amana/fix_404_spelling
Fix spelling on 404 page.
2017-10-05 15:01:29 +02:00
bergquist 1590729a24 changelog: adds note about closing #9208 2017-10-05 15:00:12 +02:00
Carl Bergquist 8e4efeeece Merge pull request #9208 from mtanda/prometheus_ace_complete_improve_label_name_complete
(prometheus) support label name/value completion
2017-10-05 14:54:07 +02:00
Carl Bergquist 363ded6ec1 Merge pull request #9434 from Yuav/patch-1
Add Norwegian Krone currency
2017-10-05 14:34:16 +02:00
Alexander Zobnin 055f21f1e8 graphite-tags: add tests 2017-10-05 15:17:46 +03:00
Alin Sinpalean 79feba0004 Fix spelling on 404 page. 2017-10-05 13:51:02 +02:00
Jon Skarpeteig 789473fd34 Lint fix 2017-10-05 13:46:42 +02:00
Jon Skarpeteig 7479c82687 Update kbn.js
Adding the other kr currencies not to offend any maintainers
2017-10-05 13:44:23 +02:00
Alexander Zobnin 63d51d0db3 graphite-tags: refactor, use <gf-form-dropdown> instead of <metric-segment> 2017-10-05 14:43:20 +03:00
Jon Skarpeteig 531586beba Add Norwegian Krone denominator for currency
See http://www.xe.com/symbols.php for currency symbols reference
2017-10-05 13:34:07 +02:00
Patrick O'Carroll 7a7e8c57d1 fixed layout for column options, changed dropdown for date format kept old code 2017-10-05 13:27:36 +02:00
Daniel Lee 0841eb94a8 build: add noUnusedLocals to tsc parameters 2017-10-05 11:37:00 +02:00
bergquist b6d09a3443 Merge branch 'go1.9.1' 2017-10-05 11:35:25 +02:00
bergquist eeb2e2c6c9 build: install go based on env variable 2017-10-05 11:35:14 +02:00
bergquist 15ece1da04 changes go version to 1.9.1 2017-10-05 11:35:14 +02:00
bergquist 69b0e63502 changelog: adds note about closing #9226 2017-10-05 11:16:40 +02:00
Carl Bergquist 32342926cf Merge pull request #9226 from alin-amana/adjust_interval_variable_with_min_step
Prometheus: Rework interval and step computation
2017-10-05 10:51:31 +02:00
bergquist 273c17f3f3 changelog: add note about closing #9429 2017-10-05 10:43:23 +02:00
Carl Bergquist 27ec5449d9 Merge pull request #9429 from s1061123/table_time_ms
Add milliseconds format in table panel's config
2017-10-05 10:41:16 +02:00
bergquist 70f102dad4 changelog: adds note about closing #9399 2017-10-05 10:02:42 +02:00
Carl Bergquist 6a20c28c8c Merge pull request #9399 from cglrkn/master
Update script to make it use OpsGenie's REST API
2017-10-05 09:56:27 +02:00
Alexander Zobnin a4daba63ea graphite-tags: initial tag editor 2017-10-05 10:47:32 +03:00
Cagla Arikan 5a3f32521e Fix formatting issue 2017-10-05 08:42:45 +03:00
Tomofumi Hayashi f8719efb67 Add milliseconds format in table panel's config
This changes introduce milliseconds format option in table panel
config GUI. Current grafana support milliseconds in time and
actually used at graph panel, however current table does not
provide the way to show milliseconds. This fix is to add format
in table panel to show milliseconds in table as well as graph.
2017-10-05 13:40:52 +09:00
Ricard Clau e4541a7fd1 support for s3 path (#9151) 2017-10-04 21:04:20 +02:00
Alin Sinpalean 9cf7a2d2ed Remove apparently unnecessary .flush() calls. 2017-10-04 16:23:24 +02:00
Joseph Weigl 7284db0e54 Fix empty message and toolong attribute names
Use default state message if no message is provided by the user
Slice attribute name to maximum of 50 chars
2017-10-04 16:07:13 +02:00
Alin Sinpalean 02d426a2d4 Merge branch 'master' into adjust_interval_variable_with_min_step 2017-10-04 15:30:38 +02:00
Alin Sinpalean 2276869efc Merge remote-tracking branch 'upstream/master' 2017-10-04 15:30:16 +02:00
Alin Sinpalean 080c46f835 Address review comments. 2017-10-04 15:30:07 +02:00
bergquist 0c31c7b106 changelog: add note about closing #7175 2017-10-04 10:42:34 +02:00
Carl Bergquist ba074062d6 Merge pull request #9392 from xginn8/slack_image_upload
adding support for token-based slack file.upload API call for posting images to slack
2017-10-04 10:29:15 +02:00
Daniel Lee 3c1beb1bdd plugin_loader: expose app_events to plugins 2017-10-04 09:41:22 +02:00
cglrkn 548bc6b7c4 Add the missing comma 2017-10-04 10:15:39 +03:00
Torkel Ödegaard be3c5d1355 colorpicker: refactoring the new unififed colorpicker, #9347 2017-10-04 07:56:41 +02:00
Alexander Zobnin 2aae2556a5 Unified colorpicker (#9347)
* colorpicker: initial picker with predefined palette and spectrum

* colorpicker: highlight selected color

* colorpicker: add onChange() callback

* colorpicker: replace singlestat picker by new one

* colorpicker: style tweak

* colorpicker: parse color on input blur

* colorpicker: sort palette by hue and lightness

* colorpicker: refactor, move colors sorting to 'app/core/utils/colors'

* tech: colorpicker - fix linter errors

* colorpicker: convert to React components

* colorpicker: fix spectrum import after moving to webpack

* colorpicker: minor refactor

* colorpicker: initial series color picker

* colorpicker: fix tests error
2017-10-04 07:15:23 +02:00
Dan Cech 7859d4ffca fix missing column headers in excel export (#9413) 2017-10-04 07:04:10 +02:00
Torkel Ödegaard 1af00f5209 build: remove clean plugin from dev build 2017-10-03 20:25:47 +02:00
Torkel Ödegaard 0831238420 build: fixed broken elastic unit test 2017-10-03 19:38:52 +02:00
Torkel Ödegaard a1b543aa35 shore: cleanup unused stuff in common.d.ts 2017-10-03 18:27:25 +02:00
cglrkn ef518f6ecd Build URL for close alert request differently 2017-10-03 15:13:05 +03:00
Patrick O'Carroll e1a86e63b8 some restyling (#9409) 2017-10-03 13:35:12 +02:00
Patrick O'Carroll dd83b67de5 Docs text fixes (#9408)
* styling changes and some text changes

* styling changes
2017-10-03 13:34:52 +02:00
Patrick O'Carroll 50e2f7e366 Checkbox fixes (#9400)
* fixing checkboxes

* deleted old file, fixed checkboxes

* minor change
2017-10-03 13:23:05 +02:00
Torkel Ödegaard 3dac77468b fix: ensure panel.datasource is null as default 2017-10-03 12:18:22 +02:00
Torkel Ödegaard 4c4564b138 plugibs: expose more to plugins 2017-10-03 11:02:40 +02:00
Matthew McGinn be0d471467 properly parse & pass upload image bool from config 2017-10-02 23:18:48 -04:00
Matthew McGinn 122e2b5c42 break out slack upload into separate function 2017-10-02 20:48:35 -04:00
Torkel Ödegaard a365719d3f tech: minor npm scripts update 2017-10-02 17:25:43 +02:00
Torkel Ödegaard 4cc878b56d build: fixed build 2017-10-02 17:10:23 +02:00
Torkel Ödegaard fa79be1f2d Merge branch 'ctide-day_rounding2' 2017-10-02 16:45:44 +02:00
Torkel Ödegaard a02cac2126 refactoring: minor refactoring of PR #8916 2017-10-02 16:45:25 +02:00
Torkel Ödegaard 42a0e9ebdf Merge branch 'day_rounding' of https://github.com/ctide/grafana into ctide-day_rounding2 2017-10-02 16:20:23 +02:00
cglrkn d8f6c73aab Update script to make it use OpsGenie's REST API
The script is making API calls to the deprecated OpsGenie Web API, we updated the script to make it use new OpsGenie's REST API.
2017-10-02 16:42:09 +03:00
Torkel Ödegaard d4e5a7d3f0 Merge branch 'master' of github.com:grafana/grafana 2017-10-02 15:30:50 +02:00
Torkel Ödegaard 503336bcd5 docs: minor docs fix 2017-10-02 15:30:37 +02:00
Torkel Ödegaard 03a88206a3 Merge branch 'master' of github.com:grafana/grafana 2017-10-02 15:30:14 +02:00
Torkel Ödegaard d38c891fac merge with master 2017-10-02 14:14:45 +02:00
Torkel Ödegaard ae14655749 plugins: expose datemath to plugins as well, fixes zabbix plugin 2017-10-02 13:39:39 +02:00
Torkel Ödegaard c338d8250b build: minor webpack fix 2017-10-02 13:15:28 +02:00
Patrick O'Carroll bd348e16bb redesigned dashboard links settingd, fixed a misspelling in rows and added fixed width to buttons (#9397) 2017-10-02 13:04:48 +02:00
Torkel Ödegaard 010a29a42d Merge branches 'master' and 'master' of github.com:grafana/grafana 2017-10-02 10:56:12 +02:00
Torkel Ödegaard 38ae460f59 docs: updated building from source docs 2017-10-02 10:55:56 +02:00
bergquist cb0ded069a playlist: play and edit should use same width 2017-10-02 09:58:58 +02:00
Torkel Ödegaard f5e8a4069c docs: minor fixes for #9369 2017-10-02 09:02:58 +02:00
Torkel Ödegaard 1dea7dab2a shore: fixed html indentation, #9368 2017-10-02 08:51:45 +02:00
Torkel Ödegaard a22dded6fa Merge branch 'update-alert-lists' of https://github.com/Ijin08/grafana into Ijin08-update-alert-lists 2017-10-02 08:43:56 +02:00
Torkel Ödegaard 6bc6911293 tech: updated yarn.lock 2017-10-02 08:24:56 +02:00
Torkel Ödegaard fea741d7c2 shore: minor cleanup 2017-10-01 20:35:01 +02:00
Torkel Ödegaard 0c86241c5b Webpack (#9391)
* webpack poc, this is not going to work for plugins, dam

* tech: webpack and systemjs for plugins starting to work

* tech: webpack and systemjs combo starting to work

* tech: webpack + karma tests progress

* tech: webpack + karma progress

* tech: working on tests

* tech: webpack

* tech: webpack + karma, all tests pass

* tech: webpack + karma, all tests pass

* tech: webpack all tests pass

* webpack: getting closer

* tech: webpack progress

* webpack: further build refinements

* webpack: ng annotate fixes

* webpack: optimized build fix

* tech: minor fix for elasticsearch

* tech: webpack + ace editor

* tech: restored lodash move mixin compatability

* tech: added enzyme react test and upgraded to react v16

* tech: package version fix

* tech: added testdata to built in bundle

* webpack: sass progress

* tech: prod & dev build is working for the sass

* tech: clean up unused grunt stuff and moved to scripts folder

* tech: added vendor and manifest chunks, updated readme and docs

* tech: webpack finishing touches
2017-10-01 20:02:25 +02:00
Matthew McGinn 89ca4b247b fixing json for CI 2017-10-01 10:37:59 -04:00
Matthew McGinn 00726e93eb adding support for token-based slack file.upload API call for posting images to slack 2017-09-30 21:20:20 -04:00
bergquist f6cc741a6d changelog: adds note about closing #8479 2017-09-29 15:43:30 +02:00
Carl Bergquist 8a7f87b752 Merge pull request #9311 from ctrlok/ctrlok/pagerdutyinfo
Include triggering metrics to pagerduty alerts (pretty print)
2017-09-29 15:40:49 +02:00
bergquist 46cc1464c4 changelog: adds note about closing #8050 2017-09-29 13:40:07 +02:00
Carl Bergquist cabb21317f Merge pull request #8050 from mtanda/cloudwatch_alert
(cloudwatch) alerting
2017-09-29 13:36:36 +02:00
bergquist a8006ada1e changelog: adds note about closing #9386 2017-09-29 13:30:38 +02:00
Carl Bergquist 7d2b989459 Merge pull request #9386 from shanhuhai5739/master
add diff and pdiff for conditions
2017-09-29 13:16:03 +02:00
coral 68ed4d45fa change pdiff to percent_diff for conditions 2017-09-29 18:14:17 +08:00
Daniel Lee 992cc1b680 panel: rename label on csv export modal 2017-09-29 11:32:13 +02:00
coral 9e48d54465 add diff and pdiff for conditions 2017-09-29 17:20:02 +08:00
Carl Bergquist dd56c4b94b Merge pull request #9382 from yagonobre/master
add brazil currency
2017-09-29 10:30:22 +02:00
Mitsuhiro Tanda 5850ae51b1 fix, add targetContainsTemplate() 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 8d6513a564 fix cloudwatch alert bug 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 5e88177f28 add debug log 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 468e8c13ee move extend statistics handling code to backend 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 6c375ed2cb fix assume role 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda f3a2dc7c5f improve cloudwatch tsdb 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda a21f53cf82 refactor cloudwatch code 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 59cdd4d8d2 remove obsolete code 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda fe9fca381c move cloudwatch crendential related code 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 4f5f38f41b remove old handler 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda e1fe15e094 fix annotation query 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda bf5268c0b4 fix time 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda d98d8a404f fix dimension convertion 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda c140d7aa06 re-implement annotation query 2017-09-29 13:45:11 +09:00
Mitsuhiro Tanda 8f3b060946 fix parameter format 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 17445e0c98 fix alert feature 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 8243ac39c2 fix parameter format 2017-09-29 13:44:01 +09:00
bergquist fe1d395d79 refactor cloudwatch to support new tsdb interface 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 4b34ff5b83 refactor cloudwatch frontend code 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda e4de6332de refactor cloudwatch frontend code 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda ea704306a0 fix test 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 1dcc51adce re-implement dimension_values() 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda ec632bb9ed fix error message 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 78e3556e95 remove performEC2DescribeInstances() 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 8fba6dcb0d re-implement ec2_instance_attribute() 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda cf23734d7d re-implement ebs_volume_ids() 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda e588b682fb import the change, https://github.com/grafana/grafana/pull/9268 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 36a537a3ce fix conflict 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda fa074249e4 fix test 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda f66e1c02a6 remove obsolete GetMetricStatistics() 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 01d2aa8af0 fix test 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda f590db1b78 move test code 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 1d265e05c9 fix conflict 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda fe3d3bc384 porting other suggestion 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda feed90c0e2 re-implement get regions 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 0c95148486 move the metric find query code 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 62d84c1e14 (cloudwatch) move query parameter to 'parameters' 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda 110f157621 parse duration 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda c6607f3fa7 remove offset for startTime 2017-09-29 13:44:01 +09:00
Mitsuhiro Tanda d31f264576 cache creds for keys/credentials auth type 2017-09-29 13:44:00 +09:00
Mitsuhiro Tanda 83b79dd624 fix test 2017-09-29 13:44:00 +09:00
Mitsuhiro Tanda 728e96e134 fix invalid query filter 2017-09-29 13:44:00 +09:00
Mitsuhiro Tanda dcb5ea58ce count up metrics 2017-09-29 13:44:00 +09:00
Mitsuhiro Tanda 39607d09d7 (cloudwatch) alerting 2017-09-29 13:44:00 +09:00
Yago Nobre 9c026a8e04 add brazil currency 2017-09-28 14:18:14 -03:00
Torkel Ödegaard 73295ab3ed tech: upgrade of systemjs to 0.20.x working 2017-09-28 14:08:59 +02:00
Torkel Ödegaard 8950f57050 Merge branch 'master' of github.com:grafana/grafana 2017-09-28 13:06:44 +02:00
Torkel Ödegaard 9bfda72a55 tech: reverted to systemjs 2017-09-28 13:06:23 +02:00
Torkel Ödegaard 7aa753a25f tech: migrating elasticsearch to typescript 2017-09-28 12:52:39 +02:00
bergquist 4dea94791d changelog: add note about using golang 1.9 2017-09-28 11:53:01 +02:00
bergquist 7f6924ff13 change go version to 1.9 2017-09-28 11:22:13 +02:00
bergquist c94fa7015f changelog: adds note about closing #9367 2017-09-28 11:19:01 +02:00
Carl Bergquist e9e8ffc769 Merge pull request #9367 from bobrik/dualstack
Enable dualstack in every net.Dialer, fixes #9364
2017-09-28 11:15:49 +02:00
Torkel Ödegaard c5e6344a2c fixes 2017-09-28 11:05:14 +02:00
Torkel Ödegaard 5849fbf04e Merge branch 'master' of github.com:grafana/grafana into develop 2017-09-28 10:37:57 +02:00
Torkel Ödegaard 487c475a1e tech: systemjs upgrade 2017-09-28 10:37:33 +02:00
Patrick O'Carroll 0a65100eaf made a text-panel page, maybe we don't need it 2017-09-28 10:05:28 +02:00
Patrick O'Carroll 0d5540ca09 cleaned up html/sass and added final touches 2017-09-28 09:41:33 +02:00
Ivan Babrou 9a4ae30227 Enable dualstack in every net.Dialer, fixes #9364
Default transport enables it:

* https://github.com/golang/go/blob/d2826d3e06/src/net/http/transport.go#L42-L46

```
    DialContext: (&net.Dialer{
	Timeout:   30 * time.Second,
	KeepAlive: 30 * time.Second,
	DualStack: true,
    }).DialContext,
```

See also: https://github.com/golang/go/issues/15324
2017-09-27 22:29:48 -07:00
bergquist 2ec7bbb2bd jaeger: capitalize tracer name 2017-09-27 16:38:00 +02:00
bergquist 2ae74bf13d jaeger: logging improvement 2017-09-27 16:36:42 +02:00
Torkel Ödegaard 9ee343f33d tech: systemjs upgrade 2017-09-27 15:42:06 +02:00
Alin Sinpalean bb8849785a Have include intervalFactor in its calculation, so always equal to the step query parameter. 2017-09-27 14:20:51 +02:00
Alin Sinpalean 25a6ed8718 Merge remote-tracking branch 'upstream/master' into adjust_interval_variable_with_min_step 2017-09-27 11:37:14 +02:00
Alin Sinpalean 1543dc4234 Merge remote-tracking branch 'upstream/master' 2017-09-27 11:36:50 +02:00
bergquist 5373a6027c alertlist: toggle play/pause button
closes #9355
2017-09-27 10:49:39 +02:00
Patrick O'Carroll 8615912018 updated css and html for recent state changes for alert lists 2017-09-27 10:38:01 +02:00
chrisrd 0e5e2f3fb9 Fix export_modal message (#9353)
Remove duplicate "to", and "others" is plural not possessive.
2017-09-27 09:46:56 +02:00
Torkel Ödegaard eaefa3c1fa s3: minor fix for PR #9223 2017-09-27 09:43:32 +02:00
Torkel Ödegaard 50d82155ed Merge branch 'master' of https://github.com/williamjoy/grafana into williamjoy-master 2017-09-27 09:37:26 +02:00
Alin Sinpalean f25aeadf21 Resolve merge conflicts with remote/master. 2017-09-26 17:55:30 +02:00
Alin Sinpalean 7366d7eae0 Merge branch 'master' of git+ssh://github.com/alin-amana/grafana 2017-09-26 17:44:37 +02:00
bergquist 2ed753232f internal metrics: add grafana version 2017-09-26 15:25:44 +02:00
bergquist 0778f31828 changelog: adds note about closing 5765 2017-09-26 14:40:43 +02:00
Carl Bergquist da3aea5e0a Merge pull request #9186 from mtanda/prometehus_instant_query2
(prometheus) instant query support
2017-09-26 14:37:10 +02:00
Torkel Ödegaard 5b3e6e67ea Update latest.json 2017-09-26 11:58:37 +02:00
Torkel Ödegaard 7b42e13c79 typescript: stricter typescript option 2017-09-26 11:24:58 +02:00
bergquist ff108bd871 prom_docker: give targets correct job name 2017-09-25 08:55:54 +02:00
bergquist 3641e85233 testdata: add bucket scenarios for heatmap
these scenarios makes it easier debug panels based
on the same numbers without sharing datasource

ref #9332
2017-09-24 22:08:28 +02:00
bergquist 7eec60ec2e dev-docker: add grafana as target 2017-09-24 21:58:33 +02:00
Carl Bergquist dd7f42ba03 changelog: add note ablout closing #9319 2017-09-24 21:46:51 +02:00
Carl Bergquist 9aa4f5c42a Merge pull request #9341 from thz/smtp_ehlo_identity
introduce smtp config option for EHLO identity
2017-09-24 21:41:57 +02:00
Tobias Hintze af79d046db introduce smtp config option for EHLO identity 2017-09-24 20:48:20 +02:00
bergquist 3fac31e808 changelog: note about closing #9250 2017-09-24 19:02:25 +02:00
bergquist 8175783f93 go fmt 2017-09-24 18:59:21 +02:00
bergquist c927209447 Merge branch 'master' of https://github.com/BrandonArp/grafana into BrandonArp-master 2017-09-24 18:56:46 +02:00
Patrick O'Carroll 3f1452fddb new page for text, needs more work 2017-09-22 17:14:39 +02:00
Patrick O'Carroll 1258dc1cbb replaced img in graph, created alert list page 2017-09-22 16:31:34 +02:00
Torkel Ödegaard ca0085f429 docs: update docs 2017-09-22 14:05:25 +02:00
Torkel Ödegaard a98124add7 Update CHANGELOG.md 2017-09-22 13:30:23 +02:00
bergquist ae249a623d changelog: adds note about closing #5873 2017-09-22 13:17:09 +02:00
Carl Bergquist 63f78c0b59 Merge pull request #9299 from seuf/grafana-cli-plugin-url
Added --pluginUrl option to grafana-cli for local network plugin inst…
2017-09-22 13:13:17 +02:00
Carl Bergquist 632ae0986c Merge pull request #9320 from xiahuibing/patch-1
Update _navbar.scss
2017-09-22 13:06:11 +02:00
Patrick O'Carroll 31243e7132 replaced image 2017-09-22 12:53:37 +02:00
Patrick O'Carroll 367acc37c7 Docs new updates (#9324)
* replaced images, updating text(not finished)

* text uppdates for dashlist and singlestat(+img). updated the keyboard shortcuts

* deleted old shortcuts instruction

* another img update
2017-09-22 10:49:47 +02:00
Torkel Ödegaard e695ce4aa5 Update CHANGELOG.md 2017-09-22 10:33:03 +02:00
Torkel Ödegaard dd0f4460cb Update latest.json 2017-09-22 10:08:56 +02:00
Torkel Ödegaard f22d1af9e0 cleanup: removed unused file 2017-09-22 10:07:22 +02:00
Torkel Ödegaard c0c86c1138 tech: remove bower and moved remaining bower dependencies to npm 2017-09-22 09:47:25 +02:00
Torkel Ödegaard 18337f610d Merge branch 'master' into develop 2017-09-22 08:42:07 +02:00
Torkel Ödegaard 6aad2a5b2d tech: cleanup and fixed build issue 2017-09-21 21:12:49 +02:00
Torkel Ödegaard f0e0e61809 tech: upgraded angularjs and moved dependency from bower to npm, closes #9327 2017-09-21 20:58:32 +02:00
bergquist ed661767f8 follow go idiom and return error as second param 2017-09-21 18:04:16 +02:00
Torkel Ödegaard 79b873e40e Merge branch 'stricter-ts-lint-rules' 2017-09-21 17:34:47 +02:00
Torkel Ödegaard 8fe21b43e9 tech: updated tsconfig 2017-09-21 17:34:22 +02:00
Daniel Lee 53d862143b docker: adds alertmanager to prometheus fig
with an alert rule that will always fire
2017-09-21 17:28:31 +02:00
Torkel Ödegaard 491fa6cad8 tech: more tslint rules 2017-09-21 17:23:31 +02:00
Patrick O'Carroll bf88242282 another img update 2017-09-21 16:58:25 +02:00
Torkel Ödegaard b8d9722b4f tech: removing unused variables from typescript files, and making tslint rules more strict 2017-09-21 16:40:18 +02:00
Patrick O'Carroll f6aefbd361 deleted old shortcuts instruction 2017-09-21 16:18:24 +02:00
Patrick O'Carroll fe05a996b7 text uppdates for dashlist and singlestat(+img). updated the keyboard shortcuts 2017-09-21 15:58:19 +02:00
bergquist a45e2ec9c3 context is reserved for go's context 2017-09-21 15:23:34 +02:00
bergquist 16b5b9f6be make ds a param for Query 2017-09-21 15:09:14 +02:00
bergquist c0260fd913 remove batch abstraction 2017-09-21 15:02:17 +02:00
bergquist 7f9f388293 rename executor into tsdbqueryendpoint 2017-09-21 15:02:17 +02:00
bergquist 0229d28d64 remove unused structs 2017-09-21 15:02:17 +02:00
bergquist 55f1b36e31 refactor response flow 2017-09-21 15:02:17 +02:00
Torkel Ödegaard adda84d124 tech: removed test component 2017-09-21 14:05:24 +02:00
Torkel Ödegaard 837beda155 Merge branch 'react-poc' 2017-09-21 13:59:26 +02:00
Torkel Ödegaard 9500eb8aaa ux: minor singlestat update 2017-09-21 13:59:21 +02:00
Torkel Ödegaard 1887c4f279 singlestat: minor change 2017-09-21 13:59:21 +02:00
Torkel Ödegaard 01fc37571e Update CHANGELOG.md 2017-09-21 13:58:48 +02:00
Patrick O'Carroll de17dcf3b0 Singlestat time (#9298)
* Added a timestamp option to single stat

* can now choose last time as value

* Finished last_time so it formats correctly, updated value stat

* fixed som issues, but still issue with testing

* Clean up after fake clock in test

* timezone-issue fix, fake time for from now test

* fix for timedifference
2017-09-21 13:34:51 +02:00
Torkel Ödegaard fed35909cc tech: progress on react poc 2017-09-21 13:32:57 +02:00
bergquist f1036a9382 adds note about closing #9213 2017-09-21 10:46:59 +02:00
Carl Bergquist 0db678e18f Merge pull request #9213 from grafana/dist_tracing
Add support for distributed tracing with Jaeger
2017-09-21 10:42:25 +02:00
xiahuibing 416510773b Update _navbar.scss
line66 and line118 :  "min-height:: $navbarHeight;" has double “:”
2017-09-21 16:40:49 +08:00
Patrick O'Carroll ece6588c03 replaced images, updating text(not finished) 2017-09-21 09:40:58 +02:00
Gordon McGuire 5e013f82b4 fix: close for 'Unsaved Changes' modal, #9284 (#9313)
Missing reference to the controller instance.
2017-09-21 09:05:59 +02:00
Alexander Zobnin f8b8907cc4 Initial graphite tags support (#9239)
* graphite: initial seriesByTag() support

* graphite: groupByTags() function

* graphite: aliasByTags() function

* graphite: fix optional params update, issue #9238

* graphite: fix tag-related functions version

* graphite: add 1.1.x version to config

* graphite: fix seriesByTag() series parsing
2017-09-21 08:22:56 +02:00
Torkel Ödegaard 84b1519480 tech: initial react poc 2017-09-20 17:44:23 +02:00
Vsevolod Polyakov d355862328 Make details more clean in PD description 2017-09-20 13:03:18 +03:00
bergquist 4326790bb4 bug: enable HEAD requests again
ref #9307
2017-09-20 09:45:00 +02:00
Will Sewell 4a6da233d9 Add DbClusterIdentifier to CloudWatch dimensions (#9297)
Unfortunately CloudWatch dimensions are case-sensitive and it uses both `DBClusterIdentifier` and `DbClusterIdentifier` (notice the lower case `b`) depending on the metric. All metrics which also have the `Role` dimension appear to use `DBClusterIdentifier`, whereas metric with the `EngineName` dimension use `DbClusterIdentifier`.
2017-09-20 08:31:54 +02:00
Alexander Zobnin fdec9a4daf templating: fix dependent variable updating (#9306) 2017-09-19 20:35:48 +02:00
tamayika bef4b9b3b0 Fix adhoc filters restoration (#9303) 2017-09-19 14:25:35 +02:00
Andreas Kohn 3b565dccd8 Explicitly refer to Github 'OAuth' applications
A 'Github Application' is now something else, and will not work with Grafana.
2017-09-19 13:21:15 +02:00
William 88a8991722 config bucket and region for s3 uploader
this is to support cn-north-1 region as it can get s3 url programatically.
also keeps support 'bucket_url' for backward compatiblity
2017-09-19 04:57:25 -04:00
bergquist 13e8eb6d2e Merge branch 'v4.5.x' 2017-09-19 08:34:44 +02:00
bergquist fe3c6ac355 fixes bug introduced with prom namespaces
ref #9279
2017-09-19 08:16:23 +02:00
Matthew McGinn 2840968861 fixing spelling of millesecond -> millisecond 2017-09-19 07:20:14 +02:00
Matthew McGinn 3a7ed2305d fixing spelling of millesecond -> millisecond 2017-09-19 06:14:43 +02:00
Aaron Kirkbride 442f625a4e Remove duplicate bus.AddHandler() (#9289)
`bus.AddHandler("sql", SetUsingOrg)` is already called on line 24.

Very minor change.
2017-09-18 15:52:15 +02:00
Torkel Ödegaard 5f6de33487 Update CHANGELOG.md 2017-09-18 15:21:00 +02:00
bergquist 353bb57a6f use same key as mt 2017-09-18 14:59:59 +02:00
bergquist 6c7454fc2b tag alert queries that return no_data 2017-09-18 14:53:30 +02:00
Patrick O'Carroll d6725d4fbe updated error page html+css, added ds_store to ignore (#9285) 2017-09-18 14:04:55 +02:00
deep-42-thought 5749489e7e public/app/plugins/panel/graph/specs/graph_specs.ts: relax tests to be "within" instead of "equal", so they won't fail on i686 (#9286) 2017-09-18 14:03:54 +02:00
Sven Nierlein d0ddf76730 Fix path to icon (#9276)
grafana_mask_icon.svg is located in the img/ folder.
2017-09-18 12:54:20 +02:00
bergquist 915412754c Merge branch 'v4.5.x' 2017-09-18 12:35:02 +02:00
Torkel Ödegaard 41e01184aa Merge branch 'master' into develop 2017-09-18 12:32:29 +02:00
bergquist 6d901fe145 adds note about fix in v4.5.2 2017-09-18 12:29:32 +02:00
bergquist 0a8a6fd872 skip NaN values when writing to graphite
ref #9279
2017-09-18 12:25:37 +02:00
Andrew Prokhorenkov 00b18a8aea addded mass units, #9265 (#9273) 2017-09-18 11:13:56 +02:00
Ryan Patterson a20c419583 Fully fill out nulls in cloudfront data source (#9268)
Summary:
Previously, cloudwatch data sources would only fill in a single null value if
there was missing data. This results in behavior described in #9267. This
resolves that issue by filling the entire missing period with null values. The
null values can then be interpreted as normal by the graphing frontend.

Test Plan:
Used on a data source that had missing data for many consecutive periods.
Ensured that the graph remained at 0 across the entire window.
2017-09-18 11:12:52 +02:00
bergquist bcf784375b make it possible to configure sampler type 2017-09-18 11:08:58 +02:00
bergquist 861843f4ca mark >=400 responses as error 2017-09-18 11:08:58 +02:00
bergquist 83ddd2b158 change port for jaeger dev container 2017-09-18 11:08:58 +02:00
bergquist f211455643 logwrapper for jaeger 2017-09-18 11:08:58 +02:00
bergquist f37a595f68 make samplerconfig.param configurable 2017-09-18 11:08:58 +02:00
bergquist ec29b469e4 adds custom tags from settings 2017-09-18 11:08:58 +02:00
bergquist e3211f6e48 use route as span name 2017-09-18 11:08:58 +02:00
bergquist ee2e4c6567 add trace headers for outgoing requests 2017-09-18 11:08:58 +02:00
bergquist 98c84f9458 docker file for running jaeger 2017-09-18 11:08:58 +02:00
bergquist bc678899f7 better formating for error trace 2017-09-18 11:08:58 +02:00
bergquist d55b49b7b7 attach context with span to *http.Request 2017-09-18 11:08:58 +02:00
bergquist 3c8133aa4b add traces for datasource reverse proxy requests 2017-09-18 11:08:58 +02:00
bergquist 8c8fdadb78 trace failed executions 2017-09-18 11:08:58 +02:00
bergquist e128310045 use tags instead of logs 2017-09-18 11:08:58 +02:00
bergquist 89c86c7a22 use opentracing ext package when possible 2017-09-18 11:08:58 +02:00
bergquist 935dad653c set example port to zipkin default 2017-09-18 11:08:58 +02:00
bergquist e84ff24833 adds codahale to vendor 2017-09-18 11:08:58 +02:00
bergquist a234e894bb makes jaeger tracing configurable 2017-09-18 11:08:58 +02:00
bergquist f160ad3bc8 add trace parameters for outgoing requests 2017-09-18 11:08:58 +02:00
bergquist 2e350bbb8e adds basic traces using open traces 2017-09-18 11:08:58 +02:00
bergquist 2ac6e23fc5 Merge branch 'invalid_panel_data' 2017-09-18 10:36:17 +02:00
bergquist 89eda76f29 require dashboard panels to have id
closes #9234
2017-09-18 10:32:58 +02:00
Torkel Ödegaard a687a6605d Merge branch 'v4.5.x' 2017-09-18 09:40:00 +02:00
Torkel Ödegaard 24d69ca205 fix: jsonData should not be allowed to be null, fixes #9258 2017-09-18 09:38:02 +02:00
Torkel Ödegaard 7a80a6627a Merge branch 'reduce-package-size' 2017-09-18 09:09:38 +02:00
Torkel Ödegaard a081f90403 Merge branch 'master' of github.com:grafana/grafana 2017-09-18 09:08:42 +02:00
Torkel Ödegaard d99c873221 packaging: reduce package size 2017-09-18 09:02:45 +02:00
ParadoxalManiak c94f5b456a Update upgrading.md (#9263)
Fixed some minor writing issues.
2017-09-15 22:15:12 +02:00
THIERRY SALLE e978bfc368 Added --pluginUrl option to grafana-cli for local network plugin installation 2017-09-15 20:34:08 +02:00
bergquist 67469e1809 adds note about closing #1395 2017-09-15 17:26:48 +02:00
Andrew Prokhorenkov 8cdf12b694 add locale format 2017-09-15 17:26:18 +02:00
bergquist 114ba801b9 update changelog 2017-09-15 16:25:17 +02:00
bergquist 87308fd97f fixes broken tests 💥 2017-09-15 16:11:02 +02:00
bergquist 16b1c0e63e minor code adjusetments 2017-09-15 16:11:02 +02:00
bergquist c7698a09ed pass context to image uploaders 2017-09-15 16:11:02 +02:00
bergquist d0ab028cfc remove unused deps 2017-09-15 16:11:02 +02:00
Konstantin Chukhlomin 7e3c9fcc1c Reduced OAuth scope to read_write 2017-09-15 16:11:02 +02:00
Konstantin Chukhlomin fcdf282090 GCS support via JSON API 2017-09-15 16:11:02 +02:00
Konstantin Chukhlomin 1188f8df73 gofmt fixes 2017-09-15 16:11:02 +02:00
Konstantin Chukhlomin 72d7c4d620 Added GCS support #8370 2017-09-15 16:11:02 +02:00
bergquist 93cff1a42a move more known datasources from others 2017-09-15 14:26:29 +02:00
Alexander Zobnin 54f0650321 Remove alert thresholds on panel duplicate, issue #9178 (#9257) 2017-09-15 13:34:31 +02:00
Daniel Lee f534ea057c 4.5.1 docs + update version to 5.0.0-pre1 2017-09-15 11:27:16 +02:00
Daniel Lee 3aed6595c7 Merge branch 'v4.5.x' 2017-09-15 11:10:55 +02:00
Daniel Lee 085245f97d publish_both.sh update for 4.5.1 2017-09-15 11:09:48 +02:00
Daniel Lee c114c46119 update version to 4.5.1 2017-09-15 10:05:51 +02:00
Torkel Ödegaard 9fdecb320c Merge branch 'master' of github.com:grafana/grafana 2017-09-15 10:00:17 +02:00
Torkel Ödegaard 7cac2e1817 Merge branch 'v4.5.x' 2017-09-15 09:59:44 +02:00
Torkel Ödegaard bbe191a975 graphite: do not show error for cancelled requests, fixes #9249 2017-09-15 09:59:23 +02:00
Torkel Ödegaard c532c8640b Update CHANGELOG.md 2017-09-15 09:17:44 +02:00
Torkel Ödegaard 0107f1eddb docs: updated changelog 2017-09-14 20:34:23 +02:00
Torkel Ödegaard f8326c29f9 mysql: fix query editor not showing issue, fixes #9247 2017-09-14 20:30:01 +02:00
bergquist 491e6897e7 metrics: set summary unit
we have to use milleseconds since graphite
doesnt support float64
2017-09-14 19:28:54 +02:00
Alin Sinpalean 719151b9cb Merge remote-tracking branch 'upstream/master' 2017-09-14 19:25:54 +02:00
Andrew Prokhorenkov 5b74bea476 add Ukrainian hryvnia sign 2017-09-14 19:06:25 +02:00
Torkel Ödegaard 210df23430 packaging: reducing package size be only including public vendor stuff we need 2017-09-14 17:33:58 +02:00
bergquist 314bff1b78 adds grafana_ prefix for none standard metrics 2017-09-14 14:26:32 +02:00
bergquist 9c30bf53cf introduce concept of named middleware 2017-09-14 14:26:32 +02:00
bergquist 4bc6ecb241 adds metric middlware to route register 2017-09-14 14:26:32 +02:00
bergquist 6372e22180 migrate handlers to new register 2017-09-14 14:26:32 +02:00
bergquist f842265388 add custom route register 2017-09-14 14:26:32 +02:00
bergquist bf138d1845 adds small docs page metrics 2017-09-14 14:26:32 +02:00
bergquist c177a9a77a make bridge prefix backwards compatible 2017-09-14 14:26:32 +02:00
bergquist 6d22a67a30 return /metrics before session middleware 2017-09-14 14:26:32 +02:00
bergquist 6b1ae1a8a8 use internal init for settings 2017-09-14 14:26:32 +02:00
bergquist dd9d4ecfbe update stat gauges first run to avoid gaps 2017-09-14 14:26:32 +02:00
bergquist fca80ff525 add support for deltas in histogram and summaries 2017-09-14 14:26:32 +02:00
bergquist 2de94d6548 convert old metrics to prom metrics 2017-09-14 14:26:32 +02:00
bergquist 788f677ed7 remove old internal metrics lib 2017-09-14 14:26:32 +02:00
bergquist d6b8c6a2d2 add graphite bridge that support delta counters 2017-09-14 14:26:32 +02:00
Torkel Ödegaard c1ef89d3bf Update CHANGELOG.md 2017-09-14 11:55:44 +02:00
Torkel Ödegaard aa24839ac9 Update CHANGELOG.md 2017-09-14 11:55:07 +02:00
Torkel Ödegaard a5c08a72fb docs: update download links 2017-09-14 11:28:59 +02:00
Patrick O'Carroll 337fb9bdfa fixed some images (#9237) 2017-09-14 11:04:01 +02:00
Torkel Ödegaard 512535e8ff release: bumped version to v4.5.0 stable 2017-09-14 10:51:21 +02:00
Torkel Ödegaard 4e719aa0c1 docs: minor update 2017-09-14 10:50:34 +02:00
Brandon Arp cffbcb504d allow ssl renegotiation for datasources 2017-09-13 16:20:24 -07:00
Daniel Lee 29de6387cb plugins: add styles for ol tags in markdown 2017-09-13 17:13:53 +02:00
Torkel Ödegaard a76f3fba2e docs: minor fixes to images 2017-09-13 17:11:10 +02:00
Patrick O'Carroll d71456b96f Docs image updates (#9225)
* replaced old images and gifs with new ones

* replaced images, changed some text especially for column styles

* replaced and added images and gifs
2017-09-13 16:29:53 +02:00
Torkel Ödegaard a9e3130ef6 Merge branch 'master' into develop 2017-09-13 16:06:34 +02:00
Torkel Ödegaard 85bd1861d6 fix: improve behavior when switching back and forth between x-axis modes, fixes #9229 2017-09-13 14:38:22 +02:00
Torkel Ödegaard 1a53d6453b Merge branch 'v4.4.x' 2017-09-13 10:02:04 +02:00
Torkel Ödegaard 10f058036c Merge branch 'master' of github.com:grafana/grafana 2017-09-13 09:48:56 +02:00
Torkel Ödegaard 73248d6687 fixes for metrics tab when data source was not found 2017-09-13 09:48:50 +02:00
Mitsuhiro Tanda 5bdd554671 check args for query 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda 6bf8144793 add test for completer 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda 1a5e786467 fix 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda 56c0d91ee5 follow token name change 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda d530ccff1c (prometheus) support label value completion 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda 40b74e6664 (prometheus) support label name completion 2017-09-13 16:34:28 +09:00
Mitsuhiro Tanda b349b3ef55 provide ace editor for external datasource plugin (#9224) 2017-09-13 09:29:53 +02:00
William 37962216ed get s3 url via aws-sdk-go, fix #9189 2017-09-12 21:52:40 -04:00
Alin Sinpalean 7a7837f47e Merge remote-tracking branch 'upstream/master' 2017-09-12 21:57:32 +02:00
Alin Sinpalean 2a62374a61 Prometheus: Rework the interaction between auto interval (computed based on graph resolution), min interval (where specified, per query) and intervalFactor (AKA resolution, where specified, per query).
As a bonus, have  and  reflect the actual interval (not the auto interval), taking into account min interval and Prometheus' 11k data points limit.
2017-09-12 16:36:27 +02:00
Torkel Ödegaard dd67c9d420 Merge branch 'master' of github.com:grafana/grafana 2017-09-12 11:36:47 +02:00
Torkel Ödegaard 968ba30fa5 ux: increased code editor auto complete width from 320px to 550px, fixes #9203 2017-09-12 11:36:30 +02:00
Daniel Lee 379f984293 docs: windows - add note about ini comments 2017-09-12 11:08:28 +02:00
Torkel Ödegaard 3c16230158 prometheus: added completer unit test, #9208 2017-09-12 11:05:32 +02:00
Torkel Ödegaard fd76c855f9 Merge branch 'master' of github.com:grafana/grafana 2017-09-12 10:32:02 +02:00
Torkel Ödegaard e16cadaa27 docs: minor update 2017-09-12 10:31:53 +02:00
Daniel Lee 665fef0114 docs: kiosk mode options add to playlist doc 2017-09-12 10:31:13 +02:00
Daniel Lee ff4cd1aef6 influxdb: small css fix for order by in query editor 2017-09-12 09:24:54 +02:00
Torkel Ödegaard 0e18c82d95 style: corrected indentation in sass file 2017-09-12 09:21:17 +02:00
Patrick O'Carroll a7b0a01b13 replaced old images and gifs with new ones (#9217) 2017-09-12 09:07:36 +02:00
Torkel Ödegaard 18cfe1b192 Merge branch 'master' of github.com:grafana/grafana 2017-09-12 09:05:47 +02:00
Torkel Ödegaard f6100dd8eb ux: success/error alerts refactoring, #9214 2017-09-12 09:05:32 +02:00
bergquist ee4bbf61a9 remove node restriction from package.json
yarn requires correct node version in package.json
and wont install with 4.x. removing since we dont
care about it.
2017-09-12 08:15:48 +02:00
Torkel Ödegaard 7164183739 Merge branch 'master' of github.com:grafana/grafana 2017-09-12 08:01:51 +02:00
Patrick O'Carroll 90602942f5 New alert design (#9214)
* ux: updated alert design

* fixed bg-color for alerts

* more changes to alerts, index fixed
2017-09-12 08:01:44 +02:00
Torkel Ödegaard 6e344f6eea api: tsdb api orgId fix 2017-09-12 08:01:34 +02:00
bergquist 057b8a6b2d improve error message for timeouts
closes #9220
2017-09-11 20:07:57 +02:00
Torkel Ödegaard e5f84484eb prometheus: another prometheus syntax highlight fix, #9212, #9167 2017-09-11 16:36:53 +02:00
Alexander Zobnin b1580bf385 ace: fix braces highlight in prometheus (#9212) 2017-09-11 15:49:15 +02:00
Torkel Ödegaard 293daf2ca1 fix: removed text option from text panel edit options, was by mistake not removed from settings dropdown, fixes #9204 2017-09-11 10:45:00 +02:00
Mitsuhiro Tanda f5a17e535b minor fix 2017-09-11 13:11:45 +09:00
Torkel Ödegaard 75c4c4d8b5 fix: query ctrl unit tests now pass as before 2017-09-08 13:52:28 +02:00
Torkel Ödegaard 2953d64429 prometheus: minor update to focus editor PR, #9201 2017-09-08 11:43:29 +02:00
Torkel Ödegaard 4b851de648 Merge branch 'prom_give_focus' of https://github.com/mtanda/grafana into mtanda-prom_give_focus 2017-09-08 10:55:50 +02:00
Alin Sinpalean 1076b75a21 Fix rounding of intervals (#9197)
* Prometheus: Fix actual step computation logic when a min_step is specified and the range is longer than min_step * 11000.

* Fix kbn.round_interval for exact intervals.

* Remove redundant 1d return, fix a couple of comments.

* Be more cautious with values close to 1d not rounding up to 1d. They may, because of the way the calculation uses 2 potentially different current time values.
2017-09-08 10:37:57 +02:00
Daniel Lee b1506a2b09 securejson: decrypt should not modify src
When decrypting a source securejson byte array, should not
modify the source and now passes back a new dest byte array.
2017-09-08 10:19:07 +02:00
Mitsuhiro Tanda e13575eaef add AWS/NATGateway metrics (#9202) 2017-09-08 09:04:15 +02:00
Mitsuhiro Tanda 7c566a6539 fix to focus first query 2017-09-08 12:33:36 +09:00
Mitsuhiro Tanda d971eddc7a copy from give-focus 2017-09-08 11:49:44 +09:00
Mitsuhiro Tanda ce0de35a6c set give focus in code editor 2017-09-08 11:49:41 +09:00
Alin Sinpalean 13eb0c1ece Fix kbn.round_interval for exact intervals. 2017-09-07 22:14:37 +02:00
Alin Sinpalean 567e877b9e Merge remote-tracking branch 'upstream/master' 2017-09-07 20:26:28 +02:00
Mitsuhiro Tanda 6f8110956d (prometheus) support instant query for table format, use checkbox to switch query type 2017-09-08 01:15:07 +09:00
Torkel Ödegaard 93be16b106 docs: minor docs update 2017-09-07 16:55:36 +02:00
Torkel Ödegaard 8ec33574a1 docs: added v4.4 to docs archive 2017-09-07 16:44:41 +02:00
Patrick O'Carroll de647c4100 docs: uppdated getting started with images and text, added info on query inspector to version45 and trouble shooting (#9193) 2017-09-07 16:32:55 +02:00
bergquist 51d021a337 reduce readme to be about the code 2017-09-07 16:08:38 +02:00
Torkel Ödegaard 6ed1b084ce develop: fixed more broken tests, couple still failing 2017-09-07 15:21:26 +02:00
Torkel Ödegaard a38ded9e7e Merge branch 'master' into develop-newgrid-row-design2 2017-09-07 15:05:41 +02:00
bergquist 7dc6d67d46 adds note about closing #8876 2017-09-07 14:29:25 +02:00
Carl Bergquist 62979916ad Merge pull request #8876 from mtanda/shortcut_new_dashboard
add new dashboard shortcut
2017-09-07 14:26:05 +02:00
Carl Bergquist 4670c74942 Merge pull request #9022 from adriangarza/master
added CloudWatch data source API documentation
2017-09-07 14:10:53 +02:00
Torkel Ödegaard c9a30ef149 build: fixed broken build 2017-09-07 13:05:26 +02:00
Carl Bergquist 9dac602e98 Merge pull request #9191 from wgliang/master
Optimize some wrong usage and spelling
2017-09-07 12:04:45 +02:00
wangguoliang 652fce7e76 Optimize some wrong usage and spelling
Signed-off-by: wgliang <liangcszzu@163.com>
2017-09-07 17:50:11 +08:00
Mitsuhiro Tanda 56cb16ff5b (prometheus) instant query support 2017-09-07 18:03:53 +09:00
Mitsuhiro Tanda e98254e1e3 show only label name in label matcher (#9167) 2017-09-07 10:10:52 +02:00
Mitsuhiro Tanda 4446e95155 (prometheus) cache metric suggest query result (#9182)
* (prometheus) cache metric suggest query result

* add test
2017-09-07 10:09:59 +02:00
Alin Sinpalean 5d4b8b5a5c Have 'Hide series with only zeros' ignore nulls (#9179)
* Prometheus: Fix actual step computation logic when a min_step is specified and the range is longer than min_step * 11000.

* Have the 'Hide series with only zeros' option also apply to series with some null values.
2017-09-06 16:50:55 +02:00
Patrick O'Carroll 095ac80d19 docs: updated image in docs (#9184) 2017-09-06 16:31:17 +02:00
Torkel Ödegaard 9451e6af39 Merge branch 'master' of github.com:grafana/grafana 2017-09-06 14:20:53 +02:00
Alin Sinpalean 24a165662c Merge remote-tracking branch 'upstream/master' 2017-09-06 09:51:13 +02:00
Torkel Ödegaard 82d365bdb8 fix: graph right y label is now correctly possitioned, fixes #9172 2017-09-05 21:57:32 +02:00
Sergey Korobov ec64dc8fae Fix sortByName and percentileOfSeries in gfunc.js (#9169)
Fixing type of parameters from "select" to "boolean" for working with carbonapi (like it was done in summarize function) + some commas prettify.
2017-09-05 19:34:55 +02:00
Torkel Ödegaard b333ad9481 docs: updated docs with v4.5 beta links 2017-09-05 16:01:28 +02:00
Torkel Ödegaard 22be9436f7 Update CHANGELOG.md 2017-09-05 15:16:04 +02:00
Torkel Ödegaard bc690232fb version bump to v4.5-beta1 2017-09-05 10:39:55 +02:00
Torkel Ödegaard 0005f8e7b3 fix: fixed jshint issue 2017-09-05 10:17:24 +02:00
Torkel Ödegaard 4e387ed47a fix: Elasticsearch and adhoc filters fix, fixes #9165 2017-09-05 10:16:17 +02:00
Daniel Lee 52676161bb docs: update to http api admin section
Make it clearer that it only works with basic auth
2017-09-05 10:04:01 +02:00
bergquist 01e2729dba spring clean! 2017-09-04 23:19:09 +02:00
Carl Bergquist a1faa6d4d9 Merge pull request #9164 from summic/master
Add the missing step of "grunt build" to the README.md
2017-09-04 23:06:42 +02:00
Allen 1a3d34b918 Add the missing step of grunt build to the readme 2017-09-05 01:56:52 +08:00
Torkel Ödegaard 5d3c3a6889 packaging: changed how pid directory is created for systemd systems, #9133 2017-09-04 16:41:07 +02:00
Torkel Ödegaard 4eabf6ce81 Update CHANGELOG.md 2017-09-04 14:49:51 +02:00
Torkel Ödegaard 2789c4f1e1 dsfix: include routes in plugin model 2017-09-04 14:09:02 +02:00
Torkel Ödegaard 9bafb108f7 docs: added docs archive for v4.3 2017-09-04 13:38:46 +02:00
Torkel Ödegaard 88e4b6ee75 docs: update changelog 2017-09-04 13:34:33 +02:00
Torkel Ödegaard 2fc67da69a Merge branch 'metrics-tab-v3' 2017-09-04 13:27:44 +02:00
Torkel Ödegaard 6e4090abf2 feat: finished work on the interval changes #9161 2017-09-04 13:27:28 +02:00
Torkel Ödegaard 284cacf560 logging: write pid file path and pid during startup 2017-09-04 12:44:54 +02:00
mxlxm c5400ffe76 mysql: use collation instead of charset (#9156)
- use charset would issue additional 'SET NAMES <VALUE>' queries, set
collation would be better. see: https://github.com/go-sql-driver/mysql#charset
2017-09-04 12:32:07 +02:00
Torkel Ödegaard c3cffeb10c packaging: fixed issue with pid file on systemd systems, fixes #9133 2017-09-04 10:43:04 +02:00
bergquist ce6050f5d6 fix(graphite): jsonData is not always present. 2017-09-04 10:28:48 +02:00
Joseph Weigl 185b0dcc05 Merge branch 'master' into feature/enhance_hipchat_card 2017-09-02 19:04:40 +02:00
Torkel Ödegaard 07e192ff47 change: more work on changing default group by time interval to min interval setting 2017-09-01 15:57:02 +02:00
Torkel Ödegaard e8e1f1bc6d updated graphite help 2017-09-01 11:15:39 +02:00
Marcel Anacker 40c008f870 Cloudwatch Datasource: changed namespace of Web Application Firewall (#9128) 2017-09-01 10:43:23 +02:00
Nevins 66441650cd changing ordering so AWS API is only called if cache has expired (#9136) 2017-09-01 07:24:05 +02:00
Jesse White 91fb3f2224 fix: cancel the initial timer when changing the auto-refresh interval, fixes #9139 (#9140) 2017-09-01 07:19:51 +02:00
Torkel Ödegaard 7b1473649b Update README.md 2017-09-01 07:16:42 +02:00
Torkel Ödegaard eb0f5cc900 ux: progress on metrics tab changes 2017-08-31 16:38:49 +02:00
Torkel Ödegaard 84d4958a3c plugin change: make interval, cache timeout & max data points options in plugin.json, remove query.options component feature, add help markdown feature and toggle for data sources 2017-08-31 14:05:52 +02:00
Torkel Ödegaard 40ae2cef38 docs: updated changelog with #9131 2017-08-31 09:54:45 +02:00
Torkel Ödegaard 52177a45d9 influxdb: use paranthesis for influxdb queries in frontend query builder, #9131 2017-08-31 09:52:32 +02:00
Jonathan A. Sternberg bdfbc2453f Use parenthesis to surround the selected tags for influxdb queries (#9131)
The generated queries when selecting multiple tags are incorrect. In
InfluxQL, `AND` has a higher precedence than `OR` so the condition:

    WHERE "hostname" = 'server1' OR "hostname" = 'server2' AND time > now() - 5m

This is parsed as if it were:

    WHERE "hostname" = 'server1' OR ("hostname" = 'server2' AND time > now() - 5m)

But the intention is to write a query like this:

    WHERE ("hostname" = 'server1' OR "hostname" = 'server2') AND time > now() - 5m

This change modifies the generated query so it surrounds a query with
multiple conditions in parenthesis so it doesn't conflict with the time
expression in an unexpected way.

This is currently not an issue because InfluxDB doesn't actually
evaluate the condition for the time expression correctly. It just looks
through the AST for anything that looks like a time expression and then
assumes the proper format of `AND` was used rather than validating that
it was used correctly.
2017-08-31 09:33:03 +02:00
Torkel Ödegaard 9b60a63778 ux: metrics tab v3 2017-08-30 16:39:00 +02:00
Daniel Lee abeaef71cc DashExport: fix View JSON in export menu
ref #9002
2017-08-30 09:56:49 +02:00
Torkel Ödegaard 54129b1340 Merge branch 'master' of github.com:grafana/grafana
: Please enter a commit message to explain why this merge is necessary,
2017-08-29 15:52:17 +02:00
Torkel Ödegaard dda1cf1a88 Merge branch 'ace-editor' 2017-08-29 15:52:03 +02:00
Torkel Ödegaard bdb1cfb008 ace: minor fixes for ace editor 2017-08-29 15:51:54 +02:00
Torkel Ödegaard c5c5fa0db3 Update ROADMAP.md 2017-08-29 15:45:59 +02:00
Torkel Ödegaard 78ea1ea76e Updated master version to v4.5 2017-08-29 10:13:16 +02:00
Alin Sinpalean bdd239e933 Prometheus: Fix actual step computation logic when a min_step is specified and the range is longer than min_step * 11000. (#9109) 2017-08-29 09:57:45 +02:00
Torkel Ödegaard aef4eca254 fix: removed code intented to test/replicate an issue 2017-08-29 08:57:34 +02:00
Callum Loh 74ddebc8ea Fix spelling for Hipchat notifier (#9112) 2017-08-29 08:08:51 +02:00
Alin Sinpalean 84c6caabc5 Prometheus: Fix actual step computation logic when a min_step is specified and the range is longer than min_step * 11000. 2017-08-28 15:45:51 +02:00
Torkel Ödegaard 546f903141 ds: minor fix that resets data source model when switching data source type 2017-08-28 15:29:31 +02:00
Torkel Ödegaard c2b05341e5 Merge branch 'master' of github.com:grafana/grafana 2017-08-28 13:29:36 +02:00
Torkel Ödegaard c92317bafa fix: fixed gofmt formating for #9091 2017-08-28 13:29:24 +02:00
Torkel Ödegaard 407f1ad475 Merge branch 'master' of https://github.com/pdoan017/grafana 2017-08-28 13:28:13 +02:00
Torkel Ödegaard ead7ae7635 Update CHANGELOG.md 2017-08-28 11:46:54 +02:00
Torkel Ödegaard 311fa66590 Update CHANGELOG.md 2017-08-28 11:46:13 +02:00
Torkel Ödegaard 72690b3962 Update CHANGELOG.md 2017-08-28 11:45:25 +02:00
Torkel Ödegaard 62f5770908 fix: changed modal to fixed positioned, this change makes modal maintain scroll position, fixes #8800 2017-08-28 11:34:44 +02:00
Torkel Ödegaard bf110d02d1 fix: form dropdown, escape autocomplete dropdown items, fixes #9089 2017-08-28 11:00:42 +02:00
Torkel Ödegaard e91cf28f8d elasticsearch: changed ad hoc filters from using term filters to using phrase match queries, closing #9095 2017-08-28 10:52:10 +02:00
Torkel Ödegaard 3b9fbd60d8 ux: fix for showing pending invitations tab, fixes #9094 2017-08-28 09:52:53 +02:00
Dmitry Bedrin ad14ccf4bd non_negative_difference() function in InfluxDB 1.3 (#9104)
Add support of non_negative_difference() function from InfluxDB 1.3
https://docs.influxdata.com/influxdb/v1.3/administration/differences/#functions
2017-08-28 08:53:41 +02:00
Alexander Zobnin 9375441991 ace: add default light theme 2017-08-26 13:46:39 +03:00
Alexander Zobnin ef3c543620 ace: fix directive docs 2017-08-26 12:52:32 +03:00
Alexander Zobnin 54f932e960 ace: fix error when getCompleter() wasn't passed 2017-08-26 12:48:37 +03:00
Alexander Zobnin 451ecce4ab ace: styles tweak 2017-08-26 12:36:08 +03:00
Alexander Zobnin ef162c3dc7 ace: minor css refactor 2017-08-26 12:14:45 +03:00
Torkel Ödegaard ba1fbe0786 ux: alternative row design 2017-08-25 18:53:35 +02:00
Torkel Ödegaard 4819e50441 newgrid: fixes to default home dashboard 2017-08-25 14:47:57 +02:00
Torkel Ödegaard 1aa5ed0cde ux: minor fixes 2017-08-25 10:41:24 +02:00
Torkel Ödegaard d87653b079 ux: new grid progress 2017-08-25 10:19:08 +02:00
pdoan017 3eea5d235d Added import for container/list 2017-08-24 15:42:54 -04:00
pdoan017 d6085755c4 Added series order according to query results
Raw query results would return as expected. But when appending new series to pointsBySeries map, order of keys is random. So I've added a list to keep track of series order. Should implement FIFO rules.
2017-08-24 15:38:36 -04:00
Torkel Ödegaard 160d8cec92 grid: minor progres on new grid 2017-08-24 16:37:00 +02:00
Joseph Weigl 81d3ab37c3 Add thumbnail to card 2017-08-24 14:52:23 +02:00
Torkel Ödegaard 47cf8e6337 grid: minor progres on new grid 2017-08-24 14:08:05 +02:00
Joseph Weigl 9666f45e9c Add values to the hipchat card 2017-08-24 13:40:33 +02:00
Joseph Weigl c6f7d34c55 Reorder editorconfig 2017-08-24 13:40:19 +02:00
Alexander Zobnin a0cb744746 ace: reduce docs lines width 2017-08-24 13:58:26 +03:00
Alexander Zobnin dc7616e560 ace: prometheus functions docs 2017-08-24 13:56:22 +03:00
Alexander Zobnin f7ec8e0de0 Merge branch 'master' into ace-editor 2017-08-24 12:37:18 +03:00
Torkel Ödegaard 47f8145246 Merge branch 'master' of github.com:grafana/grafana 2017-08-24 11:18:44 +02:00
Torkel Ödegaard 71c22fdbff dataproxy: removed some logging, closes #9078 2017-08-24 11:18:06 +02:00
Torkel Ödegaard 71c9582944 data source with token auth is starting to work, #9078 2017-08-24 11:07:37 +02:00
Jason Stangroome 632a5e9b97 Support Azure MySQL (#8618)
Azure's MySQL implementation appears to always respond with an Authentication Method Switch Request Packet requesting `mysql_native_password` auth even though the client's initial Handshake Response already included the native password credentials.

Most MySQL client libraries support this but Golang's go-sql-driver/mysql requires the `allowNativePasswords` DSN parameter set to enable it. Without this parameter, Grafana fails to authenticate to the database with the error message "this user requires mysql native password authentication."

References:

* https://web.archive.org/web/20160814002743/http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest
* https://web.archive.org/web/20160814002743/http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse
* https://github.com/go-sql-driver/mysql#user-content-allownativepasswords
2017-08-24 10:24:10 +02:00
Torkel Ödegaard 3c9798bec9 datasource-proxy: token exchange 2017-08-23 17:18:43 +02:00
Daniel Lee bf4ffe41b0 Merge branch 'v4.4.x' 2017-08-23 15:19:51 +02:00
Daniel Lee e763104a6f csv: add toggle for export to Excel
Adds back feature that adds 'sep=;' text that excel needs in a csv file.
Also adds toggle to make this optional if exporting to other spreadsheet
programs. Fixes #9083.
2017-08-23 15:17:53 +02:00
Torkel Ödegaard 4f9fbcc211 dataproxy: added caching of datasources when doing data proxy requests, #9078 2017-08-23 13:31:26 +02:00
Torkel Ödegaard bcb3dfac9f Merge branch 'master' of github.com:grafana/grafana 2017-08-23 10:52:56 +02:00
Torkel Ödegaard 8bf49c51b9 dataproxy: refactoring data source proxy to support route templates and wrote more tests for data proxy code, #9078 2017-08-23 10:52:31 +02:00
jenlersadnie 0ba5706400 Fixing a minor typo under Selection Options (#9082)
Mulit => Multi
2017-08-23 08:50:22 +02:00
Torkel Ödegaard 63d6ab476a feat: data source proxy refactoring and route handling, #9078 2017-08-22 17:14:15 +02:00
Daniel Lee d19aa89ec0 docs: .ini file semicolon is comment
ref #7725
2017-08-21 21:28:49 +02:00
Daniel Lee bbf9d7677b Merge branch 'v4.4.x' 2017-08-21 21:05:43 +02:00
Daniel Lee a31d0df897 shortcuts: fixes expand/collapse all rows
Fixes #9069
2017-08-21 21:04:20 +02:00
Daniel Lee 5c2958023d Merge branch 'v4.4.x' 2017-08-21 13:45:04 +02:00
Daniel Lee 7b5019482e mysqlds: add placeholder/typeahead for localhost connection strings
for the host field on the data source config page. Fixes #9046
2017-08-21 13:44:33 +02:00
Daniel Lee 649122b4fb mysqlds: add placeholder/typeahead for localhost connection strings
for the host field on the data source config page. Fixes #9046
2017-08-21 13:43:09 +02:00
Torkel Ödegaard 4639fe68f4 Merge branch 'develop' into develop-newgrid-row-panels 2017-08-21 12:29:20 +02:00
Torkel Ödegaard e3bd51e38d fix: remove duplicate set-cookie when logging in, fixes #9013 2017-08-21 11:10:59 +02:00
Torkel Ödegaard 23b0795dcc ux: minor button changes 2017-08-21 11:08:58 +02:00
Torkel Ödegaard a3eaa7f178 Merge branch 'develop' into develop-newgrid-row-panels 2017-08-21 10:16:50 +02:00
Torkel Ödegaard a95d587c96 ux: minor updates 2017-08-20 21:23:41 +02:00
Torkel Ödegaard 21a7f57248 ux: changed cta button style 2017-08-20 21:16:40 +02:00
Torkel Ödegaard 3e3501b57d minor fix 2017-08-19 21:45:15 +02:00
Torkel Ödegaard cf7c65d36e ux: added scroll to two pages 2017-08-19 11:22:47 +02:00
Torkel Ödegaard 9ba2fb4889 minor fix for page-h1 2017-08-19 11:09:11 +02:00
Torkel Ödegaard afe0137c66 grid work 2017-08-18 17:39:07 +02:00
Torkel Ödegaard da9c8c814f progress on rows as panelsW 2017-08-18 16:33:36 +02:00
Torkel Ödegaard a0bb58867a Merge branch 'develop' into develop-newgrid-row-panels 2017-08-18 15:02:17 +02:00
Torkel Ödegaard dc249cf945 fixed unit tests 2017-08-18 15:01:29 +02:00
Torkel Ödegaard 011c582ebb minor user avatar stuff 2017-08-18 14:49:04 +02:00
Torkel Ödegaard 55c6b4b99c started on rows as panels in single grid 2017-08-18 13:25:51 +02:00
Torkel Ödegaard 301ae2ea05 Merge branch 'develop' into develop-newgrid-rows 2017-08-18 08:57:33 +02:00
Torkel Ödegaard d452d3ce93 minor user list cahnge 2017-08-18 08:34:10 +02:00
Torkel Ödegaard 02dc3c063c Merge branch 'develop' of github.com:grafana/grafana into develop 2017-08-18 08:17:44 +02:00
Torkel Ödegaard bb7b55277c users view update 2017-08-18 08:17:35 +02:00
Torkel Ödegaard 02bb92a126 Merge branch 'develop-ux-wip' of github.com:grafana/grafana into develop-newgrid-rows 2017-08-18 08:13:05 +02:00
Torkel Ödegaard 8817cc9aaf ux: color tweaks 2017-08-17 21:32:23 +02:00
Matt e79dbc7cec Moved around the columns a bit 2017-08-17 19:02:48 +02:00
Torkel Ödegaard 7ed2ed71f0 ux: dashboard stuff 2017-08-17 18:50:46 +02:00
Torkel Ödegaard 637ff61f90 Merge branch 'develop' into develop-newgrid-rows 2017-08-17 15:56:38 +02:00
Torkel Ödegaard 11f6c4eb28 ux: minor changes 2017-08-17 15:52:22 +02:00
Torkel Ödegaard 4e66fd72d3 ux: sidemenu animation duration 2017-08-17 15:36:50 +02:00
Torkel Ödegaard d4a231fe09 ux: fixed sidenav issues 2017-08-17 14:59:10 +02:00
Torkel Ödegaard 4dd4631b87 ux: sidemenu toggling 2017-08-17 14:00:41 +02:00
Torkel Ödegaard 6609dbff90 ux: sidenav fixes and dashboard search changes 2017-08-17 12:06:51 +02:00
ericslaw 73f0bd3b4b fix link to opentsdb templating (#9039) 2017-08-16 16:57:27 +02:00
Andrei Burd 3222677493 Datasource Print the received error (#9043) 2017-08-16 16:56:51 +02:00
Torkel Ödegaard a4da0adf38 ux: switching orgs now works through modal 2017-08-16 15:37:13 +02:00
Torkel Ödegaard 95f5c84a57 ux: making org visibile in profile view 2017-08-16 15:03:49 +02:00
Torkel Ödegaard 7f0f0eb617 ux: more nav work 2017-08-16 11:28:52 +02:00
Torkel Ödegaard 5405736321 ux: nav fixes & polish 2017-08-15 23:17:34 +02:00
Torkel Ödegaard d659a5d79f ux: more nav work 2017-08-15 20:53:31 +02:00
Torkel Ödegaard 0bc226d760 ux: more nav work 2017-08-15 20:24:16 +02:00
Torkel Ödegaard 1eab771231 ux: navigation work 2017-08-15 17:52:52 +02:00
Torkel Ödegaard db54416deb ux: sidenav fixes and dashboard search changes 2017-08-15 15:25:18 +02:00
Torkel Ödegaard 6a1075cd02 Merge branch 'develop-ux-wip' of github.com:grafana/grafana into develop-ux-wip 2017-08-15 14:49:35 +02:00
Torkel Ödegaard 63424f9866 ux: more work on sidemenu 2017-08-15 14:49:12 +02:00
Matt 9aa8648736 Silly gradient added a placeholder. no more experimentation to be done here until Trent has a pass at it 2017-08-15 14:43:10 +02:00
Torkel Ödegaard c65d92779f Merge branch 'develop-ux-wip' of github.com:grafana/grafana into develop-ux-wip 2017-08-15 11:51:55 +02:00
Torkel Ödegaard 7bf6904119 ux: scrollbar stuff 2017-08-15 11:51:47 +02:00
Matt b949f019cf Added drop shadown for sticky scrolling, moved colors into dark and light variables 2017-08-15 11:04:26 +02:00
Matt 588f35ef4f Reduced size of breadcrumbs, additional form styling. Colors still need to be adjusted 2017-08-15 10:54:13 +02:00
Matt f68dc5ca23 Starting to play with new form styles 2017-08-15 09:48:35 +02:00
Torkel Ödegaard 547c61dc1a ux: minor scroll fix 2017-08-15 09:46:38 +02:00
Torkel Ödegaard 27d6492f40 ux: removed custom scrollbar look 2017-08-15 09:10:39 +02:00
Torkel Ödegaard 521c33a7e6 ux: reduced size of sidemenu icons a bit 2017-08-14 22:47:04 +02:00
Torkel Ödegaard e81cb9c929 ux: testing fixed sidemenu and breadcrumbs 2017-08-14 22:44:01 +02:00
Torkel Ödegaard 097fa74390 ux: minor navbar update 2017-08-14 21:43:24 +02:00
Torkel Ödegaard 8aa73401a9 ux: new breadcrumb progress 2017-08-14 19:47:40 +02:00
Torkel Ödegaard 8d6a1cdbb4 ux: wip 2017-08-14 18:11:35 +02:00
Torkel Ödegaard 78ea1dc87d ux: new page header look wip 2017-08-14 16:06:20 +02:00
Torkel Ödegaard 8b87964344 ux: testing roboto font 2017-08-14 13:57:16 +02:00
Torkel Ödegaard f02be0251b ux: use flexbox for sidenav, put logo in sidenav 2017-08-14 12:26:24 +02:00
Matt Toback 020aae1427 Updated Grafana.net to .com 2017-08-14 11:05:28 +02:00
Torkel Ödegaard 1dab313ca3 Merge branch 'master' into develop 2017-08-14 10:30:36 +02:00
Torkel Ödegaard 17cb3f6e6a fix: graph fix for decimals, bug introduced by #61313478063b0e0721f204847f3c0298ea8f593f 2017-08-11 16:20:36 +02:00
Torkel Ödegaard d4dd0222fa fix: prometheus does not have two editor modes, fixes #9025 2017-08-11 12:33:56 +02:00
Torkel Ödegaard 8f2975c69b moving panels betwen rows are starting to work 2017-08-11 12:12:17 +02:00
Daniel Lee 167995776f docs: update to tag alias
ref #9024
2017-08-11 11:30:30 +02:00
Daniel Lee 02248273ae mysqlds: remove alpha state from plugin.json 2017-08-11 10:25:37 +02:00
Daniel Lee c4feef2541 docs: http api /users - corrections + adds missing method 2017-08-11 10:24:54 +02:00
Adrian Garza 5420f271f1 added CloudWatch data source API documentation
access and secret keys are base64-encoded gibberish
2017-08-10 16:03:42 -07:00
Alexander Zobnin 776e6e2c3f ace: redefine completions for prometheus and add initial docs for functions 2017-08-10 19:58:59 +03:00
Torkel Ödegaard 9f945578b8 grid: progress on row support 2017-08-10 17:17:15 +02:00
Alexander Zobnin 679ddc9696 ace: example snippet for prometheus 2017-08-10 16:49:09 +03:00
Torkel Ödegaard 61459b287c grid: new grid fixes 2017-08-10 15:29:40 +02:00
Torkel Ödegaard 7cb6093dba new-grid: fixed destory issues 2017-08-10 15:08:53 +02:00
Torkel Ödegaard 23666c0f78 grid: remove panel works 2017-08-10 14:54:56 +02:00
Daniel Lee b716a2595a mysqlds: add support for key/value template variables
If the template variable query has two columns named __text and __value
then return a list of key values. The value is used when the variable is
interpolated in the query. Allows mapping of texts to ids.
2017-08-10 14:42:27 +02:00
Alexander Zobnin d8d59fd8d4 ace: add custom behaviour for prometheus 2017-08-10 15:28:40 +03:00
Torkel Ödegaard c7959ff06e fix: Using table cell links and ad hoc filters together now works & looks correct, fixes #8052 2017-08-10 14:12:31 +02:00
Torkel Ödegaard d2437d3cf1 fix: ad-hoc filters now works with data source variables, fixes #8052 2017-08-10 12:04:46 +02:00
Alexander Zobnin b260a642e7 ace: fix broken karma tests (error loading ace.js ) 2017-08-10 12:33:53 +03:00
Alexander Zobnin e75b39376a ace: minor refactor 2017-08-10 11:53:55 +03:00
Alexander Zobnin 6b5400bdb6 ace: fix loading text snippets error 2017-08-10 11:23:32 +03:00
Torkel Ödegaard 149e694ce6 ace: prometheus completion improvements 2017-08-10 10:08:09 +02:00
Torkel Ödegaard 0b2cc404ff ace: working on editor completion stuff 2017-08-10 09:33:17 +02:00
Torkel Ödegaard b9540e4c49 ace: minor ace theme tweaks 2017-08-09 21:12:15 +02:00
Daniel Lee 43fa852cc1 mysql: change logging from into to debug for scan 2017-08-09 19:33:09 +02:00
Daniel Lee 1105bb371f mysqlds: adds support for template variables
Fixes #8855
2017-08-09 19:32:53 +02:00
Torkel Ödegaard 8356871636 grid: updated gridstack to use grafana fork 2017-08-09 16:02:00 +02:00
Torkel Ödegaard a2a4325b6e Merge branch 'develop-newgrid' of github.com:grafana/grafana into develop-newgrid 2017-08-09 15:35:06 +02:00
Torkel Ödegaard 77b42220f4 feat: new grid fixes 2017-08-09 15:33:19 +02:00
Daniel Lee 59513ff963 tempvar: bug fix for duplicate template var
and a fix for when selecting the same value twice in
a template variable if it is not multi select. It threw an
exception on the second selection
2017-08-09 14:28:23 +02:00
Torkel Ödegaard d25dae9b58 Merge branch 'master' into develop-newgrid 2017-08-09 14:07:06 +02:00
Torkel Ödegaard 459a8ed695 ace: minor changes to ace directive 2017-08-09 11:43:02 +02:00
Torkel Ödegaard 80f5c914e8 ace: removed the old text areas 2017-08-09 11:06:21 +02:00
Torkel Ödegaard 68cac6ccb5 Merge branch 'master' into ace-editor 2017-08-09 10:51:31 +02:00
Torkel Ödegaard 668cb3c1ef Merge branch 'v4.4.x' 2017-08-09 10:37:06 +02:00
Torkel Ödegaard e8a20643d6 feat: store last seen date for users and present in stats and user lists, closes #9007 2017-08-09 10:36:41 +02:00
Alexander Zobnin 5c0773023f code-editor: increase autocomplete popup size 2017-08-09 11:23:05 +03:00
Alexander Zobnin 1c8c746956 code-editor: prometheus metrics autocomplete 2017-08-09 10:58:00 +03:00
Torkel Ödegaard eac0d30e99 Merge branch 'v4.4.x' 2017-08-09 07:20:52 +02:00
Torkel Ödegaard 26ad025705 feat: added os to stats 2017-08-09 07:20:37 +02:00
Alexander Zobnin aa670244f1 code-editor: initial prometheus syntax definition 2017-08-08 22:27:47 +03:00
Chris Burkhart 3e0b92d6fe Enable datasources to be able to round off to a UTC day properly 2017-08-08 09:34:41 -07:00
Alexander Zobnin e0bbb74b0c code-editor: test editors for MySQL and prometheus 2017-08-08 18:42:26 +03:00
Alexander Zobnin 0e0e60317e code-editor: tabSize option 2017-08-08 18:41:11 +03:00
Alexander Zobnin 152c4170da code-editor: onChange option and usage docs 2017-08-08 18:31:13 +03:00
Torkel Ödegaard 1652426dfe :Merge branch 'master' of github.com:grafana/grafana 2017-08-08 17:08:49 +02:00
Torkel Ödegaard 68c4ce34d5 fix: templating issue with data source variables, can now be used right away in other query variables and panels (without page reload), fixes #7510 2017-08-08 17:08:35 +02:00
Torkel Ödegaard fec41cf038 Update CHANGELOG.md 2017-08-08 16:21:20 +02:00
Torkel Ödegaard fee1e6df41 Merge branch 'master' of github.com:grafana/grafana 2017-08-08 16:18:26 +02:00
Torkel Ödegaard addeccb4f0 Merge branch 'v4.4.x' 2017-08-08 16:18:08 +02:00
Torkel Ödegaard a47b31ac62 fix: MySQL/Postgress max_idle_conn default was wrongly set to zero, which does not mean unlimited but zero, which in practice disables connection pooling, not good. now max idle conn is set to golang's default which is 2, fixes #8513 2017-08-08 16:17:52 +02:00
Alexander Zobnin cd16db4d09 code-editor: use data- attributes for editor options 2017-08-08 16:28:51 +03:00
Daniel Lee 563795245a mysqlds: support for more column types
Includes integration test for most column types. Fixes #8918
2017-08-08 15:24:41 +02:00
Alexander Zobnin 59d1654df4 code-editor: adjust editor styles 2017-08-08 16:05:15 +03:00
Daniel Lee 2fb25d8fa4 mysqlds: add tests for new macros 2017-08-08 14:40:27 +02:00
Brad Lhotsky a8ac215039 Add a few more MySQL macros:
* $__timeFrom() -> Returns the dashboard 'from' suitable for use querying
  against a MySQL TIMESTAMP field.
* $__timeTo() -> Returns the dashboard 'to' suitable for use querying
  against a MySQL TIMESTAMP field.
* $__unixEpochFiler(column) -> If you store timestamps as UNIX epoch's,
  this builds: column > 'from' AND column < 'to'
* $__unixEpochFrom() -> Returns the dashboard 'from' suitable for use querying
  against a MySQL integer field (UNIX epochs)
* $__unixEpochTo() -> Returns the dashboard 'to' suitable for use querying
  against a MySQL integer field (UNIX epochs)
2017-08-08 14:40:27 +02:00
Alexander Zobnin eb944551c0 code-editor: add autocomplete styles 2017-08-08 15:32:23 +03:00
Alexander Zobnin 928fedaad7 code-editor: minor refactor 2017-08-08 15:19:15 +03:00
Torkel Ödegaard d3680d290c fix: graphite issue with metricFind and sending from/until in normal format, fixes #8997 2017-08-08 13:51:54 +02:00
Torkel Ödegaard 83beff300b Merge branch 'v4.4.x' 2017-08-08 11:26:45 +02:00
Torkel Ödegaard 64b5153e7d fix: change view json to use the grafana built json viewer, fixes #9002 2017-08-08 11:26:16 +02:00
Torkel Ödegaard 781dd25c82 Merge branch 'elasticsearch-filtering' 2017-08-08 11:09:00 +02:00
Torkel Ödegaard f979e95820 tablepanel: minor update to table panel, #8052 2017-08-08 11:08:51 +02:00
Torkel Ödegaard 1507c02ebb Merge branch 'feat-8539' of https://github.com/alexanderzobnin/grafana 2017-08-08 09:33:23 +02:00
Torkel Ödegaard 7c14ade623 Merge branch 'v4.4.x' 2017-08-08 09:28:41 +02:00
Torkel Ödegaard 7031f7e772 fix: sqlite3 and storing/displaying dates used wrong timezone, fixes #8996 2017-08-08 09:28:16 +02:00
Alexander Zobnin bf8171fd63 code-editor: initial autocomplete 2017-08-07 21:30:36 +03:00
Alexander Zobnin b74fe05fec code-editor: support language mode 2017-08-07 20:19:15 +03:00
Alexander Zobnin ecb66e7678 code-editor: disable depreacation warning 2017-08-07 19:43:58 +03:00
Alexander Zobnin e4dabb657c code-editor: initial directive for rich code editor (ace) 2017-08-07 19:31:50 +03:00
Torkel Ödegaard 48fa642727 Update CHANGELOG.md 2017-08-07 16:03:03 +02:00
Torkel Ödegaard 3e392ef921 ux: added minor help tip to graphite ds settings 2017-08-07 15:55:05 +02:00
Torkel Ödegaard 0e2b809f7e docker: added graphite v1.x docker block 2017-08-07 15:12:12 +02:00
Alexander Zobnin 4fe79edd40 Graphite 1.0 functions (#8987)
* graphite-ds: add graphite version to config editor

* graphite-ds: modify add-graphite-function to show only version-related functions

* graphite-ds: refactor, move func filtering to gfunc.js

* graphite-ds: add new functions for graphite 1.0.x

* graphite-ds: fix unit tests (add jsonData)
2017-08-07 15:10:59 +02:00
Alexander 35522c475f Fix #8998 by not overriding GOMAXPROCS (#8999) 2017-08-07 15:02:04 +02:00
Daniel Lee 92f71136e6 Update CHANGELOG.md 2017-08-07 13:40:25 +02:00
Daniel Lee ee835242ca Merge branch 'v4.4.x' 2017-08-07 13:14:24 +02:00
Daniel Lee def45f55da docs: update installation for version 4.4.3 2017-08-07 13:11:57 +02:00
Daniel Lee 54c79c5648 updated version to v4.4.3 2017-08-07 10:50:18 +02:00
Daniel Lee 649fe7e462 Merge branch 'v4.4.x' 2017-08-07 10:47:23 +02:00
Daniel Lee 0d25357367 build: remove downloaded pkg files after publish 2017-08-07 10:46:37 +02:00
Daniel Lee aa889e59a1 tests: fix after interface change 2017-08-07 10:20:46 +02:00
Torkel Ödegaard d285045ff6 removed unused images 2017-08-07 10:11:39 +02:00
Torkel Ödegaard 132cd36b0c Delete fav16.png
fixes #8989
2017-08-07 10:10:37 +02:00
Daniel Lee 1e5778174c login: regenerates session id on login 2017-08-07 10:00:29 +02:00
Patrick Tescher c082372ffe Add a Safari Pinned Tab Icon (#8983)
Icon adopted from grafana_icon.svg

Reference document:
https://developer.apple.com/library/content/documentation/AppleApplicati
ons/Reference/SafariWebContent/pinnedTabs/pinnedTabs.html
2017-08-07 09:39:36 +02:00
Torkel Ödegaard 4f9cfcd632 Update CHANGELOG.md 2017-08-07 09:35:32 +02:00
Torkel Ödegaard 0bd03098ea Update CHANGELOG.md 2017-08-07 09:31:31 +02:00
Torkel Ödegaard ee297487a5 Update CHANGELOG.md 2017-08-07 09:31:04 +02:00
Torkel Ödegaard 8930e04f2b Update CHANGELOG.md 2017-08-07 09:29:54 +02:00
Louis Ventre 97d1676fe8 Add time extremity with InfluxDB (#8722) 2017-08-07 09:26:32 +02:00
Jesse White f547c93a4f fix: hide modals when pressing Esc, fixes #8988 (#8994) 2017-08-07 09:23:33 +02:00
Torkel Ödegaard 95f67ed79d minor fixes 2017-08-05 08:51:57 +02:00
Torkel Ödegaard 58528a951a Merge branch 'master' of github.com:grafana/grafana 2017-08-04 14:05:00 +02:00
Torkel Ödegaard 6e0f767af7 Update CHANGELOG.md 2017-08-04 14:04:16 +02:00
Torkel Ödegaard 0a23f3dd28 Merge branch 'master' of github.com:grafana/grafana 2017-08-04 14:02:18 +02:00
Torkel Ödegaard 26766ddb27 Merge branch 'v4.4.x' 2017-08-04 14:02:01 +02:00
Torkel Ödegaard c0b0a54a8f fix: search bug where search was hidden when you click starred or tags filter links, fixes #8981 2017-08-04 14:01:09 +02:00
Torkel Ödegaard 8563e5801e updated 2017-08-04 13:46:32 +02:00
Torkel Ödegaard 957e1c188a Merge branch 'develop' into develop-newgrid 2017-08-04 13:26:05 +02:00
Torkel Ödegaard a0a2eda5c6 Merge branch 'master' into gridstack 2017-08-04 13:09:26 +02:00
Sébastien Fievet 8e618bc169 Fix some typos in alerting documentation (#8986) 2017-08-04 10:08:41 +01:00
Torkel Ödegaard de7bb8cb62 feat: new grid system progressW 2017-08-04 10:47:23 +02:00
Daniel Lee 6131347806 graph: adds decimals option for y-axis
Fixes #8187
2017-08-03 17:57:04 +02:00
Daniel Lee ef0c90b9ca graph: change tick decimal calculation for y-axis
Fixes #8872. Use the automatic calculation by Flot to get the
number of decimal places for ticks on the y-axis rather than
the number of decimal places for the min value.
2017-08-03 16:58:31 +02:00
Daniel Lee 1ce134cc6f docs: fixes #8972. Note on clustering and alerting. 2017-08-03 15:37:04 +02:00
Torkel Ödegaard eb18bfea07 ux: minor panel menu fix 2017-08-03 15:19:06 +02:00
Torkel Ödegaard d862b64b1b ux: minor panel menu tweaks 2017-08-03 13:26:30 +02:00
Torkel Ödegaard 148c24aa18 ux: tweaks to new panel menu 2017-08-03 10:35:27 +02:00
David Wittman 8f5fbb4254 Fix typo in PagerDuty notifier options template (#8978) 2017-08-03 08:57:59 +02:00
Torkel Ödegaard c7ca4830a8 Merge branch 'v4.4.x' 2017-08-03 08:56:46 +02:00
Torkel Ödegaard 1372d2e517 fix: update user permissions validation was not working properly, fixes #8977 2017-08-03 08:56:34 +02:00
Alexander Zobnin 77b7f4b376 heatmap: add unit tests for convertToCards() 2017-08-02 21:27:10 +03:00
Alexander Zobnin c7e8b98d14 heatmap: minor refactor, don't repeat cards stats calculation 2017-08-02 21:24:59 +03:00
Torkel Ödegaard 8d7186d40d Merge branch 'v4.4.x' 2017-08-02 17:33:19 +02:00
Torkel Ödegaard 3dc9d76b38 fix: viewer role fix, fixes #8976 2017-08-02 17:33:06 +02:00
Torkel Ödegaard a5bdfec0de ES: return .raw fields in field lookups, closes #8975 2017-08-02 16:52:43 +02:00
Daniel Lee b5017d1e18 docs: var in singlestat panel. Fixes #8563 2017-08-02 16:44:43 +02:00
Daniel Lee b241b98196 singlestat: fix for variable
in the prefix or postfix fields and when adding a gauge.
Previously the template variable substition was only done
when not rendering the gauge.
2017-08-02 16:40:26 +02:00
Torkel Ödegaard a5d5f3d82f feat: add ad hoc filters directly from table panel cells, kibana 3 style, #8052 2017-08-02 16:15:22 +02:00
Torkel Ödegaard c17b5d1306 table: minor table options improvement 2017-08-02 12:34:36 +02:00
Torkel Ödegaard ede827f5c0 feat: Elasticsearch change to how queries without date histogram are transformed into Grafana data stucture, now it is processed into a table structure instead of json structure 2017-08-02 12:15:39 +02:00
Torkel Ödegaard 6224a25e42 feat: Elasticsearch filtering wip, moved to typescript 2017-08-02 11:16:37 +02:00
Torkel Ödegaard 7395bbda78 Merge remote-tracking branch 'origin/master' into develop 2017-08-02 09:57:34 +02:00
Torkel Ödegaard 9fb60c2fc8 Merge branch 'develop' into panel-title-menu-ux 2017-08-02 09:56:08 +02:00
Torkel Ödegaard e312408855 updated 2017-08-02 09:22:22 +02:00
Alexander Zobnin f7ea08dba7 heatmap: fix rendering tests 2017-08-01 16:51:55 +03:00
Phil Porada 814d164e5b Typo fix (#8966) 2017-08-01 14:44:57 +01:00
Alexander Zobnin 663a3293ee heatmap: some legend fixes 2017-08-01 16:23:01 +03:00
Alexander Zobnin b01a4e6583 heatmap: use the same color for selection as for graph 2017-08-01 16:21:40 +03:00
Alexander Zobnin f64ebf538c heatmap: minor legend fixes 2017-08-01 15:25:52 +03:00
Alexander Zobnin 91a921e12d heatmap: add show legend option 2017-08-01 14:07:52 +03:00
Alexander Zobnin e72baca4a7 heatmap: fix black selection area 2017-08-01 13:54:09 +03:00
Alexander Zobnin 2aa26c98b6 heatmap: initial legend 2017-08-01 13:53:16 +03:00
Torkel Ödegaard 21a3f443f2 Merge branch 'master' into panel-title-menu-ux 2017-08-01 11:43:00 +02:00
Torkel Ödegaard ae3e869d70 updated download links in docs 2017-08-01 10:18:48 +02:00
Torkel Ödegaard deab5a54bf Merge branch 'master' of github.com:grafana/grafana 2017-08-01 09:49:37 +02:00
Torkel Ödegaard ecfe28d7ac packaging: added strech to publish script, closes #8737 2017-08-01 09:49:26 +02:00
Torkel Ödegaard 9fb22ef86c Update CHANGELOG.md 2017-08-01 09:44:45 +02:00
Torkel Ödegaard 5d2054323b Merge branch 'aws-instance-attribute-tags' of https://github.com/paco3346/grafana into paco3346-aws-instance-attribute-tags 2017-08-01 09:38:58 +02:00
Torkel Ödegaard 1e4b0f01d6 Merge branch 'v4.4.x' 2017-08-01 09:18:39 +02:00
Torkel Ödegaard 6d9cbdd59e updated version to v4.4.2 2017-08-01 09:14:49 +02:00
Torkel Ödegaard c4eadb576e fix: graphite bug fix introduced in recent commit 2017-07-31 22:39:56 +02:00
Torkel Ödegaard 7de1c0eaa2 Update CHANGELOG.md 2017-07-31 22:37:11 +02:00
Torkel Ödegaard 73a1a262ef Merge branch 'v4.4.x' 2017-07-31 22:33:36 +02:00
Torkel Ödegaard e9989cb690 fix: make it easier to close search by clicking outside result container, fixes #8848 2017-07-31 22:33:22 +02:00
Torkel Ödegaard 0fcc87010a fix: cloudwatch fix for templating namespace argument to metrics tempalting function, fixes #8965 2017-07-31 22:30:49 +02:00
Mitsuhiro Tanda 91a533d948 (cloudwatch) high resolution custom metrics (#8958)
* support 1 second resolution Custom Metrics

* upgrade to aws-sdk-go v1.10.18

* simplify period calculation

* add test

* fix period calculation bug
2017-07-31 21:19:19 +02:00
squain ede6d71e72 Fix typo in alert_howto.html (#8964) 2017-07-31 21:16:39 +02:00
Torkel Ödegaard 4d82a1076a Create CODE_OF_CONDUCT.md (#8960) 2017-07-31 17:31:05 +02:00
Torkel Ödegaard 44fbd3ec9f feat: calls to Graphite api /metrics/find now include panel or dashboard time ranges in some scenarios, closes #8055 2017-07-31 17:21:25 +02:00
Alexander Zobnin c79a68dcd1 heatmap: refactor, build cards before rendering 2017-07-31 18:15:03 +03:00
Alexander Zobnin 55b24be115 heatmap: refactor, directive for color legend 2017-07-31 17:45:05 +03:00
Torkel Ödegaard bf7516d9bf Update CHANGELOG.md 2017-07-31 16:06:29 +02:00
Torkel Ödegaard 81dc64d4ec Update CHANGELOG.md 2017-07-31 16:05:56 +02:00
Torkel Ödegaard c7c5730c40 Merge branch 'v4.4.x' 2017-07-31 16:04:31 +02:00
Torkel Ödegaard 34cda65998 fix: png rendering api & timeout parameter now works as it should AND default render timeout increased from 30 to 60 seconds, fixes #8710 2017-07-31 16:04:04 +02:00
Torkel Ödegaard 61d8eb1fac Merge branch 'v4.4.x' 2017-07-31 15:07:22 +02:00
Torkel Ödegaard d630f3d59e Merge branch 'external-user-mng' into v4.4.x 2017-07-31 15:07:01 +02:00
Torkel Ödegaard 06e87c151f feat: added settings to sample ini #8768 2017-07-31 15:04:47 +02:00
Torkel Ödegaard 73563d087c feat: more work on #8768 2017-07-31 14:39:33 +02:00
Torkel Ödegaard 23558c61d4 feat: wip work on #8768 2017-07-31 13:03:42 +02:00
Alexander Zobnin ef9dd014c7 heatmap: add color scale options, issue #8539 2017-07-31 14:03:03 +03:00
Torkel Ödegaard 5406481e7b Update CHANGELOG.md 2017-07-31 12:17:46 +02:00
Torkel Ödegaard 510ad001b4 Update CHANGELOG.md 2017-07-31 12:16:29 +02:00
Dave Hall 0c70d271dc Support large github organisations (#8846)
* Add new HttpGetResponse struct type
* Modify HttpGet() return to use HttpGetResponse
* Look up _all_ the teams the user is a member of
2017-07-31 12:13:29 +02:00
Cedric Cellier 417c5163dd Fix typos (#8954)
Some being user visible.
2017-07-31 12:12:28 +02:00
Fredrik Wendt 5542309170 fixed incorrect header text (#8952)
Status code now replaced with Query parameters
2017-07-29 15:34:22 +01:00
Fredrik Wendt 6b344d0158 removed incorrect HTTP response data (#8949)
the example response body contained incorrect out-of-place data, presumably from a copy-paste operation
2017-07-28 09:25:30 +02:00
Daniel Lee 22758d5112 Merge branch 'v4.4.x' 2017-07-27 14:40:33 +02:00
Daniel Lee 7b768bca3f singlestat: change threshold check in flot gauge
Fixes #5515. Flot gauge has its own threshold check that is different
from the threshold check in singlestat. This changes the flot check to
be exclusive (same as the singlestat check). E.g. if the threshold is
10, then the value 10 is over the threshold.
2017-07-27 14:34:29 +02:00
amitkumar912 c4683f1ae8 Opentsdb datasource labeling fix (#8929)
* Fix Labeling issue when hiding Queries.

Issue #8928

* Fix spacing.

* Replacing tabs with spaces.

* Fix for jshint
2017-07-26 21:27:42 +02:00
Alexander Zobnin cb8ecb2d5f Heatmap fixes (adapted for v4.4.x branch) (#8920)
* heatmap: fix converting error when series contains 0 and log scale is selected, issue #8884

* heatmap: fix app crash when Y min set to 0 with log scale

* heatmap: fix tooltip for 'zero' buckets in log scale

* heatmap: fix tooltip histogram for log scales

* heatmap: fix flicker of the highlighted element

this was caused by too often fired mouseenter/mouseleave events

* heatmap: fix missing X axis option for log scales

* heatmap: fix missing zero bucket in tooltip histogram
2017-07-25 16:28:29 +02:00
Torkel Ödegaard ce4939bd56 Update CHANGELOG.md 2017-07-24 12:40:35 +02:00
Torkel Ödegaard d46fd890a5 Merge branch 'v4.4.x' 2017-07-24 12:38:39 +02:00
Torkel Ödegaard 8ca08d65e7 docs: updated configuration docs with new defaults, #8743 2017-07-24 12:37:58 +02:00
Torkel Ödegaard f5ed5c6529 settings(change): changed default value for allow sign up to false, closes #8743, and changed default option allow_org_create to false 2017-07-24 12:36:42 +02:00
Torkel Ödegaard 9825cd1ebb Update CHANGELOG.md 2017-07-24 12:32:22 +02:00
Torkel Ödegaard 0f33ac9e10 Merge branch 'master' of github.com:grafana/grafana 2017-07-24 12:30:43 +02:00
Torkel Ödegaard 24a79a6bea Merge branch 'v4.4.x' 2017-07-24 12:30:28 +02:00
Torkel Ödegaard 723f5bc9e8 fix: dsahboard_version data column type changed to MEDIUMTEXT, fixes #8813 2017-07-24 12:30:13 +02:00
Torkel Ödegaard 287c222fc7 Update CHANGELOG.md 2017-07-24 12:25:49 +02:00
Torkel Ödegaard 6956110497 Merge branch 'master' of github.com:grafana/grafana 2017-07-24 12:23:33 +02:00
Torkel Ödegaard f500dfd1e5 Update CHANGELOG.md 2017-07-24 12:23:07 +02:00
Torkel Ödegaard cd0e1a8978 Merge branch 'v4.4.x' 2017-07-24 12:21:43 +02:00
Torkel Ödegaard 2d2800e710 fix: url did not update correctly when closing settings view by using ESC key, fixes #8869 2017-07-24 12:21:30 +02:00
Daniel Lee 4a678c2884 influxdb: fix for adding math query part
Fixes #8870. Fixes out of bound exception on adding a math query part
when there is no group by interval (or only one query part).
2017-07-22 01:31:26 +02:00
Nicholas Nadeau 1a25b78ef2 homogenized docker run command (#8907)
There are three locations where the `docker run` command is referenced:
- 2x http://docs.grafana.org/installation/docker/
- 1x https://grafana.com/grafana/download?platform=docker

The fix syncs the given `docker run` command arguments with the other two.
2017-07-21 21:46:54 +02:00
Kakuya Ando bbfdfc012f fix(prometheus) when tag value duplicate, tags not working. (#8040) 2017-07-21 09:51:25 +02:00
Mitsuhiro Tanda b16b649c9b (cloudwatch) add new elb metrics (#8894) 2017-07-20 14:12:56 +02:00
Mitsuhiro Tanda 9d50ab8fb5 (cloudwatch) check auth type before assume role (#8895) 2017-07-20 14:11:51 +02:00
Alexander Zobnin af56cc4c28 Panel Alertlist: use dashboard timezone (#8880)
* panel-alertlist: use dashboard timezone, fixes #8874

* alert state history: use dashboard timezone, issue #8874

* alert state history: minor refactor
2017-07-19 20:45:57 +02:00
Mitsuhiro Tanda e8157f01ec add new dashboard shortcut 2017-07-19 17:54:34 +09:00
Mitsuhiro Tanda aecc6860e3 set focus on text field when opening panel/query editor (#8879)
* (prometheus) set focus to top expression when opening editor

* (text panel) set focus to top expression when opening editor
2017-07-19 10:33:04 +02:00
Alexander Zobnin 9bbc942534 table-panel: clickable cell link - draft (#8738)
* table-panel: clickable cell link - draft

* table-panel: clickable cell link - fix link target option

* table-panel: fix undefined columnStyle.link

* table-panel: option to highlight cell with link

* table-panel: render variables for all cells in row

* table-panel: remove cell highlighting

* table-panel: add help for URL field

* linkPopover directive for link info in table panel

* table-panel: add link info popover to cells

* table-panel: use native popover instead directive

* table-panel: link drop refactor, remove unused code

* table-panel: fix unclickable link when drop is opened

* refactoring: minor refactoring to #8738, do not think we need a full blown popover for the links, simple tooltip is enough and more efficient, sadly we do not have a modern tooltip framework, still using old bootstrap 2.3 tooltip

* table-panel: add tests for link rendering
2017-07-18 20:59:34 +02:00
Torkel Ödegaard 13c966c178 Update CHANGELOG.md 2017-07-18 20:59:16 +02:00
Alexander Gängel 4073949af0 add templating for prometheus monitoring other promethues (#8845) 2017-07-18 19:52:29 +02:00
Mitsuhiro Tanda a6920eb2ff (prometheus) replace each by for (#8881) 2017-07-18 19:50:44 +02:00
Mitsuhiro Tanda 32f9a42d5e Fix performance degradation by always setting fill = 0.001 (#8868)
* add benchmark

* fix, prevent plotLineArea() call if fill == 0

* remove benchmark
2017-07-17 20:50:58 +02:00
Daniel Koehler c5f6cf0809 fix for wrong locale and text issues #8840 (#8854)
fixes https://github.com/grafana/grafana/issues/8840
by setting a default locale. Also uses fromNow(true) to work arround the replace.
2017-07-14 21:58:27 +02:00
Matt Toback a045f175b6 Fixed typo 2017-07-14 12:20:04 -04:00
Adam Johnson 17d57ab074 docs(testdata): add missing word (#8856) 2017-07-13 19:52:59 +02:00
Torkel Ödegaard 74984f8da6 Update latest.json 2017-07-12 10:19:02 +02:00
Torkel Ödegaard e4950c2dc1 fix: elasticsearch with template variable with terms agg on IP field, fixes #8662 2017-07-12 07:43:30 +02:00
bergquist 4844bf9be3 docs(prometheus): updates invalid template example 2017-07-12 07:37:44 +02:00
ajrnz 43974898c1 Interpolate the field property in elastic search term queries (#8663)
* Interpolate the field property in elastic search term queries

* more defensive interpolation of query.field in ES templates
2017-07-12 07:25:56 +02:00
Torkel Ödegaard bb3bcbe6a1 fix: for issue in graph panel axes labels when iframe embedding, fixes #8827 2017-07-12 07:12:05 +02:00
gomlgs 228c210379 Cloudwatch: Fix bug with obtaining IAM roles within ECS containers. (#8766)
Fixes #8750.
2017-07-12 06:55:59 +02:00
Alexander Gängel 92937c591f upgrade grunt-sass to 2.0.0 (#8808) 2017-07-12 06:55:15 +02:00
Denis Doria 89822acf38 More precise detection for self reference variable on templates (#8814)
This should close the bug #8773
2017-07-12 06:54:32 +02:00
Moody Saada 2d99518f90 Update annotations.md typo (#8830) 2017-07-12 06:53:28 +02:00
Alin Sinpalean 5bffdfe9a4 When converting Prometheus results to table, handle the case where the returned series have non-uniform sets of labels. (#8826) 2017-07-12 06:52:59 +02:00
Liang Jiameng f8d22385ce add a placeholder to DingTalk Url (#8820) 2017-07-10 16:51:03 +02:00
Daniel Lee 1dedc886f2 docs: DingDing notifier 2017-07-10 12:22:21 +02:00
Daniel Lee 1ccfca109f docs: instructions for DingDing notifier 2017-07-10 12:16:40 +02:00
Daniel Lee 68e7219135 docs: add missing parameter api call 2017-07-09 02:00:50 +02:00
Daniel Lee 3a075be7e9 cloudwatch: make dimension text in alias popover clearer 2017-07-07 18:17:05 +02:00
Daniel Lee fc82de1543 docs: style fix 2017-07-07 13:00:13 +02:00
Daniel Lee c296e73b83 docs: x-axis mode for graph panel 2017-07-07 12:25:42 +02:00
0x6875790d0a a622c55b1b (feat) Add image to LINE notify (#8771) 2017-07-07 11:20:27 +02:00
Daniel Lee e6f9546a7c api: add no cache headers for IE11
Adds pragma and expires headers for API calls so that IE11 does not
cache GET calls. Ref #5356
2017-07-06 18:56:22 +02:00
Daniel Lee fe3bcd3678 Merge branch 'v4.4.x' 2017-07-06 10:11:07 +02:00
Torkel Ödegaard cff1c37064 fix: InfluxDB direct access with normal inflxudb credentials was not sent correctly, fixes #8789 2017-07-06 09:46:31 +02:00
Torkel Ödegaard e5b499a958 fix: Text area css issue prevented scrolling, fixes #8797 2017-07-06 09:36:57 +02:00
Torkel Ödegaard 1994b767d3 fix: InfluxDB direct access with normal inflxudb credentials was not sent correctly, fixes #8789 2017-07-05 22:15:28 +02:00
Daniel Lee eca11e862e docs: update for panel sharing options 2017-07-05 22:14:04 +02:00
Min-Zhong "John" Lu fbff905c57 Fix broken table row in prometheus.md (#8779)
"Metric Lookup" row in Query editor was broken :(
2017-07-05 22:14:03 +02:00
Daniel Lee a4266319ad packaging: v4.4.1 2017-07-05 22:14:03 +02:00
Daniel Lee 49113c1ccb Add v4.4.1 patch release 2017-07-05 22:14:03 +02:00
Daniel Lee 6d4c29ea9b migrations: dashboard version migration handles nulls
If a dashboard has a null value for updated_by then the migration
for the dashboard version table fails. This change uses coalesce to
set -1 instead of null when inserting into the created_by column
which has a non-null constraint. Fixes #8783.
2017-07-05 22:14:03 +02:00
Daniel Lee ab53b05c39 docs: fixes #8785 2017-07-05 22:14:03 +02:00
Daniel Lee ba1c79b7a8 package.json to v5.0.0-pre1 2017-07-05 22:14:03 +02:00
Daniel Lee de9ebc9a74 packaging: updates for v4.4.0 2017-07-05 22:12:51 +02:00
Daniel Lee 9341412acc release: v4.4.1 2017-07-05 22:06:00 +02:00
Daniel Lee 16cda723d3 migrations: dashboard version migration handles nulls
If a dashboard has a null value for updated_by then the migration
for the dashboard version table fails. This change uses coalesce to
set -1 instead of null when inserting into the created_by column
which has a non-null constraint. Fixes #8783.
2017-07-05 22:06:00 +02:00
Daniel Lee 36a1ab48c5 packaging: updates for v4.4.0 2017-07-05 22:04:27 +02:00
Daniel Lee 3583057155 release: v4.4.0 2017-07-04 23:42:22 +02:00
Jesse White 1940b33dc1 fix: handling of http errors without any data (#8777) 2017-07-04 22:55:13 +02:00
Daniel Lee d20455ab5f changelog: note for histogram fix 2017-07-04 22:45:33 +02:00
Alexander Zobnin 934c0fea6f histogram: improved ticks rendering 2017-07-04 21:49:57 +02:00
Alexander Zobnin c1c1bcb874 histogram: don't cut negative values, issue #8628 2017-07-04 21:49:09 +02:00
Daniel Lee 1da98f5e1e Revert "Histogram fix (#8727)"
This reverts commit 8634c9d457.
2017-07-04 21:48:39 +02:00
Daniel Lee 74093c700f api: adds no-cache header for GET requests
Fixes #5356. Internet Explorer aggressively caches GET requests which
means that all API calls fetching data are cached. This fix adds a
Cache-Control header with the value no-cache to all GET requests to
the API.
2017-07-04 21:26:05 +02:00
Daniel Lee f773a9b4c3 docs: small change 2017-07-04 21:17:43 +02:00
Daniel Lee 205be91a84 changelog: note for DingDing notifier 2017-07-04 15:25:44 +02:00
Liang Jiameng 109fd998ed Add a new notifier : DingTalk (#8473)
* add alerting notifier: DingDing

* add alerting notifier: DingDing

* add dingding unit test

* add dingding unit test

* delete debug code & format code style.

* fix build failed: dingding_test.go
2017-07-04 15:16:32 +02:00
Daniel Lee a5afd8152d docs: small update 2017-07-03 21:32:12 +02:00
Daniel Lee 3ae5f7c632 docs: built-in variables, $__interval
Fixes #8344. Documents the $__interval, $__interval_ms and $timeFilter
variables.
2017-07-03 20:44:19 +02:00
Daniel Lee a71423481b changelog: update 2017-07-03 18:07:51 +02:00
Daniel Lee 20a2334c87 docs: spelling 2017-07-03 14:47:54 +02:00
Ben Tranter 6f4c7a4d65 Add dashboard version history documentation (#8741)
Adds docs for the new API endpoints, and for the dashboard history feature.
2017-07-03 14:29:30 +02:00
Torkel Ödegaard e269b3b2a0 Merge branch 'refactor-basic-diff' of https://github.com/walmartlabs/grafana into walmartlabs-refactor-basic-diff 2017-07-03 09:49:53 +02:00
Alexander Zobnin 1499c2bf74 Fix User/Org default timezone bug (#8748)
* dashboard: don't override timezone if default selected, issue #8503

* dashboard: hide UTC icon immediately after timezone changing
2017-07-03 09:20:55 +02:00
Daniel Lee b8aa203707 signup: fix email sent logic for tempuser
Fixes #8656 and properly sets the email_sent and email_sent_on fields
for a tempuser (signup user).
2017-06-30 20:21:08 +02:00
Ben Tranter 1fd7b60efe Add more information to basic diff logic 2017-06-29 14:38:48 -04:00
Daniel Lee fb99ddf295 influxdb: tweak to help text 2017-06-29 13:58:54 +02:00
Daniel Lee 8683aff3e9 appveyor: build fix for go tests 2017-06-29 12:19:57 +02:00
Daniel Lee 7ea5930a90 alerting: minor fix 2017-06-29 12:18:10 +02:00
Alexander Zobnin 97a7081b57 Fix 8706 (#8734)
* heatmap: fix incorrect time for UTC timezone, fixes #8706

* heatmap: fix tests for time format
2017-06-29 10:40:28 +02:00
Alexander Zobnin 8634c9d457 Histogram fix (#8727)
* histogram: don't cut negative values, issue #8628

* histogram: add percent/count option

* histogram: add tests for values normalizing

* histogram: improved ticks rendering

* histogram: fix default value in axes editor
2017-06-28 17:12:55 +02:00
Daniel Lee 3ac306a72e playlist: fixes #6727. Remember Kiosk mode 2017-06-28 16:29:46 +02:00
Daniel Lee 91ad260517 build: on windows, ignore linux packaging 2017-06-28 09:35:33 +02:00
Daniel Lee 8973b48f96 setting: add tests for windows 2017-06-28 09:35:33 +02:00
Daniel Lee 1a61d2814c docs: updates to build from source 2017-06-28 09:35:33 +02:00
Daniel Lee b674b9dba2 heatmap: small fix for tooltip auto decimals
Closes #8717
2017-06-27 22:25:04 +02:00
Alexander Zobnin 83fbace6b9 heatmap: fix tooltip decimals calculation 2017-06-27 22:24:27 +02:00
Alexander Zobnin 12644372c4 heatmap: fix scaledDecimals calculation (use the same method as in flot.js) 2017-06-27 22:24:27 +02:00
Alexander Zobnin c12a7d7f59 heatmap: adjust tests for fixed decimals calc 2017-06-27 22:24:27 +02:00
Alexander Zobnin 7c840cdf38 heatmap: fix tooltip decimals 2017-06-27 22:24:27 +02:00
Alexander Zobnin b63d2b3279 heatmap: fix Y axis decimals with log scale 2017-06-27 22:24:27 +02:00
Alexander Zobnin 8e5672aee6 heatmap: fix Y axis value rounding with linear scale 2017-06-27 22:24:27 +02:00
Daniel Lee 53ea9cfbcf docs: update ha_setup with alerting deduping 2017-06-27 16:59:40 +02:00
Alexander Zobnin 1deeef9e91 Table panel: add option for preserving text formatting (#8708)
* table_panel: add option for preserving text formatting

* table_panel: fix undefined style error

* table_panel: fix class adding (add space before 'class')

* table_panel: aligin Type options labels
2017-06-27 06:38:49 -04:00
Daniel Lee 10127e8ac9 docs: small updates 2017-06-26 17:42:50 +02:00
Louis Law 8c8b1dde8a [fix] fix minor issue in gitignore file. (#8694) 2017-06-25 11:34:23 -04:00
Denis Doria e8d01218d8 Fix label showing up when Axes are configured to not be displayed (#8697)
This should close the issue #8695
2017-06-25 14:23:37 +02:00
Denis Doria 5aac2d2078 Include user Id on the lookup api (#8698)
Implements feature request #8682
2017-06-25 14:23:03 +02:00
Daniel Lee ebcbcdc27a dashfolders: inherited permissions for dashboards
Allow duplicate permissions if the original is an
inherited permission from a parent folder.

If a dashboard has permissions but the parent folder
does not, return the default permissions for the
editor and view role combined with the permissions
for the child dashboard.
2017-06-24 03:50:22 +02:00
Daniel Lee 86a7266f5f dashfolders: handle permission changes when saving/moving dashboards 2017-06-23 23:31:58 +02:00
Torkel Ödegaard 3066280216 added code from #8504, and #8021 2017-06-23 17:13:58 -04:00
Torkel Ödegaard 1833c65559 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-06-23 16:07:16 -04:00
Torkel Ödegaard fc69d59cae dashboard folder search fix 2017-06-23 16:00:26 -04:00
Daniel Lee 01ac3a49bd dashfolders: fix user group picker + cleanup 2017-06-23 20:56:02 +02:00
Torkel Ödegaard 456225365f Merge branch 'develop' of github.com:grafana/grafana into develop 2017-06-23 12:59:14 -04:00
Torkel Ödegaard e854fadb67 Merge branch 'master' into develop 2017-06-23 12:56:59 -04:00
Torkel Ödegaard 60da730c95 mysql: fix for TIME columns, fixes #8534 2017-06-23 12:55:40 -04:00
Daniel Lee c6965ce6f4 dashfolders: rename refactor 2017-06-23 18:00:49 +02:00
Torkel Ödegaard 73fcc919cd change: made dashboard save message optional 2017-06-23 11:49:32 -04:00
Torkel Ödegaard be29357d22 fix: added missing url route for annotation state history delete, fixes #8660 2017-06-23 11:48:58 -04:00
Daniel Lee 97ff245ad0 dashfolders: validation for duplicates in acl modal 2017-06-23 17:45:55 +02:00
Torkel Ödegaard 86a73c359b fix: data source selector did not show, fixes #8692 2017-06-23 11:32:17 -04:00
Torkel Ödegaard ff4a79df06 minor update 2017-06-23 11:01:55 -04:00
Torkel Ödegaard b7255723ea ux: style tweaks, trying out non italic headers 2017-06-23 09:18:39 -04:00
Torkel Ödegaard 876bb08b05 Merge branch 'develop' of github.com:grafana/grafana into develop 2017-06-22 19:05:49 -04:00
Torkel Ödegaard 5360303ad4 ux: nav changes 2017-06-22 19:05:33 -04:00
Torkel Ödegaard 12270022e3 added sidemeu stuff 2017-06-22 18:41:39 -04:00
Daniel Lee 6d86afd472 dashfolders: use canadmin permission in settings menu 2017-06-23 00:36:17 +02:00
Daniel Lee 82cfa29c00 dashfolders: tests for permission modal 2017-06-23 00:36:08 +02:00
Ben Tranter a3d22ae9c7 Document logic behind basic diff 2017-06-22 18:23:31 -04:00
Torkel Ödegaard a4910c7aea merging new-sidenav 2017-06-22 18:11:29 -04:00
Ben Tranter b54b43a42e Add tests for diff formatters 2017-06-22 18:08:37 -04:00
Torkel Ödegaard aa634402d9 dashboard acl fixes 2017-06-22 17:43:55 -04:00
Torkel Ödegaard 545b02139d Merge branch 'dashboard_folders' of github.com:grafana/grafana into dashboard_folders 2017-06-22 17:11:39 -04:00
Torkel Ödegaard 9c6c8c0f3f acl fixes 2017-06-22 17:10:43 -04:00
Daniel Lee 1d43bfbf3f dashfolders: new admin permission needed to view/change acl 2017-06-22 23:01:04 +02:00
Torkel Ödegaard f6b52cd6d7 Merge branch 'dashboard_folders' of github.com:grafana/grafana into dashboard_folders 2017-06-22 15:16:57 -04:00
Torkel Ödegaard a82b25eb79 acl: more acl work 2017-06-22 15:16:41 -04:00
Daniel Lee 46c5625b59 dashfolders: filter search based on child dash permissions 2017-06-22 20:10:49 +02:00
Daniel Lee 446104d120 dashfolders: allows phantomjs rendering for alerting
Makes the alerting user an admin when rendering a png
for emails
2017-06-22 02:43:33 +02:00
Daniel Lee 691ff32ae9 dashfolders: allow overflow-y for modals 2017-06-22 02:07:49 +02:00
Daniel Lee f68d2816ab dashfolders: security for png rendering 2017-06-22 01:23:48 +02:00
Torkel Ödegaard 659a59107e dashboard acl stuff 2017-06-21 19:23:24 -04:00
Torkel Ödegaard 2257c1f874 dashboard acl work 2017-06-21 19:02:03 -04:00
Torkel Ödegaard aab6c98e45 Merge branch 'dashboard-acl' into dashboard_folders 2017-06-21 17:57:57 -04:00
Torkel Ödegaard a37c441193 dashboard acl 2017-06-21 17:57:04 -04:00
Torkel Ödegaard 945302ba52 working on dashbord acl stuff 2017-06-21 17:14:06 -04:00
Daniel Lee 1e064f6c19 WIP: first draft of permissionlist panel
for folder home page
2017-06-21 22:28:10 +02:00
Torkel Ödegaard 48305b5789 dashboard acl 2017-06-21 14:19:08 -04:00
Torkel Ödegaard fcc8557dbb dashboard acl work 2017-06-21 14:11:16 -04:00
Haidara Mohamed El Mouctar bc6a57ce32 [Docs] Add documentation for max_idle_conn and max_open_conn (#8675) 2017-06-21 10:41:56 -04:00
Daniel Lee 38142b371f WIP: fix js tests for acl 2017-06-21 01:19:30 +02:00
Daniel Lee ca1f429831 WIP: fix folder-picker for dashlist 2017-06-21 01:07:14 +02:00
Torkel Ödegaard 43ffe826fa dashboard acl work 2017-06-20 17:18:20 -04:00
Torkel Ödegaard 408c37170f refactoring: dashboard folders 2017-06-20 14:45:00 -04:00
Torkel Ödegaard 3edd209736 dashboard acl modal 2017-06-20 12:36:07 -04:00
Daniel Lee 2479e51a6b mysql: Null value should not be considered as previous value
fixes #8655
2017-06-20 02:02:05 +02:00
Torkel Ödegaard 2a93bed453 ux: aligned tabbed view body with header title 2017-06-19 19:22:44 -04:00
Daniel Lee cb8b5c0d42 WIP: adding roles - not finished 2017-06-20 01:08:04 +02:00
Torkel Ödegaard 212a66ae5f Merge branch 'dashboard_folders' of github.com:grafana/grafana into dashboard_folders 2017-06-19 18:55:34 -04:00
Torkel Ödegaard 93bc588dae refactoring: moving dashboards acl migrations to its own folder 2017-06-19 18:48:15 -04:00
Daniel Lee 812112f2f6 WIP: fix acl route 2017-06-20 00:34:25 +02:00
Torkel Ödegaard e290015887 refactoring: renaming 2017-06-19 18:19:58 -04:00
Torkel Ödegaard aaf2a897b0 folders: changed api urls for dashboard acls 2017-06-19 18:11:30 -04:00
Torkel Ödegaard c4a1803060 refactoring more renaming 2017-06-19 17:30:54 -04:00
Torkel Ödegaard e0b9ba7554 refactoring renaming dashboard folder operations 2017-06-19 17:15:25 -04:00
Torkel Ödegaard 34cf305d2c Merge branch 'master' into dashboard_folders 2017-06-19 16:40:30 -04:00
Denis Doria eaba985f25 Fix issue with kilovolt-ampere reactive (kvar) #8596 (#8650)
This changes the css to handle overflow of the string on the input fields.
If an overflow happends an ellipsis is used.
2017-06-19 16:23:12 -04:00
Torkel Ödegaard 77136d7a70 Merge branch 'master' of github.com:grafana/grafana 2017-06-19 16:02:31 -04:00
Torkel Ödegaard 8440d2d0a2 fix: fixed search issues with in active mode and keyboard nav 2017-06-19 16:02:16 -04:00
Torkel Ödegaard 04da97bffb dashboard_folders refactoring 2017-06-19 15:37:22 -04:00
Torkel Ödegaard 74840178cf refactoring dashboard folder security checks 2017-06-19 15:22:42 -04:00
Torkel Ödegaard f7194878fe dashboard guardian refactoring starting to work 2017-06-19 13:47:44 -04:00
Torkel Ödegaard d6341162cb refactoring dashboad folder acl checks 2017-06-19 11:54:37 -04:00
Torkel Ödegaard b494fd7689 dashboard folders acl work 2017-06-19 11:03:54 -04:00
Denis Doria 41d300f69d Fix timeInterval for mysql datasource (#8651)
* Fix timeInterval for mysql datasource

This changes the > to >= and the < to <=, so the intervals are inclusive.
This should fix the #8635

* Fix validation
2017-06-19 08:58:22 -04:00
Alexander Zobnin 9a7e460865 fix heatmap count values bug introduced by #8632 2017-06-18 21:47:08 +03:00
Alexander Zobnin 8626bdfed8 Merge remote-tracking branch 'upstream/master' 2017-06-18 20:59:05 +03:00
Alexander Zobnin 1f4140057b heatmap-tooltip: normalize histogram Y axis 2017-06-18 20:58:13 +03:00
Torkel Ödegaard cbbbccf12a refactoring dashoard folder guardian 2017-06-17 18:24:38 -04:00
Daniel Lee d1e1c4be93 WIP: refactor user group modal 2017-06-18 00:16:33 +02:00
Daniel Lee 0eb297822c httpserver: fixes #8641
Changes to the http_server class meant that the TLS settings were not
getting applied anymore. This fixes so that the minimum TLS version is
1.2 again.
2017-06-17 23:10:12 +02:00
Daniel Lee ad080af38f docs: add tutorial for using API 2017-06-17 20:59:19 +02:00
Salman Jalali 49fdbb3843 Update kbn.js 2017-06-17 06:08:10 +02:00
Torkel Ödegaard 3fe031d25d refactoring: Dashboard guardian 2017-06-16 21:25:24 -04:00
Daniel Lee 5cf63e3726 WIP: remove unused test file 2017-06-17 03:21:08 +02:00
Daniel Lee d89c1260c6 WIP: refactor dash search and remove extra query 2017-06-17 03:00:13 +02:00
Daniel Lee 5cf40cbd12 WIP: move guardian logic for search into the sql query 2017-06-17 02:34:05 +02:00
Daniel Lee 84ff62d773 WIP: remove dashboard children on delete 2017-06-17 02:34:05 +02:00
Torkel Ödegaard d9dca72ee4 dashboard_folders: refactoring picker and folder selection in dashboard settings & save as menu 2017-06-16 16:57:37 -04:00
Torkel Ödegaard 5b35a21d6f Merge branch 'dashboard_folders' of github.com:grafana/grafana into dashboard_folders 2017-06-16 14:56:46 -04:00
Torkel Ödegaard 0ad4a0faa9 Merge branch 'master' into dashboard_folders 2017-06-16 13:08:45 -04:00
Torkel Ödegaard 724368d0cd fix: data source dropdown select 2017-06-16 11:43:37 -04:00
Torkel Ödegaard 25f88e9b3a Merge branch 'master' of github.com:grafana/grafana 2017-06-16 10:47:53 -04:00
Torkel Ödegaard 39ffb04be1 Merge branch 'revert-dashboard-search-nav' 2017-06-16 10:47:28 -04:00
Torkel Ödegaard 056c57d551 ux: temporary remove search 2017-06-16 10:47:17 -04:00
Brandon Arp 5d63ad21c1 allow heatmap parsing of scaled datapoints (#8632) 2017-06-16 10:45:52 -04:00
Torkel Ödegaard a49e82e447 ux: revert dashboard search nav change, this is a tempoary change until we redesign the sidenav 2017-06-16 09:47:21 -04:00
Daniel Lee dd02bf7c9b WIP: adds API check to stop folders being included in folders 2017-06-16 02:45:47 +02:00
Torkel Ödegaard 7a39578f33 use gf-form-dropdown in user picker 2017-06-15 16:38:00 -04:00
Torkel Ödegaard e63fa9c83c Merge branch 'master' into dashboard_folders 2017-06-15 16:23:10 -04:00
Torkel Ödegaard e9c8881d54 Merge branch 'metric-segment-remake' 2017-06-15 15:56:41 -04:00
Torkel Ödegaard 840099bec0 refactor: metric segment remake 2017-06-15 15:56:24 -04:00
Daniel Lee 29ec05298e WIP: add test for add user group permission 2017-06-15 20:39:27 +02:00
Daniel Lee 0e853163fd WIP: can edit dashboard permission 2017-06-15 20:21:14 +02:00
Daniel Lee 9e7aa65fb7 WIP: clean up after user and org user delete 2017-06-15 20:19:54 +02:00
Torkel Ödegaard 76c4bfe268 ux: new metric segment is starting to work 2017-06-15 14:03:26 -04:00
Torkel Ödegaard 5f3b5fdcb2 updated 2017-06-15 12:21:12 -04:00
Torkel Ödegaard 6a95df403a refacoring: more work on metric segment replacement 2017-06-14 19:42:45 -04:00
Daniel Lee 699f9095e2 WIP: remove permissions when deleting global user 2017-06-14 23:45:30 +02:00
Torkel Ödegaard 380e7e7f04 Merge branch 'master' into metric-segment-remake 2017-06-14 16:17:13 -04:00
Torkel Ödegaard 41662b8540 dashboard_folders: updated 2017-06-14 12:55:21 -04:00
Daniel Lee 222a938cdf WIP: delete dependent permissions on user group delete 2017-06-14 18:40:08 +02:00
Torkel Ödegaard 210813f126 dashboard_folders: fixes to user picker & group picker 2017-06-14 12:32:43 -04:00
Torkel Ödegaard 908eb24d3a dashboard_folders: fixes to user & group picker 2017-06-14 12:21:05 -04:00
Torkel Ödegaard 3e8937e53b Merge branch 'master' into new-sidemenu 2017-06-14 10:00:43 -04:00
Torkel Ödegaard 81abfd4ca4 minor update 2017-06-14 10:00:40 -04:00
Torkel Ödegaard 581b977787 Merge branch 'master' of github.com:grafana/grafana 2017-06-13 18:32:38 -04:00
Torkel Ödegaard c771dd4bd2 ux: metrics tab add query feature 2017-06-13 18:31:43 -04:00
Daniel Lee 92717ccafb WIP: permission checking for dash version api methods 2017-06-14 00:28:34 +02:00
Daniel Lee cb720d8eaf docs: add body options for snapshot api 2017-06-13 23:17:14 +02:00
Torkel Ödegaard 9ff4ab1236 Merge branch 'master' into query_troubleshooting 2017-06-13 16:47:04 -04:00
Daniel Lee 1f92e589e8 exporter: query template var keeps refresh value..
on export if the value is not set to never. Otherwise the template
variable will not be populated with any values.""
2017-06-13 22:42:58 +02:00
Torkel Ödegaard a6bbcb8fef ux: gridstack poc 2017-06-13 16:10:56 -04:00
Torkel Ödegaard 812ac5cb8e Merge branch 'master' of github.com:grafana/grafana 2017-06-13 13:22:08 -04:00
Torkel Ödegaard 7d642546b3 fix: restore dashboard history version did not reload route correctly when slug did not change 2017-06-13 13:21:22 -04:00
Torkel Ödegaard 35c440eb79 Gridstack: testing 2017-06-13 12:59:37 -04:00
Daniel Lee a861b1b9ba WIP: check permissions for delete/post dashboard 2017-06-12 23:05:32 +02:00
Daniel Lee 88e1fcb910 WIP: fixes after version history merge 2017-06-12 22:51:50 +02:00
Torkel Ödegaard 5061b3c691 ux: nav experiments 2017-06-12 21:11:22 +02:00
Trent White 192c447c2c create new auth icon for grafana.com so it doesn't share the same file as the main logo (#8581) 2017-06-12 17:17:00 +02:00
Daniel Lee 3913f16550 WIP: add permission check for GetDashboard 2017-06-12 16:48:51 +02:00
Torkel Ödegaard f341a21b01 ux: side nav experiments 2017-06-12 16:46:02 +02:00
Daniel Lee ef0facc987 WIP: fix test after merge conflict 2017-06-12 15:49:09 +02:00
Daniel Lee 9f79b9b8c5 WIP: fix go fmt error 2017-06-12 15:49:09 +02:00
Daniel Lee 18269a5886 WIP: user + user-group pickers for permissions 2017-06-12 15:49:09 +02:00
Daniel Lee 9eccb4e79f WIP: API - add dash permission 2017-06-12 15:49:09 +02:00
Daniel Lee bc6aa74439 WIP: user-picker directive 2017-06-12 15:49:09 +02:00
Daniel Lee 2097ed0bb8 WIP: Permission Type as string in permission query 2017-06-12 15:49:09 +02:00
Daniel Lee 96afb91ac4 WIP: fixes after navbar changes
Fixes for merge conflicts and navbar metadata
added for user group pages.
2017-06-12 15:49:09 +02:00
Daniel Lee 5c89c4b2bd WIP: dashlist in template for new folder 2017-06-12 15:49:09 +02:00
Daniel Lee 533f2d3d72 WIP: refactor folder-picker for dashlist 2017-06-12 15:49:09 +02:00
Daniel Lee c602afb9c6 WIP: dashboard search by folder + toggle for list or tree mode 2017-06-12 15:49:09 +02:00
Daniel Lee 7381d2565d WIP: adds folder-picker to save as dialog 2017-06-12 15:49:09 +02:00
Daniel Lee d081f85289 WIP: use metric-segment for folder picker 2017-06-12 15:49:09 +02:00
Daniel Lee 6c736e002a WIP: add dummy root folder to folder picker
Can move a dash from a folder back to root level as well
2017-06-12 15:49:09 +02:00
Daniel Lee 1e865211c9 WIP: Create new dashboard button in dash search 2017-06-12 15:49:09 +02:00
Daniel Lee 06a15eec5c WIP: permissions moved to settings tab. Adds folder dropdown to general settings tab 2017-06-12 15:49:09 +02:00
Daniel Lee 82afe8228f WIP: add parentid to getdashboard query result 2017-06-12 15:49:09 +02:00
Daniel Lee 68b9342de3 WIP: dashboard search by type (folder or dash) 2017-06-12 15:49:09 +02:00
Daniel Lee b4576edc90 WIP: fix after upstream sqlstore refactoring 2017-06-12 15:49:09 +02:00
Daniel Lee 764d25f007 WIP: rollback 2017-06-12 15:49:09 +02:00
Daniel Lee fa18b0053d WIP: delete permission in API 2017-06-12 15:49:09 +02:00
Daniel Lee fff7b706d6 WIP: user group additions 2017-06-12 15:49:09 +02:00
Daniel Lee 53d11d50fc WIP: remove browse mode for dashboard search
Dashboard folders included in all searches. If a dashboard matches
a search and has a parent folder then the parent folder is appended
to the search result. A hierarchy is then returned in the result
with child dashboards under their parent folders.
2017-06-12 15:49:09 +02:00
Daniel Lee f1e1da39e3 WIP: get Dashboard Permissions
The guardian class checks if the user is allowed to get the
permissions for a dashboard.
2017-06-12 15:49:09 +02:00
Daniel Lee 074ef7ce4e WIP: add open/closed folders icons for dash search
If browsing, then show open folder icon. If searching, show
the closed folder icon
2017-06-12 15:49:09 +02:00
Daniel Lee 13314f23ba WIP: Can remove dashboard permission - sql 2017-06-12 15:49:09 +02:00
Daniel Lee 890ebcbb7b WIP: limit GetAllowedDashboards sql query with a where in 2017-06-12 15:49:09 +02:00
Daniel Lee 97c13b77bf WIP: Add or update Dashboard ACL
SQL Integration Tests for the guardian class too.
2017-06-12 15:49:09 +02:00
Daniel Lee 3785894b40 WIP: guardian service for search
Removes restricted dashboards from search result.
2017-06-12 15:49:09 +02:00
Daniel Lee 2e010b920b dashboard: sort search with dash folder first 2017-06-12 15:49:09 +02:00
Daniel Lee 9cbaf0722b WIP: add some TS types 2017-06-12 15:49:09 +02:00
Daniel Lee cbbe90ee79 WIP: edit user group page 2017-06-12 15:49:09 +02:00
Daniel Lee 552935031b WIP: API methods for add/remove members to user group 2017-06-12 15:49:09 +02:00
Daniel Lee 0a1df0905e WIP: add update user group command 2017-06-12 15:49:09 +02:00
Daniel Lee 00ac446b2b WIP: add new group, needs to be redone 2017-06-12 15:49:09 +02:00
Daniel Lee 233cd7af4a WIP: add user group search 2017-06-12 15:49:09 +02:00
Daniel Lee af67aea2a9 WIP: add usergroup commands and queries 2017-06-12 15:49:09 +02:00
Daniel Lee 1248728d7f WIP: rough prototype of dashboard folders
Breaks some stuff like selected dash in the search result.
In dashboard search, if the user is not searching then the result is
returned as a tree structure. No ACL's or user group ux yet.
2017-06-12 15:49:09 +02:00
Martin Molnar d10d897d65 fix: component name of plugin page contains 'undefined' (#8590) 2017-06-12 15:11:00 +02:00
Daniel Lee 6992b484bc docs: improvements to building the docs readme
Explains that you need to clone the grafana repo if you have not done that already.
2017-06-09 14:27:27 +02:00
Torkel Ödegaard ff2394709d ux: very early start to new sidemenu 2017-06-08 23:13:38 +02:00
Torkel Ödegaard ef9fa7b0cc ux: very early start to new sidemenu 2017-06-08 22:17:43 +02:00
Torkel Ödegaard cdd5ba6198 fix: influxdb test data source error handling now works better, fixes #8577 2017-06-08 21:41:58 +02:00
Torkel Ödegaard f3fe664f24 ux: minor tweak to faintness of icons of panel menu caret 2017-06-08 16:57:37 +02:00
Torkel Ödegaard 25683c688f ux: minor progress on panel title menu makover 2017-06-08 16:22:51 +02:00
Torkel Ödegaard 4206f98ba4 Merge branch 'master' into panel-title-menu-ux 2017-06-08 14:50:03 +02:00
Torkel Ödegaard 6c04057285 Merge branch 'master' of github.com:grafana/grafana 2017-06-08 14:39:39 +02:00
Torkel Ödegaard 217c746445 ux: close edit views when opening panel in edit mode 2017-06-08 14:23:51 +02:00
Torkel Ödegaard 95c8a76aa6 ux: minor search style improvements 2017-06-08 13:56:51 +02:00
Daniel Lee a8e9700334 docs: add whitelist option for auth.proxy 2017-06-08 13:38:18 +02:00
Torkel Ödegaard 50b09f4f10 Merge branch 'master' of github.com:grafana/grafana 2017-06-08 11:54:11 +02:00
Torkel Ödegaard 2c75593c1a refactoring: elasticsearch raw doc size limit option PR, #8527 2017-06-08 11:53:12 +02:00
Torkel Ödegaard 3c41d0477a Merge branch 'master' of https://github.com/mk-dhia/grafana into mk-dhia-master 2017-06-08 11:22:48 +02:00
Daniel Lee f7c48c5a5f singlestat: fix ignoring zero value for table data
When table data returns a column with the value 0, it should not ignore
it. This change checks for undefined instead of if the value is truthy.

Fixes #8531
2017-06-08 11:06:37 +02:00
Daniel Lee c5d5d7ac5a docs: instruction on creating dummy awsconfig
To be able to build the docs an awsconfig file must exist for the Dockerfile to copy. This adds an instruction to create an empty, dummy file so that the build will work.
2017-06-08 10:32:57 +02:00
Torkel Ödegaard 71b62f5cf9 Create README.md 2017-06-08 09:15:10 +02:00
Mitsuhiro Tanda 922073a357 (cloudwatch) add new metrics (#8569) 2017-06-08 07:01:33 +02:00
Michael Ambrose aa3a737fea Updated cloudwatch doc to be more clear on ec2_instance_attribute usage and added Tag selection example 2017-06-07 16:58:01 -04:00
Michael Ambrose f0169656ba Added test to for Cloudwatch EC2 tag selection 2017-06-07 16:53:49 -04:00
Michael Ambrose 525da95f49 Updated cloudwatch plugin to allow specific tag selection
Tags come back from AWS as a key value pair inside an array
This array is now converted to an object
Tags can be selected when using the 'ec2_instance_attribute' query
Example: `ec2_instance_attribute(us-east-1, Tags.Name, { "tag:Grafana": [ "true" ] })`
2017-06-07 16:53:49 -04:00
Torkel Ödegaard 01ff3bbe0a ux: mini css position fix 2017-06-07 22:03:10 +02:00
Torkel Ödegaard 61bdc91272 ux: css fix to search position when sidemenu is pinned 2017-06-07 21:54:55 +02:00
Torkel Ödegaard 08b37186a5 fix: fixed failing sql unit test 2017-06-07 15:42:48 +02:00
Torkel Ödegaard 5225e4283f Update CHANGELOG.md 2017-06-07 14:39:44 +02:00
Torkel Ödegaard e7e675e471 Merge branch 'walmartlabs-master' (Dashboard History Feature, #8472) 2017-06-07 14:30:03 +02:00
Torkel Ödegaard 391dc1e225 dasboard_history: fixed sql integration test 2017-06-07 14:25:46 +02:00
Torkel Ödegaard 46412c8475 dasboard_history: security fix, added orgId filter to dashboard version lookup 2017-06-07 14:21:40 +02:00
Torkel Ödegaard 3ba8aeb9a7 dashboard_history: fix for scenario where reverted dashbord has different title and url must change not just route reload 2017-06-07 14:02:45 +02:00
Torkel Ödegaard 64d620c987 dasboard_history: minor style fix change 2017-06-07 13:50:59 +02:00
Peter Mounce f4debbf501 typo (#8565) 2017-06-07 13:47:08 +02:00
Torkel Ödegaard 56b3c4a3a0 dasboard_history: fixed disabled attribute so it works both by disabling and fixing style, no need for disabled class and disabled attribute 2017-06-07 13:46:36 +02:00
Torkel Ödegaard 577dfee086 dasboard_history: fixed json diff so only dashbord is compared and not the whole dashboard revision object (message and restoreFrom etc was showing up in json diff) 2017-06-07 13:36:03 +02:00
Torkel Ödegaard 8f6c9c5946 dasboard_history: some polish around styles & diff colors, and minor fixes 2017-06-07 12:39:06 +02:00
Torkel Ödegaard ef1dfed0d8 dasboard_history: big refactoring of how the compare api looked, now a POST with a model for new & base version, refactored a simplified UI code as well, this was done to lay foundation to make it possible to do diff against current in browser unsaved version 2017-06-07 11:50:09 +02:00
Torkel Ödegaard 948e5ae74d dashboard_history: further css & markup fixes, removing style overrides & resuing existing styles and markup components 2017-06-06 23:04:14 +02:00
Torkel Ödegaard c4e872b9da dashboard_history: minor changes and fixes 2017-06-06 16:27:28 +02:00
Torkel Ödegaard 7b5f7ed553 dashboard_history: SQL did not work when using MySQL, fixes to dashboard version numbering, so inserts start at 1, added migration to fix old dashboards with version 0 2017-06-06 15:40:10 +02:00
Torkel Ödegaard 5409f4c0eb dashboard_history: fixed issue with save as & overwrite 2017-06-06 14:39:57 +02:00
Torkel Ödegaard 9b629cd5a6 dashboard_history: fixed history srv unit tests 2017-06-06 14:28:21 +02:00
Torkel Ödegaard 546d489dd3 dashboard_history: restored unsaved changes modal to simple cancel, discard, save 2017-06-06 14:27:30 +02:00
Torkel Ödegaard 88da3a99e1 refactoring: trying to remove all the css overrides in history tab and make the styles more more inline with best practice css, and if needed use modifier overrides instead 2017-06-06 11:03:56 +02:00
Torkel Ödegaard 689e366f59 refactoring: updated api url routes so they do not conflict with slug route 2017-06-06 09:51:14 +02:00
Torkel Ödegaard e2061312f5 refactoring: moved compare dashboard version command out of sqlstore, the code in this command did not use any sql operations and was more high level, could be moved out and use existing queries to get the versions 2017-06-06 00:15:40 +02:00
Torkel Ödegaard e43d09e15b fix: fixed failing frontend test 2017-06-05 23:31:45 +02:00
Torkel Ödegaard 746d6cdc88 refactoring: changed name on compare command to make properties more explainatory 2017-06-05 23:29:25 +02:00
Torkel Ödegaard 9c1401849e fix: always show dashboard history for now, need a way to make dropdown more dynamic 2017-06-05 23:14:07 +02:00
Torkel Ödegaard 2a52e25d5b refactoring: removed double error alert, backendSrv is already showing an error alert 2017-06-05 23:06:31 +02:00
Torkel Ödegaard cabbfe9adc refactoring: moved dashboard history item formating (message) and fixed dashboard history migration issue, and removed from frontend tests that where no longer needed 2017-06-05 22:59:04 +02:00
Torkel Ödegaard f18ebea03e fix: dashboard save modals had double submit on enter after my refactoring this morning 2017-06-05 18:01:16 +02:00
Torkel Ödegaard 82d4d54dc5 refactoring: fixed broken unit test in last commit 2017-06-05 17:51:51 +02:00
Torkel Ödegaard c87418d060 refactoring: Dashboard history restore operation is now reusing existing
operations instead of duplicating a bunch of get & save logic.
2017-06-05 17:45:27 +02:00
Daniel Lee 12219cffe0 Merge pull request #8538 from yackushevas/master
misspell: Corrected some misspelled words
2017-06-05 17:21:42 +02:00
Torkel Ödegaard c296ae1178 refactoring: fixing unit tests broken in last commit 2017-06-05 16:52:36 +02:00
Torkel Ödegaard e18007153d refactoring: Renamed dashboard version queries that wrongly had Command suffix, added missing OrgId to dashboard history commands and queries 2017-06-05 16:34:32 +02:00
Daniel Lee 1b79e17970 graph: better generation of y-axis ticks for log-scale
If there are too many ticks generated for the y-axis (which can occur
for log scale 2, with a small y-min and a large max), then the ticks
will be regenerated using larger jumps between the ticks.

This also handles the case when y-min is set to 0. Previously, y-min of
0 was ignored as zero is not a valid value for log scale. Now the tick
generator approximates zero by setting min to 0.1.

Ref #8244

Ref #8516
2017-06-05 15:06:22 +02:00
Torkel Ödegaard fdfcd5cbf0 refactoring:: dashboard save modal and save as modal needed an update 2017-06-05 14:56:11 +02:00
Anton Yackushev bab21c9069 misspell: Corrected some misspelled words 2017-06-05 15:20:34 +03:00
Torkel Ödegaard f3980504e2 Merge branch 'master' into walmartlabs-master 2017-06-05 13:43:00 +02:00
Eirik Nygaard 1efdd92ae8 Update oauth2 lib (#8524)
* Update to latest oauth2 library using govendor

* Follow API changes
2017-06-05 10:09:27 +02:00
Dhia MOAKHAR 7c1dc2444d change size in raw_document from text to number
update query builder and specs
2017-06-04 13:20:58 +00:00
Dan Cech f224fd8310 reduce length of dashboard columns used in compound indexes (#8507) 2017-06-04 14:28:03 +02:00
Tom Gardiner 4fe9935321 Add support for AWS/VPN metrics (#8528) 2017-06-04 14:24:04 +02:00
aykim17 d996275f8f Updated the graphTooltip description (#8532)
I added in a description since there was just TODO there originally.
2017-06-04 14:23:52 +02:00
Torkel Ödegaard d2eca2faa1 ux: new navbar fixes, restored delete option in dashboard dropdown, fixes #8521 2017-06-04 14:18:25 +02:00
Dhia MOAKHAR 045f5e11fc [elasticsearch] Fix bug when switching from "Raw Document" metric type
when switch to "raw Document" metric type we do free all "Group by"
however when we switch back to another type we do not reset the default aggregation (date histogram)
Thus all modification will through exception as no "Group by" is defined and panel should be recreated
the fix will reintialize the "Group by" by setting default value
2017-06-03 02:55:26 +00:00
Dhia MOAKHAR d55cc4e2a3 [elasticsearch] Fix add metric that was not working properly
when selecting Raw Documet metric type, the $scope.target.metrics was replaced by [$scope.agg],
 however the pointer to this variables is shared with metricAggs.
 Instead we free the array and add $scope.agg
2017-06-03 02:50:10 +00:00
Dhia MOAKHAR 966c2912fc [elasticsearch] Add option for result set size in raw_dcument
it allows to specify the result set size in raw_document.
 Example: table  panel could show more (or less) than 500 line if needed.
 Added test to spec
2017-06-02 23:56:48 +00:00
Torkel Ödegaard d47c47853a ux: added css annimations for dash edit views 2017-06-02 15:29:25 +02:00
Torkel Ödegaard 3bea304bab ux: made new search more responsive 2017-06-02 14:19:39 +02:00
Torkel Ödegaard e9d5e037e8 ux: merge branch navbarv2, new navbar with dashboard search available on all pages, closes #6475 2017-06-02 14:00:42 +02:00
sanchitraizada 77c046aac6 Implement review feedback 2017-06-01 17:57:09 -04:00
Torkel Ödegaard 1bdf82dca3 Update CHANGELOG.md 2017-05-31 14:04:19 +02:00
Torkel Ödegaard 6783d1000c Update CHANGELOG.md 2017-05-31 14:04:02 +02:00
Torkel Ödegaard 95a4ec8bf2 Merge branch 'v4.3.x' 2017-05-31 10:55:06 +02:00
Torkel Ödegaard ed4d170bcc build: updated version to v4.3.2 2017-05-31 10:48:16 +02:00
Torkel Ödegaard 812958162a revert: removed lazy loading feature, closes #8500 2017-05-31 10:47:04 +02:00
Torkel Ödegaard cd3807055e chrome: an attempt to fix scroll issue with chrome, but this did not fix the problem as it seems to be caused by some interaction between graph rendering and scrolling, #8494 2017-05-30 13:50:38 +02:00
Pranay Kanwar 26ec874fb1 Frontend query changes corresponding #8336 (#8489) 2017-05-30 09:53:11 +02:00
Dan Cech e4cb103966 remove X-Forwarded-* headers added by nginx when proxying data source & plugin requests (#8418)
* remove X-Forwarded-* headers added by nginx when proxying data source & plugin requests

* properly handle X-Forwarded-For
2017-05-29 13:09:15 +02:00
Torkel Ödegaard 5c1833de1f Merge branch 'master' of github.com:grafana/grafana 2017-05-29 12:21:21 +02:00
Torkel Ödegaard f16e3e38ee Merge branch 'v4.3.x' 2017-05-29 12:20:34 +02:00
Daniel Lee d318c9093f graph: Handle data with zeroes for log scale
fixes #8446. Data with all values equal to zero, creates a max with the
value of Infinite. The for loop for creating ticks then gets stuck in an
infinite loop. This fix resets min and max and creates some fake ticks
for the y-axis if the min and max are not finite numbers.
2017-05-29 12:18:54 +02:00
Dan Cech c95162e067 tweak column lengths for utf8mb4 support on older mysql (#8483) 2017-05-29 12:18:27 +02:00
Torkel Ödegaard 0d865a83bc fix: fixed test data fake metric query, fixes #8474 2017-05-29 12:17:51 +02:00
Victor Azevedo 980b9b5ca0 use fielddata_fields in elasticsearch 2.x queries
Resolves issue #8467
2017-05-29 12:15:51 +02:00
Daniel Lee 371625aeec Merge branch 'v4.3.x' 2017-05-29 11:13:14 +02:00
Daniel Lee beced6f3a6 graph: Handle data with zeroes for log scale
fixes #8446. Data with all values equal to zero, creates a max with the
value of Infinite. The for loop for creating ticks then gets stuck in an
infinite loop. This fix resets min and max and creates some fake ticks
for the y-axis if the min and max are not finite numbers.
2017-05-29 11:12:08 +02:00
Torkel Ödegaard 5e0b03928e Merge branch 'v4.3.x' 2017-05-29 10:49:02 +02:00
Torkel Ödegaard 0d39852ef4 fix: fixed test data fake metric query, fixes #8474 2017-05-29 10:48:38 +02:00
Torkel Ödegaard ab44c7d63e Merge branch 'master' of github.com:grafana/grafana 2017-05-29 08:52:07 +02:00
Torkel Ödegaard ed2092e287 docs: updated alerting docs to make query conditions easier to understand, fixes #8486 2017-05-29 08:51:56 +02:00
Dan Cech c0d5b61403 tweak column lengths for utf8mb4 support on older mysql (#8483) 2017-05-29 08:31:36 +02:00
Dan Cech 7004a84c30 tweak column lengths for utf8mb4 support on older mysql 2017-05-29 08:19:51 +02:00
Anton Yackushev c2885430bd fix "no formatting directive in Fatalf call" (vet) (#8487) 2017-05-29 08:12:54 +02:00
Daniel Lee e65f86147f changelog: note for #8058 2017-05-26 15:56:44 +02:00
Daniel Lee c17d02e496 csv: remove sep metadata as only works for excel 2017-05-26 15:43:09 +02:00
Cédric Reginster ee0d0155a5 Refactor to component based style 2017-05-26 15:43:09 +02:00
Cédric Reginster f484b4c347 Make csv export date time format configurable
- Move export csv options to modal dialog
2017-05-26 15:43:09 +02:00
Daniel Lee 3292a48381 graph: dashes with linewidth fix. Fixes #8469
Adds series override options for dash spaces and dash length.
2017-05-26 15:09:05 +02:00
Dan Cech 8422697199 centralize oauth http calls, validate response status (#8470) 2017-05-26 14:35:32 +02:00
Ricky Moorhouse 665caa8e08 Include triggering metrics to pagerduty alerts
Assist the person receiving the alert in identifying the cause

Based on the slack notifier fields this will include upto 4 triggering
metrics in the custom details section in the pagerduty incident

Fixes #8479
2017-05-26 12:30:56 +01:00
Ben Tranter a927b893ae Use DBSession for getMaxVersion 2017-05-25 23:04:00 -04:00
sanchitraizada e6616cc551 Merge pull request #10 from walmartlabs/version-control
History and Version Control for Dashboard Updates
2017-05-25 14:50:47 -07:00
Torkel Ödegaard 60d5d5fb15 docs: updated changelog 2017-05-25 20:37:01 +02:00
Torkel Ödegaard 68397d342b Merge branch 'patch-1' of https://github.com/goldeelox/grafana into goldeelox-patch-1 2017-05-25 20:34:38 +02:00
Torkel Ödegaard 09267bbfe8 docs: elasticsearch, added info about size property in templating query 2017-05-25 20:11:53 +02:00
Victor Azevedo 0a1c2a7024 use fielddata_fields in elasticsearch 2.x queries
Resolves issue #8467
2017-05-25 11:43:29 -04:00
Ben Tranter b6e46c9eb8 History and Version Control for Dashboard Updates
A simple version control system for dashboards. Closes #1504.

Goals

1. To create a new dashboard version every time a dashboard is saved.
2. To allow users to view all versions of a given dashboard.
3. To allow users to rollback to a previous version of a dashboard.
4. To allow users to compare two versions of a dashboard.

Usage

Navigate to a dashboard, and click the settings cog. From there, click
the "Changelog" button to be brought to the Changelog view. In this
view, a table containing each version of a dashboard can be seen. Each
entry in the table represents a dashboard version. A selectable
checkbox, the version number, date created, name of the user who created
that version, and commit message is shown in the table, along with a
button that allows a user to restore to a previous version of that
dashboard. If a user wants to restore to a previous version of their
dashboard, they can do so by clicking the previously mentioned button.
If a user wants to compare two different versions of a dashboard, they
can do so by clicking the checkbox of two different dashboard versions,
then clicking the "Compare versions" button located below the dashboard.
From there, the user is brought to a view showing a summary of the
dashboard differences. Each summarized change contains a link that can
be clicked to take the user a JSON diff highlighting the changes line by
line.

Overview of Changes

Backend Changes

- A `dashboard_version` table was created to store each dashboard
  version, along with a dashboard version model and structs to represent
  the queries and commands necessary for the dashboard version API
  methods.
- API endpoints were created to support working with dashboard
  versions.
- Methods were added to create, update, read, and destroy dashboard
  versions in the database.
  - Logic was added to compute the diff between two versions, and
  display it to the user.
  - The dashboard migration logic was updated to save a "Version
  1" of each existing dashboard in the database.

Frontend Changes

- New views
- Methods to pull JSON and HTML from endpoints

New API Endpoints

Each endpoint requires the authorization header to be sent in
the format,

```
Authorization: Bearer <jwt>
```

where `<jwt>` is a JSON web token obtained from the Grafana
admin panel.

`GET "/api/dashboards/db/:dashboardId/versions?orderBy=<string>&limit=<int>&start=<int>"`

Get all dashboard versions for the given dashboard ID. Accepts
three URL parameters:

- `orderBy` String to order the results by. Possible values
  are `version`, `created`, `created_by`, `message`. Default
  is `versions`. Ordering is always in descending order.
- `limit` Maximum number of results to return
- `start` Position in results to start from

`GET "/api/dashboards/db/:dashboardId/versions/:id"`

Get an individual dashboard version by ID, for the given
dashboard ID.

`POST "/api/dashboards/db/:dashboardId/restore"`

Restore to the given dashboard version. Post body is of
content-type `application/json`, and must contain.

```json
{
  "dashboardId": <int>,
  "version": <int>
}
```

`GET "/api/dashboards/db/:dashboardId/compare/:versionA...:versionB"`

Compare two dashboard versions by ID for the given
dashboard ID, returning a JSON delta formatted
representation of the diff. The URL format follows
what GitHub does. For example, visiting
[/api/dashboards/db/18/compare/22...33](http://ec2-54-80-139-44.compute-1.amazonaws.com:3000/api/dashboards/db/18/compare/22...33)
will return the diff between versions 22 and 33 for
the dashboard ID 18.

Dependencies Added

- The Go package [gojsondiff](https://github.com/yudai/gojsondiff)
  was added and vendored.
2017-05-24 19:14:39 -04:00
Torkel Ödegaard d1d47b5697 docs: updated changelog with fix for InfluxDB query issue, #8459 2017-05-24 16:49:30 +02:00
Torkel Ödegaard 90871ca12e Merge branch 'v4.3.x' 2017-05-24 16:48:05 +02:00
Torkel Ödegaard 896f849b84 fix: influxdb query editor did no show alias by input field when in text editor mode, fixes #8459 2017-05-24 16:47:38 +02:00
Dhia ac28c4b233 add Referer header to logs. This is useful to link datasource requests to dashboard that originated it (#8399) 2017-05-24 13:47:29 +02:00
Torkel Ödegaard 8b7a0100b1 docs: updated changelog with info on merged PR #8405 2017-05-24 13:46:33 +02:00
Torkel Ödegaard dcf7385cc1 sensu: added input tooltip to source property 2017-05-24 13:44:38 +02:00
joe miller 090594a0bc support setting the source and handler attribute in sensu notifications (#8405)
* support setting the handler attribute in sensu alert notifications

* allow the user to set the source attribute of Sensu notifications
2017-05-24 13:42:24 +02:00
Dan Cech 007c08f2a8 remove X-Forwarded-* headers added by nginx when proxying data source & plugin requests (#8418)
* remove X-Forwarded-* headers added by nginx when proxying data source & plugin requests

* properly handle X-Forwarded-For
2017-05-24 13:39:40 +02:00
Daniel Parks 2d29d7b3d6 Add support for AWS DMS CloudWatch metric (#8458) 2017-05-24 13:24:24 +02:00
Torkel Ödegaard 3133721422 docs: update changelog 2017-05-24 13:23:11 +02:00
Torkel Ödegaard 28bff0c1f3 Merge branch 'v4.3.x' 2017-05-24 13:22:09 +02:00
Torkel Ödegaard b17a1ed557 playlist: fixed dashboard play ordering, fixes #7688 2017-05-24 13:21:43 +02:00
Torkel Ödegaard e6d79dfedf docs: updated changelog 2017-05-24 11:23:41 +02:00
Torkel Ödegaard 5740702cb5 Merge branch 'master' of github.com:grafana/grafana 2017-05-24 11:21:17 +02:00
Torkel Ödegaard a5318def66 Merge branch 'v4.3.x' 2017-05-24 11:20:35 +02:00
Torkel Ödegaard 634ee0f9fa fix: graphg panel logarithmic scale goes blow x-axis, fixes #8244 2017-05-24 11:20:07 +02:00
Prasanna Gautam 6541ffe045 minor change: more accurate variable name (#8449) 2017-05-24 08:38:13 +02:00
Torkel Ödegaard 12c8bf9b18 Update CHANGELOG.md 2017-05-23 16:45:15 +02:00
Torkel Ödegaard d4048e1423 docs: updated download links 2017-05-23 16:18:37 +02:00
Torkel Ödegaard 6257fbced6 docs: updated changelog 2017-05-23 15:54:44 +02:00
Torkel Ödegaard 330cb92b24 Merge branch 'v4.3.x' 2017-05-23 15:52:24 +02:00
Torkel Ödegaard befc15c5a1 fix: s3 image uploads to us-east-1 (us standard) did not return correct image urls so images shared to slack and other services was not correct, fixes #8444 2017-05-23 15:50:22 +02:00
Torkel Ödegaard 3695337980 refactoring: Elasticearch filter label PR #8420 2017-05-23 15:14:23 +02:00
Torkel Ödegaard 648e8a9547 Merge branch 'master' of https://github.com/limefamily/grafana into limefamily-master 2017-05-23 14:48:14 +02:00
Torkel Ödegaard 1e3a42ca68 packaging: added rpm fonts to rpm package dependencies (#8442) 2017-05-23 13:53:03 +02:00
Torkel Ödegaard 21e61319f1 Merge branch 'master' of github.com:grafana/grafana 2017-05-23 13:52:24 +02:00
Torkel Ödegaard 48fdfe721e build: updated master version to 4.4.0-pre1 2017-05-23 13:52:07 +02:00
Torkel Ödegaard 423ad4d36e docs: updated docs 2017-05-23 12:45:15 +02:00
Torkel Ödegaard bd8a0be3aa Update CHANGELOG.md 2017-05-23 12:26:30 +02:00
Torkel Ödegaard d9c6f7a141 release: bumped version to 4.3.0 2017-05-23 11:14:53 +02:00
Torkel Ödegaard 044668a395 login: minor fix to login page 2017-05-23 11:10:16 +02:00
Torkel Ödegaard 90dbd4978b Merge branch 'master' of github.com:grafana/grafana 2017-05-23 10:56:37 +02:00
Torkel Ödegaard 359421b5e8 refactor: sqlstore inTransaction consolidated to one version, fixes #8376 2017-05-23 10:56:23 +02:00
Daniel Lee 73cb035231 mysql: annotation support. Fixes #8382
Simple query editor - a text area with a Show Help section.
Validation for empty query and if the time_sec column is missing.
2017-05-23 09:53:20 +02:00
Matt Toback d47078e27f 2017! 2017-05-22 17:29:24 -04:00
Torkel Ödegaard 5e33b5fcfa docs: updated changelog 2017-05-22 15:39:46 +02:00
Torkel Ödegaard c34db77f04 grafana_com: changed name of oauth grafana_net integration (old settings names still work), and updated login button look, closes #8415 2017-05-22 14:56:50 +02:00
Torkel Ödegaard 7c50563f0f fix: fixed crash when gzip was enabled 2017-05-22 14:09:54 +02:00
Torkel Ödegaard a64c06d02c mysql: add user permission notice mysql config view, closes #8359 2017-05-22 13:53:43 +02:00
Torkel Ödegaard 966cefc8d0 docs: updated changelog 2017-05-22 13:04:59 +02:00
Torkel Ödegaard a0b9dcad4d alert: alerting annotation improvements, fixes #8421 2017-05-22 13:02:49 +02:00
Torkel Ödegaard 370db82238 docs: updated changelog 2017-05-22 10:55:22 +02:00
Torkel Ödegaard 20e631a22d fix: All alert annotations showed up in unsaved/new dashboards graph panels with alert, fixes #8361 2017-05-22 10:49:26 +02:00
Junliang Huang 6d3246e39e docs(readme): remove dev.ini reference (#8419)
remove dev.ini reference as it seems not working anymore.
2017-05-21 10:07:21 +02:00
Joe Handzik d4264cbfc2 Make location for plugins consistent (#8429)
Please let me know if this changed in a more recent version of Grafana, but when using 4.2.0 the manual install directions were off a little (there was no `data/plugins` directory, only a `plugins` directory).

Signed-Off-By: Joe Handzik <joseph.t.handzik@hpe.com>
2017-05-21 10:03:57 +02:00
Dave Scott f7215608e9 Update VictorOps notifier w/ auto resolve and image URL (#8431)
* Fixed newline JSON buy in VictorOps integration

* Fixed payload sent to VictorOps so that link displays correctly

* Fixed formatted to resolve go error

* Add auto resolve incidents and image URL to VictorOps notifier
2017-05-21 10:02:48 +02:00
Torkel Ödegaard 7cb6466251 feat: query troubleshooter, improving json explorer 2017-05-20 23:43:59 +02:00
Torkel Ödegaard d840645dd7 feat: metrics tab, minor change 2017-05-20 23:03:04 +02:00
Torkel Ödegaard a8673a2e33 feat: metrics tab 2017-05-20 22:41:34 +02:00
Torkel Ödegaard 4a2c405ac0 feat: metris tab, moved data source selector 2017-05-20 18:35:34 +02:00
Torkel Ödegaard 499e01d832 feat: metrics tab reworking 2017-05-20 18:21:41 +02:00
Torkel Ödegaard 5e090b84ec feat: Copy to clipboard now works in query troubleshooter 2017-05-20 14:52:33 +02:00
Torkel Ödegaard b8aa6a8e47 query: more work on metrics tab changes 2017-05-20 10:48:47 +02:00
Torkel Ödegaard 912301fe24 query: more work on metrics tab changes 2017-05-20 10:14:41 +02:00
Torkel Ödegaard 5909f9ef92 feat: more work on metrics tab reworkings 2017-05-19 21:32:23 +02:00
Torkel Ödegaard 5fcb966297 feat: query troubleshooter progress 2017-05-19 17:35:36 +02:00
Torkel Ödegaard 6ad1a396a5 feat: query troubleshooter 2017-05-19 16:00:01 +02:00
Torkel Ödegaard 5513d3c9d1 feat: moved json-formatter-js into core grafana to be able to make changes 2017-05-19 13:16:05 +02:00
Torkel Ödegaard 878121bb46 fix: templating variable name validation detecting global variable naming wrongly, fixes #8423 2017-05-19 11:14:11 +02:00
Torkel Ödegaard 9045be5689 fix: Prometheus & hidden queries caused no metric query to be issued, fixes #8413 2017-05-19 10:24:47 +02:00
田子宽 9c35d3f87c Add kibana like readable label to elasticsearch query builder 2017-05-19 11:38:28 +08:00
Torkel Ödegaard f7a6c9a1e6 ux: minor change 2017-05-18 17:05:15 +02:00
Torkel Ödegaard f65878c21d ux: working on query troubleshooting 2017-05-18 17:04:31 +02:00
Torkel Ödegaard 78dbb4dc13 config: removed trace level from config comment 2017-05-18 14:19:39 +02:00
Torkel Ödegaard d5481fa0f1 Merge branch 'master' into query_troubleshooting 2017-05-18 14:14:33 +02:00
Torkel Ödegaard 59f3cca135 docs: updated changelog 2017-05-18 14:13:05 +02:00
Torkel Ödegaard 8918922179 alerting: fixed issue with included alerting error & no data reasons, fixes #8412 2017-05-18 14:10:12 +02:00
Torkel Ödegaard 43d5525aaa Merge branch 'master' into alert_state 2017-05-18 13:38:34 +02:00
Torkel Ödegaard fbc3e0371d Merge branch 'master' into query_troubleshooting 2017-05-18 13:38:11 +02:00
Torkel Ödegaard 86ce3d5e45 feat: in app query request & response troubleshooting 2017-05-17 17:02:50 +02:00
Daniel Lee 4182acda58 Merge pull request #8332 from sliceratwork/master
upgrade to Font Awesome 4.7.0
2017-05-17 14:58:14 +02:00
Daniel Lee 16fb7a2e4a Merge pull request #8394 from berghauz/master
Proxy support added to webdav uploader, fixes #7922
2017-05-17 14:49:22 +02:00
Daniel Lee f5118ced4d Merge pull request #8400 from haidaraM/docs-admin
docs: Added requests body for 'Password for User' and 'Permissions'
2017-05-17 14:42:14 +02:00
A78677 ab874cd037 docs: Added requests body for 'Password for User' and 'Permissions' in the admin api documentation 2017-05-17 14:26:27 +02:00
Daniel Lee 540ee35393 timerange: new quick ranges, month and year so far
The new time ranges can also be used for time range overrides in the
override relative time field. E.g. now/M or now/y.
2017-05-17 13:52:39 +02:00
Daniel Lee e61b392916 core: fix linting errors in specs files 2017-05-17 13:47:44 +02:00
Torkel Ödegaard 87f5222907 typescript: fixed issue with tslint in testsW 2017-05-17 13:43:17 +02:00
Torkel Ödegaard d261f33c3d influxdb: influxdb query editor changes 2017-05-17 13:27:56 +02:00
Torkel Ödegaard 972be88569 fix: singlestat gauge sizing issue when panel is very wide, fixes #7773 2017-05-17 11:56:40 +02:00
Torkel Ödegaard fc146fe54e Merge branch 'master' of github.com:grafana/grafana 2017-05-17 11:33:24 +02:00
Torkel Ödegaard 8e03f321eb fix: Elasticsearch table aggregation and support for many aggregations of same type, now uses field name if more than 1 aggregation of same type, fixes #4709 2017-05-17 11:33:08 +02:00
Dan Cech 9dc220b8e2 include error message in email notification (#8392) 2017-05-17 09:51:51 +02:00
berghauz 48cf58e739 Indenting fix 2017-05-17 03:58:18 +03:00
berghauz c713bd9a9a Proxy support added, fixes #7922
Well, i'm really want to see it working in 4.3.0
2017-05-17 02:50:56 +03:00
Torkel Ödegaard 820671d6cc Merge branch 'master' of github.com:grafana/grafana 2017-05-16 16:29:27 +02:00
Torkel Ödegaard 02c79a6389 influxdb: improvements to influxdb query editor, SLIMIT, LIMIT and ORDER BY now added on demand by plus button 2017-05-16 16:28:58 +02:00
Daniel Lee e8b798914d mysql: adds mapping for int/long 2017-05-16 16:07:42 +02:00
Torkel Ödegaard 8b11712f5e fix: Graphite issue with toggle edit mode in query editor, fixes #8377 2017-05-16 14:29:30 +02:00
Torkel Ödegaard f84dc24fcb alerting: improving and fixing alert history, #7257 2017-05-15 16:17:05 +02:00
Torkel Ödegaard f697f81950 sqlite: fixed database table looked handling, now retries up to 5 times, fixes #7992 2017-05-15 12:19:19 +02:00
Torkel Ödegaard fd969bf659 Merge branch 'master' of github.com:grafana/grafana 2017-05-15 10:33:43 +02:00
Konstantin Koniev 9566197620 Internationalise keybindings. (#8311) 2017-05-12 14:59:56 +02:00
Daniel Lee fd5fc0b7ab docs: metadata change for guide post 2017-05-12 14:19:46 +02:00
Daniel Lee fcbe306628 release: version bump for package cloud script 2017-05-12 13:36:42 +02:00
Daniel Lee 88d4fde815 docs: v4.3.0-beta1 updates 2017-05-12 13:36:42 +02:00
Daniel Lee a73f664d54 Update CHANGELOG.md 2017-05-12 13:26:34 +02:00
Daniel Lee 3a892727b3 release version bump 4.3.0-beta1 2017-05-12 11:45:26 +02:00
Daniel Lee a9c535e551 mysql: add some more type mapping
Decimals mapped to floats for now. No mapping for bit or
any of the blob types. Tinyint not mapped to bool.
2017-05-12 11:37:51 +02:00
Torkel Ödegaard 375e60750e docs: updated heatmap docs 2017-05-12 11:14:11 +02:00
Torkel Ödegaard 17198807c9 docs: updated mysql docs 2017-05-12 11:04:54 +02:00
Torkel Ödegaard 910e54d75e Merge branch 'master' of github.com:grafana/grafana 2017-05-11 16:31:31 +02:00
Torkel Ödegaard 5076460254 docs: updated heatmap docs 2017-05-11 16:30:50 +02:00
Torkel Ödegaard 2e7ac8f2da heatmap: fix for unit options width 2017-05-11 15:20:13 +02:00
Mitsuhiro Tanda 5e85558e9e (prometheus) fix graph link (#8349) 2017-05-11 14:24:13 +02:00
Torkel Ödegaard 88672389f3 docs: minor docs fix 2017-05-11 14:16:05 +02:00
Torkel Ödegaard 2c3f3dffa3 docs: updated heatmap panel docs menu name 2017-05-11 13:02:10 +02:00
Torkel Ödegaard 2c5563442f docs: added initial mysql docs 2017-05-11 12:59:49 +02:00
Torkel Ödegaard f976e465c4 mysql: minor improvement for table panel 2017-05-11 11:06:13 +02:00
Torkel Ödegaard 4ce0bf4d16 mysql: improved mysql data source, added test feature when adding data source, fixed cache issue 2017-05-11 10:50:24 +02:00
Torkel Ödegaard ab6740c685 heatmap: Docs and heatmap fixes 2017-05-11 10:19:47 +02:00
Torkel Ödegaard 30b6c3b54a build: fixed heatmap test 2017-05-11 08:56:32 +02:00
Tiantian Gao b2c14b858e Fix http logging time_ms unit is wrong (#8342)
In fact, the unit of `time_ms` int http logging is not "ms", this patch fix it.
2017-05-11 08:53:40 +02:00
Suzana Pescador 8c9cc4fae1 [Bug] Coloring Background on siglestat panel #7242 (#8334)
The bug was happening because the background color was being based on
the rounded value (accounting the user defined decimals). Changed it to
use the pure value (not the rounded) to follow whats being done in the
value color, and also in the table thresholds (they don't consider the
decimals when comparing to thresholds).
2017-05-10 20:02:35 +02:00
Torkel Ödegaard 1d4338ba54 Merge branch 'master' of github.com:grafana/grafana 2017-05-10 17:19:03 +02:00
Torkel Ödegaard 0a68dabb89 heatmap: Fixes & progress on heatmap docs 2017-05-10 17:17:51 +02:00
Suzana Pescador d6eefcb5ce Can't remove default avg column in table #4515 (#8335)
Avg column was being added at every rendering, if the table was empty.
Now the column will be added once as an initialization when selecting a
'timeseries_aggregations' transform.
2017-05-10 15:51:34 +02:00
Pranay Kanwar ee8799de88 Fix dropcounter option, is called dropResets (#8336) 2017-05-10 15:46:19 +02:00
Daniel Lee 4a35126bf6 api: health check returns 503 if db is failing
ref #3302
2017-05-10 15:23:59 +02:00
Daniel Lee f350ae242b Update CHANGELOG.md
ref #7934 
ref #7968
ref #3164
2017-05-10 14:32:18 +02:00
Daniel Lee c21f86f6b4 Update CHANGELOG.md
ref #8277, ref #8250, ref #8262, ref #8165, ref #8093, ref #8056, ref #8043, ref #7970, ref #7914, ref #7864, ref #7750, ref #7740, ref #7697, ref #7619, ref #5619, ref #4030, ref #5278, ref #3302, ref #2524
2017-05-10 13:29:36 +02:00
Torkel Ödegaard d791f902e9 heatmap: more refactoring 2017-05-10 13:05:26 +02:00
Andrei Stefan b054b1faac upgrade to Font Awesome 4.7.0 2017-05-10 09:28:00 +03:00
Torkel Ödegaard acff78d421 Merge branch 'master' into heatmap-refactoring2 2017-05-09 12:41:11 +02:00
Torkel Ödegaard 8bbff2c44e table: refactoring table options, now column styles are in a seperate tab 2017-05-09 12:35:44 +02:00
Torkel Ödegaard e218052a90 fix: fixed slow down issue in table panel by removing the fillter null values feature (#7602), not sure the filter null values is a good table option, should be done in metric query, fixes #8234 2017-05-09 12:07:06 +02:00
Torkel Ödegaard 84141eb14a docs: updated changelog 2017-05-09 08:45:47 +02:00
Torkel Ödegaard 79120a0b1f Merge branch 'master' of github.com:grafana/grafana 2017-05-09 08:33:43 +02:00
Torkel Ödegaard 8d072de556 elasticsearch: changed default terms min_doc_count to 1 and order by to desc, closes #8231 2017-05-09 08:33:37 +02:00
Anton Yackushev fdc97010b4 Rename fielddata_fields to docvalue_fields (#8317)
The parameter fielddata_fields is deprecated and removed in 5.0 https://github.com/elastic/elasticsearch/issues/19027
2017-05-09 07:16:48 +02:00
Torkel Ödegaard 25a267a7ab fix: segment used influxdb naming for variable in options callback, should be more generic 2017-05-08 16:08:53 +02:00
Torkel Ödegaard f168c9e53d table: minor ux options update 2017-05-08 15:57:15 +02:00
Torkel Ödegaard 076a94560b Merge branch 'table-options' 2017-05-08 15:31:29 +02:00
Torkel Ödegaard be284adacc table: more table options refactoring 2017-05-08 15:26:05 +02:00
Torkel Ödegaard 556829eda9 table: began table options redesign 2017-05-08 11:17:29 +02:00
Torkel Ödegaard 823b40a360 docs: added bash and http syntax highlighting 2017-05-08 08:02:08 +02:00
Torkel Ödegaard e2f0b42d90 docs: updated cloudwatch docs, closes #8315 2017-05-08 06:49:55 +02:00
lpavlovi c323d2fc4c Removed panelElemName - appears to not be used anywhere (#8313) 2017-05-07 08:19:08 +02:00
Dan Cech e8fbfce59a remove unneeded import, update docs text 2017-05-05 13:11:44 -04:00
Dan Cech 0f24b45c1a Merge branch 'master' into table-col-alias 2017-05-05 12:41:35 -04:00
Dan Cech 29653d2bec refactor and add column alias tests 2017-05-05 12:40:49 -04:00
Torkel Ödegaard fbf39598b8 heatmp: removed series stats option, lacked tests 2017-05-05 17:33:54 +02:00
Torkel Ödegaard ece21b2d95 heatmap: more refactoring 2017-05-05 17:28:33 +02:00
Torkel Ödegaard dd5a426911 heatmap: refactoring heatmap 2017-05-05 16:15:08 +02:00
Torkel Ödegaard 43c6f74904 heatmap: removed fill background, and highlight card options 2017-05-05 12:33:04 +02:00
Torkel Ödegaard 4412e41738 ux: updated heatmap and alertlist icons 2017-05-05 11:43:42 +02:00
Torkel Ödegaard 5c9810fba4 docs: added in app docs & links to annotation docs 2017-05-05 11:30:44 +02:00
Torkel Ödegaard 2479ad262e ux: updated look of info box 2017-05-05 09:16:28 +02:00
Torkel Ödegaard e75bc5d39a docs: added templating docs link to app 2017-05-05 08:56:19 +02:00
Torkel Ödegaard 6ee11f1172 heatmap: minor update 2017-05-05 07:05:11 +02:00
Torkel Ödegaard f167d459fe Merge branch 'heatmap-refactor' 2017-05-04 19:56:29 +02:00
Torkel Ödegaard 5acabc6ccb heatmap: refactoring 2017-05-04 19:56:20 +02:00
Trent White b4a8678cae remove duplicate paragraph, couple word tweaks 2017-05-04 10:34:19 -04:00
Torkel Ödegaard 61b51c0cbf heatmap: refactoring 2017-05-04 16:03:47 +02:00
Torkel Ödegaard 0390a7c17b docs: fixed docs intro 2017-05-04 12:36:34 +02:00
Torkel Ödegaard 11959f0c4c Merge branch 'master' of github.com:grafana/grafana 2017-05-04 12:13:43 +02:00
Torkel Ödegaard dbcd19bbce docs: minor update to OpenTSDB docs 2017-05-04 12:12:55 +02:00
柯豪 b7a1ff753a update name for AWS credentials (#8287) 2017-05-04 11:44:36 +02:00
Torkel Ödegaard 0bab1fd088 Merge branch 'templating-docs', closes #8243 2017-05-04 11:17:39 +02:00
Torkel Ödegaard cbba692962 docs: influxdb docs update 2017-05-04 11:15:48 +02:00
Torkel Ödegaard e80e0c044b docs: updated elasticsearch docs 2017-05-04 10:19:00 +02:00
Daniel Lee e08188929d docs: update to alert notifications 2017-05-03 22:27:10 +02:00
Daniel Lee b61de0cddc docs: fix API alerting docs 2017-05-03 17:24:27 +02:00
Torkel Ödegaard 287cd83e76 docs: grammarly fixes 2017-05-03 16:34:51 +02:00
Torkel Ödegaard 59fdda6559 docs: minor update to prometheus docs 2017-05-03 15:53:31 +02:00
Torkel Ödegaard ed8d284715 docs: updated prometheus docs 2017-05-03 15:50:38 +02:00
Torkel Ödegaard e6c29391c6 docs: improved Graphite templating docs 2017-05-03 14:20:59 +02:00
Torkel Ödegaard 2304a710bf docs: templating doc wip 2017-05-03 14:09:04 +02:00
Daniel Lee 186a5e9d6f Merge pull request #8274 from sliceratwork/master
Update style guide
2017-05-03 11:04:52 +02:00
Andrei Stefan c57ec23a66 fix broken layout for styleguide icons tab 2017-05-03 11:46:08 +03:00
Torkel Ödegaard b042c53980 ux: updated heatmap icon 2017-05-03 08:56:51 +02:00
Vladimir Gordiychuk deab4a378a bug: MetricSegment lost information about type (#8278)
Fixed #8277
2017-05-03 08:22:30 +02:00
Daniel Lee 44f76fdabc Merge pull request #8275 from jonfreedman/patch-1
chore: add comment to clarify that org_id usage
2017-05-02 17:07:36 +02:00
Jon Freedman 6ebb31bed4 chore: add comment to clarify that org_id usage
As described here: https://community.grafana.com/t/many-to-many-group-dn-org-role-mapping-in-ldap-config/729/2 org_id can be used to allow multiple group_dn's to map to the same org_role provided the org_id differs.
2017-05-02 15:45:48 +01:00
Torkel Ödegaard c1de972eb5 docs: wip templating docs 2017-05-02 16:22:31 +02:00
Andrei Stefan 53ccc6f48f fix theme switching in style guide 2017-05-02 16:45:34 +03:00
Andrei Stefan f43c749422 add plugin authoring tab in style guide 2017-05-02 16:15:28 +03:00
Andrei Stefan ad3da0f47c add icon guide 2017-05-02 15:57:02 +03:00
Dan Cech 665cf55e6e make generic oauth provider flexible enough to handle bitbucket's oauth implementation (#8248) 2017-05-02 14:37:56 +02:00
Daniel Lee b4cfb225cf tech: updates log15 vendor packages
Fixes #8262
2017-05-02 12:47:32 +02:00
Daniel Lee ac6c93b3da docs: add publish bash script 2017-05-02 10:20:09 +02:00
Torkel Ödegaard 0fd96b951a wip: heatmap refactor 2017-05-02 09:55:18 +02:00
Daniel Lee 83c138f575 docs: fix mistake in api docs 2017-05-02 09:39:50 +02:00
rogerswingle 02455753b5 Specify region for s3 (#8251) 2017-05-01 19:22:20 +02:00
Torkel Ödegaard 88dd8af4ce docs: Updates to screencasts & sharing docs 2017-04-28 13:43:00 +02:00
Torkel Ödegaard 4f9f186575 docs: overhauled annotation docs and moved some of the data source specific annotation docs to the respective data source doc pages, closes #1111 2017-04-28 12:51:21 +02:00
Torkel Ödegaard c46b73538c docs: minor update to troubleshooting guide, closes #8242 2017-04-28 11:16:05 +02:00
Torkel Ödegaard 0ac9ec8f7e docs: added restore instructions to backup section in upgrading doc article, closes #5680 2017-04-28 11:05:14 +02:00
Daniel Lee c6d5259c6d changelog: add note for #6564 2017-04-28 11:01:54 +02:00
Torkel Ödegaard 26f4a8e5a4 docs: added links to upgrading article 2017-04-28 10:58:26 +02:00
Torkel Ödegaard a93fa0acde docs: Added general upgrading docs / guide, closes #5905 2017-04-28 10:52:50 +02:00
Torkel Ödegaard b14c3d63e4 docs: added missing white space to config docs, #7073 2017-04-28 09:21:47 +02:00
Dan Cech 2361e2ddd9 fix moment.js deprecation warning when running tests 2017-04-27 15:29:32 -04:00
Dan Cech b1691f1cd1 add support for column aliases in table panel 2017-04-27 15:23:49 -04:00
Torkel Ödegaard 24e3777894 docs: updated make file for docs to support specifying env and version 2017-04-27 12:17:22 +02:00
Torkel Ödegaard f5a6c306a6 docs: worked on supporting doc versions 2017-04-27 09:58:45 +02:00
Mitja Z c92d719a72 added support for listening on unix socket #4030 (#8221) 2017-04-27 08:54:21 +02:00
Yaron de Leeuw d4f7a2bc99 minor code style: use strings.Replace fourth argument in influxdb (#8225)
Remove 5 lines from the codebase and an unecessary function,
by calling `strings.Replace` with -1 for the fourth argument.

A better alternative to what was merged in #8037
2017-04-27 08:51:43 +02:00
Matt Toback b909cfbde4 Refactored Alert Pulse (#8227)
* Moved the animation to the pseudo element which seemed to reduce the CPU usage in an observable way.

* Removed unnecessary style
2017-04-27 08:49:03 +02:00
Torkel Ödegaard a0d8afd435 ux: minor change to styles & heatmap option names 2017-04-26 14:18:58 +02:00
Daniel Lee f23239650e changelog: adds note for #514 2017-04-26 13:25:38 +02:00
Daniel Lee 8f4c797399 docs: update graph docs images + some text changes 2017-04-26 13:19:24 +02:00
Daniel Lee 6707d77af5 graph: dashes option only used in series overrides
Removes dashes option from Display tab so that it is only available
for series overrides. Also removes options for dash space and length
in series overrides and just uses the default values of 10 for both of
them.
2017-04-26 13:19:24 +02:00
smalik 1a3bc60e69 feat(dashed lines): Implementing dashed lines
Adding support for dashed lines using jquery.flot.dashes.js
2017-04-26 13:19:24 +02:00
Torkel Ödegaard 9e13c93379 docs: fixed redirects to panel docs for old location, caused by move in bd414c1793 2017-04-26 13:01:12 +02:00
Daniel Lee dc1178acc8 Merge pull request #8211 from necrolyte2/patch-1
duplicate keys for auth.github for allow_sign_up
2017-04-25 20:26:46 +02:00
Tyghe Vallard 1edeaa5e7e duplicate keys for auth.github for allow_sign_up 2017-04-25 11:11:32 -05:00
Torkel Ödegaard d2a22e7b23 influxdb: fixed template variable interpolation of multi valued variables when using raw query editor mode, fixes #8165 2017-04-25 17:27:57 +02:00
Torkel Ödegaard 19a04b7e4a change: minor change to health check api endpoint 2017-04-25 17:24:36 +02:00
Torkel Ödegaard f6f2d85aa7 change: minor change to health check api endpoint 2017-04-25 17:24:06 +02:00
Daniel Lee 6538e86793 webdav: add tests + path.join for public url param
Fixes #7914. Fixes #7921
2017-04-25 17:22:18 +02:00
fir4 6d9e8bd147 webdav: allow specification of a different public_url than upload url 2017-04-25 17:22:18 +02:00
Torkel Ödegaard 368e847d12 feat: added api health endpoint that does not require auth and never creates sessions, returns db status as well. #3302 2017-04-25 17:17:45 +02:00
Torkel Ödegaard fe64ed424e docs: removed deprecated api #8210 2017-04-25 16:17:05 +02:00
Torkel Ödegaard b780415f25 fix: change to remember me cookie encoding 2017-04-25 15:33:15 +02:00
Daniel Lee aee4af2148 api: omit unused fields for /api/datasources
Fixes #7822
2017-04-25 15:23:36 +02:00
Torkel Ödegaard 4720216e5e tech: upgraded macaron & macaron inject, binding, session 2017-04-25 15:16:32 +02:00
Torkel Ödegaard 9f462c0519 emails: fixed position of logo in emails, fixes #8094 2017-04-25 14:50:53 +02:00
Torkel Ödegaard b08b22192b docs: updated docs with fix info for #7659 2017-04-25 14:29:05 +02:00
Torkel Ödegaard c3bad4701a fix: annotations fix for snapshots, fixes #7659 2017-04-25 14:27:41 +02:00
Torkel Ödegaard 87c978ebc9 fix: better error handling / messsage when testing email notification when stmp is not configured, fixes #8093 2017-04-25 13:16:41 +02:00
Torkel Ödegaard 8beb873db4 docs: updated changelog with #6140 2017-04-25 13:04:22 +02:00
Torkel Ödegaard 8c448d95a1 Merge branch 'master' into mtanda-prometheus_table 2017-04-25 12:59:25 +02:00
Torkel Ödegaard 6ff1144abf refactoring: prometheus PR #6140 2017-04-25 12:57:23 +02:00
Dan Cech b489e93d94 Config Array Syntax (#8204)
* refactor util encryption library so it doesn't have to import log

* add util.SplitString to handle space and/or comma-separated config lines

* go fmt
2017-04-25 09:14:29 +02:00
Torkel Ödegaard d085aaad41 fix: variable srv addVariable function, only used in tests 2017-04-24 17:06:58 +02:00
Torkel Ödegaard 787fea90b9 heatmap: changed name of heatmap data format option, #8054 2017-04-24 15:17:57 +02:00
Torkel Ödegaard ae5e004b69 mysql: time filter macro updated 2017-04-24 14:55:43 +02:00
sbhenderson c485fed744 Fix to issue 2524 by limiting number of returned measurements for display. (#8092) 2017-04-24 11:44:29 +02:00
Daniel Lee 92d723d6f5 docker: remove downloaded temp files from opendata image 2017-04-24 11:40:38 +02:00
Torkel Ödegaard 9e0acdda23 Update ROADMAP.md 2017-04-24 11:28:09 +02:00
Torkel Ödegaard ef36ffb5d0 Update ROADMAP.md 2017-04-24 11:27:59 +02:00
Torkel Ödegaard 48acffe095 Update ROADMAP.md 2017-04-24 11:27:28 +02:00
Torkel Ödegaard 09b7516d47 Update ROADMAP.md 2017-04-24 11:27:05 +02:00
Torkel Ödegaard 16d27a4a8d Update ROADMAP.md 2017-04-24 11:25:44 +02:00
Torkel Ödegaard 663f7ee239 Update ROADMAP.md 2017-04-24 11:24:19 +02:00
Torkel Ödegaard b8259d7583 Create ROADMAP.md 2017-04-24 11:18:34 +02:00
Torkel Ödegaard 2b029912aa mysql: query editor fix 2017-04-24 10:58:53 +02:00
Daniel Lee 7784e4e24b mysql: add datetime type to table data 2017-04-23 21:56:58 +02:00
Daniel Lee 413ee33d5d mysql: fix go vet error 2017-04-23 20:07:20 +02:00
Daniel Lee d1e6f90f92 Merge pull request #8194 from Alexander-N/fix-orgfilter
fix: make organisation filter case insensitive
2017-04-23 19:55:35 +02:00
Torkel Ödegaard 8f17a84f31 mysql: added basic templating support 2017-04-23 14:22:47 +02:00
Torkel Ödegaard 253b8be449 mysql: updated test data 2017-04-23 13:50:49 +02:00
Alexander-N 01fc6da3b2 fix: make organisation filter case insensitive 2017-04-23 12:30:19 +02:00
Daniel Lee fdc68a8baa docker: adds mysqldb with test data
Downloads a large open dataset from NYC Open Data.
Then converts date columns into the mysql format.
2017-04-22 02:01:29 +02:00
Torkel Ödegaard 6ea99540ec Merge branch 'master' of github.com:grafana/grafana 2017-04-21 17:30:37 +02:00
Daniel Lee 6160978019 singlestat: with table data, support string values
If the selected table column is string then show that in the singlestat
2017-04-21 16:54:56 +02:00
Daniel Lee a49ef90a1d singlestat: value mapping for table data
Adds support for value mapping for table data in the single stat panel.
2017-04-21 16:43:14 +02:00
Torkel Ödegaard b22b3e5bb9 mysql: added default query template 2017-04-21 16:28:01 +02:00
Daniel Lee 8874be4c66 singlestat: add support for table data
If data is of type Table, then will return the first row of data. The
user can select which column should be shown in the SingleStat.
2017-04-21 16:17:31 +02:00
Daniel Lee 2c51f11440 singlestat: fix variable spelling 2017-04-21 16:17:31 +02:00
Torkel Ödegaard ea53e7221e mysql: added query help 2017-04-21 15:52:42 +02:00
Torkel Ödegaard 97e2d75f51 mysql: added support for tables in mysql queries 2017-04-21 15:07:43 +02:00
Torkel Ödegaard c78c460f79 mysql: worked on mysql data soruce 2017-04-20 17:10:23 +02:00
Daniel Lee 1bbc149089 docs: document API calls for /auth/keys 2017-04-20 13:59:36 +02:00
Daniel Lee 459d195291 docs: fix link 2017-04-20 13:35:51 +02:00
Daniel Lee 6ec1d16327 fix: cli admin reset-password fixes cmd args
Fixes the homepath and config command line args. This allows the
command to be used even when the homepath is different from the
default.

Fixes #7730
2017-04-20 13:30:17 +02:00
Torkel Ödegaard 50e70cf3db build: fixed unit test 2017-04-20 13:04:42 +02:00
Torkel Ödegaard fc878bc8ad build: fixed order 2017-04-20 11:59:11 +02:00
Torkel Ödegaard 2cb2c4073e build: moved copy node modules ahead of tslint 2017-04-20 11:27:12 +02:00
Torkel Ödegaard 4368c5a896 build: moved copy node modules ahead of tslint 2017-04-20 11:26:30 +02:00
Torkel Ödegaard f1276774a0 typescript: updated tslint and fixed new warnings 2017-04-20 11:16:37 +02:00
raj dutt 98266bd95a Update alerting.md
typo in API URL
2017-04-19 13:19:01 -04:00
Torkel Ödegaard 11806dfa78 mysql: progress 2017-04-19 17:26:37 +02:00
Daniel Lee 1e29d4fcfa docs: adds note in changelog for #8110 2017-04-19 15:07:47 +02:00
Daniel Lee ee3a553800 Merge pull request #8163 from bashgeek/telegram_metrics
Add metrics/matches to Telegram notifications (proposed fix for #8110)
2017-04-19 15:03:03 +02:00
Daniel Schmitz d123b951e9 Fixed parsing error 2017-04-19 17:02:52 +08:00
Torkel Ödegaard e164eba677 mysql: began work on backend macro engine 2017-04-19 10:10:08 +02:00
Daniel Schmitz 7078d5d524 Added metrics/matches to telegram notifications; Added some HTML to beautify 2017-04-19 15:53:23 +08:00
Mitsuhiro Tanda 62d11c147b (cloudwatch) fix dimension value find query (#8159) 2017-04-19 07:12:59 +02:00
Torkel Ödegaard 456b07b766 annotations: removing wip stuff so I can merge to master 2017-04-18 17:28:39 +02:00
Torkel Ödegaard 0bae7212f6 annotations: removed category stuff, my mistake, we need tags 2017-04-18 17:15:22 +02:00
Torkel Ödegaard 73718afb79 annotations: mini fix to event manager 2017-04-18 17:09:06 +02:00
Torkel Ödegaard 809467955a Merge branch 'master' into create-annotations 2017-04-18 17:07:44 +02:00
Torkel Ödegaard db36639ffc fix: #8111 2017-04-18 16:58:34 +02:00
Torkel Ödegaard 3ee886d0fb Merge branch 'query-references' 2017-04-18 16:30:28 +02:00
Torkel Ödegaard 85baa50194 recfactor: added unit test for the new scenario, #8143 2017-04-18 16:30:20 +02:00
Torkel Ödegaard 473006e8cf build: updated grunt watch to explain best usage 2017-04-18 15:36:38 +02:00
Kevin Conaway 5dad324ab7 #8144 Only require root to start/stop grafana (#8145) 2017-04-18 13:49:04 +02:00
Alexander Zobnin 7aa992bde4 initial category types 2017-04-17 18:56:39 +03:00
Alexander Zobnin f0816b37bd rename annotation_category to category 2017-04-17 18:53:10 +03:00
Dan Cech a64e000f1a process this.target separately to fix issues with tests 2017-04-17 11:10:55 -04:00
Dan Cech 715453204e make sure graphite queries containing references are properly updated 2017-04-17 10:47:25 -04:00
Alexander Zobnin 5df82be290 create-annotations: fix missing lodash import 2017-04-17 11:37:23 +03:00
Thomas Szymanski f2dffeb543 Influxdb datasource: fix language in stacking helpful info section (#8134) 2017-04-16 11:56:29 +02:00
Torkel Ödegaard fa2a7db657 ux: create annotations 2017-04-14 23:10:56 +02:00
Torkel Ödegaard 03ef1fd758 refactoring: event / annotation handling in graph panel broken out 2017-04-14 22:56:01 +02:00
Torkel Ödegaard 60ef7d8768 Merge branch 'master' into create-annotations 2017-04-14 22:36:34 +02:00
Torkel Ödegaard aa47b9bf5c refactoring: simplified backend_srv and subUrl handling, #8122 2017-04-14 19:01:08 +02:00
Torkel Ödegaard b77991f69b refactoring: minor changes to #8122 2017-04-14 16:00:52 +02:00
Dan Cech f490c5f12c use X-Grafana-Org-Id header to ensure backend uses correct org (#8122) 2017-04-14 15:47:39 +02:00
Ivan Babrou fb163450a5 Change prometheus semantics from step to min step (#8073)
Previously `Step` parameter would set a hard value for any zoom level.

Now it's renamed to `Min step` and sets the minimal value of `step` parameter
to Prometheus query. User would usually want to set it to the scraping interval
of the target metric to avoid having shap cliffs on graphs and extra load
on Prometheus. Actual `step` value is calculated as the minimum of automatically
selected step (based on zoom level) and user provided minimal step. If user
did not provide the step, then automatic value is used as is.

Example bahavior for `60s` scrape intervals:

* `5s` automatic interval, no user specified min step:
  * Before: `step=5`
  * After: `step=5`
* `5s` automatic interval, `1m` user specified min step:
  * Before: `step=5`
  * After: `step=60`
* `5m` automatic interval, `1m` user specified min step:
  * Before: `step=60` (not really visible, too dense)
  * After: `step=300` (automatic value is picked)

See:

* https://github.com/grafana/grafana/issues/8065
* https://github.com/prometheus/prometheus/issues/2564
2017-04-14 14:51:22 +02:00
Torkel Ödegaard a151de1d37 progess on adding annotations 2017-04-14 14:43:06 +02:00
Torkel Ödegaard 0335c1f368 ux: updated styles a bit 2017-04-14 13:08:03 +02:00
Torkel Ödegaard ea92ddccb3 create annotations progress 2017-04-14 12:46:02 +02:00
Torkel Ödegaard ff426ae9a3 more work on annotations 2017-04-14 12:23:32 +02:00
Torkel Ödegaard dbe5480edc create annotations work 2017-04-14 11:41:02 +02:00
Torkel Ödegaard 2fce88ee62 ux: popover forms 2017-04-14 10:18:49 +02:00
Dan Cech 3a607f96a3 fix bug in log sprintf calls (#8124) 2017-04-14 07:45:36 +02:00
Torkel Ödegaard c68fffcd6d ux: popover forms 2017-04-13 20:28:13 +02:00
Torkel Ödegaard 2f61fc6afe ux: made progress on popover forms 2017-04-13 18:39:49 +02:00
Torkel Ödegaard dbeeb32ab6 Merge branch 'master' into popover-forms 2017-04-13 16:22:08 +02:00
Alexander Zobnin ab99a7c1c7 graph(create annotation): add initial annotation_category table 2017-04-13 16:57:22 +03:00
Torkel Ödegaard dd3e594dd7 fix: scroll issue and positioning of info-popover 2017-04-12 21:20:47 +02:00
Torkel Ödegaard 9c246ba301 docs: fixed http docs for alert notifications, fixes #8105 2017-04-12 20:57:22 +02:00
Alexander Zobnin 2142323da9 graph(create annotation): refactor, AddAnnotationModalCtrl 2017-04-12 21:07:39 +03:00
Alexander Zobnin 17d3970673 graph(create annotation): push one annotation with time from and time to 2017-04-12 21:04:18 +03:00
Alexander Zobnin ef99ff0ad7 graph(create annotation): use single description for range 2017-04-12 20:37:33 +03:00
Alexander Zobnin 8a1c35e1c2 graph(create annotation): refactor, fix two modal after range selection
bind create annotation handler directly to plotclick event, not to global graph-click
2017-04-12 20:27:32 +03:00
Torkel Ödegaard de21be30d2 ux: working on how to show form in popover 2017-04-12 17:28:32 +02:00
Alexander Zobnin eeb998d712 Merge remote-tracking branch 'upstream/create-annotations' into create-annotations 2017-04-12 17:36:40 +03:00
Torkel Ödegaard 593b2ef866 annotation: added region support to annoations 2017-04-12 16:26:34 +02:00
Torkel Ödegaard b867921b3b annotation: cleanup 2017-04-12 15:49:59 +02:00
Torkel Ödegaard 0156a94a49 annotations: you can now read annoations via manually created annoation query 2017-04-12 15:46:41 +02:00
Alexander Zobnin aff6aa081c Merge remote-tracking branch 'upstream/create-annotations' into create-annotations 2017-04-12 16:20:36 +03:00
Alexander Zobnin d2f3d7d138 graph(add annotation): get alerts for all panels 2017-04-12 16:06:48 +03:00
Torkel Ödegaard 78f4bd2de9 Merge branch 'create-annotations' of github.com:grafana/grafana into create-annotations 2017-04-12 15:01:31 +02:00
Torkel Ödegaard 752b42798a annotations: added new options hide toggle, and show option 2017-04-12 15:01:17 +02:00
Alexander Zobnin 232513bb4e graph(add annotation): refactor
pass ctrlKey and metaKey through flot events
2017-04-12 15:26:34 +03:00
Tyndie 20ac8bf83e Set .go tab size to 4 in .editorconfig (#8099)
Tab size was added as 2 in .editorconfig but a tab size of 4 is used
throughout go code base.

This can cause editors such as vscode to automatically reformat open .go
files to tab size 2 from 4.
2017-04-12 10:59:50 +02:00
Torkel Ödegaard 8eb112d119 plugins: refactoring builtIn data source concept, now means data source plugins that you do not need to add via data sources page, that is automatically added as selectable data source, #8095 2017-04-12 08:23:44 +02:00
Torkel Ödegaard e80494390a Merge branch 'always_displayed_datasources' of https://github.com/ctide/grafana into ctide-always_displayed_datasources 2017-04-12 07:44:59 +02:00
Torkel Ödegaard b3df1aa9bd org: fixed issue with orgId query param redirect handling when grafana is under subpath and reverse proxy, fixes #8089 2017-04-12 07:11:08 +02:00
Mitsuhiro Tanda d2bf2e86ed upgrade to aws-sdk-go v1.8.11 (#8091)
* upgrade to aws-sdk-go v1.8.11

* fix test
2017-04-12 06:40:44 +02:00
Torkel Ödegaard 09cec3118f docs: updated go and node version requirements for building, fixes #8097 2017-04-12 06:39:26 +02:00
Chris Burkhart d12dc2bfa7 Add alwaysDisplayed option to datasource plugins, this will allow it to show up as an option to select when adding queries to a panel without actually adding it as a datasource. 2017-04-11 13:47:53 -07:00
Torkel Ödegaard 07466b6725 security: fixed returning info on weither user exists or not in password reset call, fixes #7619 2017-04-11 16:50:16 +02:00
Torkel Ödegaard a109049de4 smpt: Added smtp docker block 2017-04-11 16:41:07 +02:00
Torkel Ödegaard 89a7c2c686 influxdb: validate database exist when saving data source, fixes #7864 2017-04-11 15:05:30 +02:00
Torkel Ödegaard 83e0f69cde Merge branch 'master' of github.com:grafana/grafana 2017-04-11 14:43:40 +02:00
Torkel Ödegaard 9099119f62 grunt: minor watch fix 2017-04-11 14:42:35 +02:00
Torkel Ödegaard 9bdcc4ec5f influxdb: holt winters edits 2017-04-11 14:40:08 +02:00
Torkel Ödegaard e0640487df Update CHANGELOG.md 2017-04-11 13:38:13 +02:00
Daniel Lee 3ca3c96226 profiling: adds profiling and tracing
If grafana-server binary is started with the -profile flag then
tracing will create a trace.out file and pprof data can be accessed
on the 6060 port.

A custom port for pprof profiling can be set with the -profile-port
flag.
2017-04-11 10:32:18 +02:00
Torkel Ödegaard 702978eff7 ux: more work on panel menu 2017-04-11 10:05:30 +02:00
Alexander Zobnin f42202e665 Merge branch 'master' into graph-annotations 2017-04-11 10:27:37 +03:00
Alexander Zobnin 70bca219e3 graph(add annotation): Add keybinding for CTRL key 2017-04-11 10:24:21 +03:00
Torkel Ödegaard a47183f740 ux: panel title ux improvements poc 2017-04-11 07:43:40 +02:00
Alexander Zobnin d553498a33 graph(add annotation): initial backend implementation #1286 2017-04-10 20:22:58 +03:00
Torkel Ödegaard 0384eecf5c fix: minor fix for bug when saving alert with empty message, fixes #7927 2017-04-10 15:26:05 +02:00
Daniel Lee 2877ad1a7d docs: manual installation of plugins 2017-04-10 15:01:40 +02:00
Alexander Zobnin 362860f687 graph(add annotation): able to select region (start and stop time) #1286 2017-04-10 12:45:08 +03:00
Davide Setti 997da1b266 fix a typo in the shortcut help modal (#8078)
Collapse all ros -> Collapse all rows
2017-04-10 10:10:32 +02:00
Torkel Ödegaard 337b3295bd docs: updated changelog 2017-04-10 09:45:44 +02:00
Simen Bekkhus 21ae987bcd If earlier dashboard refresh was supressed, force a new one on page becoming visible (#8076) 2017-04-10 09:43:35 +02:00
Alfred Krohmer 41171f8a5c Add a link to a graph image in Pushover notifications (#8075) 2017-04-10 09:17:37 +02:00
Alexander Zobnin 32d34aed7a graph: initial Add Annotation flow #1286 2017-04-08 19:44:40 +03:00
Torkel Ödegaard efca9e904d Merge branch 'mixed_typeahead' of https://github.com/mtanda/grafana into mtanda-mixed_typeahead 2017-04-07 12:17:19 +02:00
Torkel Ödegaard 1cd632cc43 plugins: added state property to plugins 2017-04-07 12:00:03 +02:00
Torkel Ödegaard 26804d630f Merge branch 'master' into sql-proxy 2017-04-07 10:34:51 +02:00
Torkel Ödegaard 3b47efe70e graph: minor change to histogram buckets input field 2017-04-07 10:16:57 +02:00
Torkel Ödegaard 7ec6e84fe8 adhocfilters: minor escape change 2017-04-07 10:08:16 +02:00
Alexander Zobnin 7e14797b10 graph: initial histogram support #600 (#8053)
* graph: initial histogram support #600

* graph histogram mode: add Bars number option

* graph histogram mode: fix X axis ticks calculation

* graph histogram mode: change bar style (align and width)

* refactor(graph): move histogram functions into separate module

* graph histogram mode: rename series to "count"

* graph histogram mode: fix errors if no data

* refactor(graph and heatmap): move shared code into app/core

* graph: add tests for histogram mode
2017-04-07 10:07:30 +02:00
tamayika e6cc5df9d9 Fix restoration of ad-hoc variable value issue (#8057)
* Fix restoration of ad-hoc variable value issue

* Escape delimiters in ad-hoc variable URL

* Remove unnecessary newline
2017-04-07 09:31:36 +02:00
wrp c219498aab Fix typo: "your" -> "your're" (#8064) 2017-04-07 09:29:46 +02:00
Torkel Ödegaard f5f0d94ad4 fix: temp/testing fix for hanging issue, #8033 2017-04-06 13:18:50 +02:00
Calle Pettersson a79102b42d Fix ldap ca_cert example/docs for proper syntax (#8044) 2017-04-06 09:53:11 +02:00
Alexander Zobnin 2b81bfe9bf alerting: fix $timeFilter cannot be used twice (#7969) (#8037) 2017-04-05 17:17:55 +02:00
Alexander Zobnin 308d46e4ef Fix 8013 (#8027)
* Add @ngInject to HeatmapCtrl constructor, issue #8013

* Remove unused loadPluginCss
2017-04-04 11:02:25 +02:00
Torkel Ödegaard 48c4e549f5 Revert "support panel repeat for datasource template variable (#7711)"
This reverts commit 554f972a25.
2017-04-04 09:28:33 +02:00
Torkel Ödegaard dd800fd14d fix: table panel could not show annotations due to bug introduced in 4.2, fixes #8023 2017-04-03 22:07:09 +02:00
Torkel Ödegaard 95e0010a5b fix: sqlite3 and concurrent write requests caused database locked error some times, depending on how many concurrent requests and speed of disk drive. Fixed by reducign the number of concurrent db connections to 1 for sqlite3, fixes #7992 2017-04-03 09:42:11 +02:00
Torkel Ödegaard 4a2efb1007 alerting: removed width restriction on message, fixes #8000 2017-03-31 23:07:57 +02:00
Alexander Zobnin ecd404335e heatmap: fix error with null values in ES converter (#7999) 2017-03-31 17:13:26 +02:00
Torkel Ödegaard f77f8ebfc6 heatmap: changes to color spectrum, inverted some on dark theme 2017-03-31 17:12:50 +02:00
Torkel Ödegaard 3ed1600b90 Merge branch 'master' of github.com:grafana/grafana 2017-03-31 16:09:16 +02:00
Torkel Ödegaard 39e45004cd heatmap: inverted the color schemes 2017-03-31 16:09:00 +02:00
Torkel Ödegaard 4445c9ce60 Merge branch 'heatmap-panel' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-heatmap-panel 2017-03-31 14:26:52 +02:00
Torkel Ödegaard 5af81b974e mysql: graph showing 2017-03-31 13:57:10 +02:00
Torkel Ödegaard a7babfb7cf tech: updated xorm libs 2017-03-31 12:54:39 +02:00
Torkel Ödegaard bd3f825a6e updated go-sql-driver 2017-03-31 12:50:07 +02:00
Torkel Ödegaard e5a5bef200 mysql: minor update 2017-03-31 12:49:05 +02:00
Alexander Zobnin b18ed0b98f heatmap: calculate bucket size automatically for ES histogram 2017-03-31 12:51:43 +03:00
Torkel Ödegaard d6d2080f11 mysql: minor progress on response processing 2017-03-31 11:45:25 +02:00
Alexander Zobnin cb136c07b8 heatmap: add function for bucket size calculation 2017-03-31 11:44:44 +03:00
Torkel Ödegaard af0ecd440f Update CHANGELOG.md 2017-03-31 07:32:44 +02:00
Mitsuhiro Tanda 554f972a25 support panel repeat for datasource template variable (#7711)
* support panel repeat for datasource template variable

* support All option
2017-03-31 07:31:15 +02:00
Alexander Zobnin 9ddfeaa9c2 heatmap: initial ES histogram support 2017-03-30 21:36:36 +03:00
Torkel Ödegaard bd4f073425 mysql: minor update 2017-03-30 20:23:40 +02:00
Torkel Ödegaard 998f04e1e8 mysql: testdata 2017-03-30 20:01:04 +02:00
Alexander Zobnin 3170f0d84a heatmap: add ES histogram converter 2017-03-30 20:55:10 +03:00
Torkel Ödegaard 34d92b0e79 mysql: starting work on test data 2017-03-30 18:03:50 +02:00
Alexander Zobnin 114431beed heatmap: add tests for heatmap_data_converter 2017-03-30 18:21:22 +03:00
timolehto 6e304e6e42 comments: Typos in defaults.ini (#7988) 2017-03-30 17:12:00 +02:00
Torkel Ödegaard 080d2a2054 mysql: reading arbitrary SQL data in go is really strange, data is only in strings? 2017-03-30 13:46:46 +02:00
Kazumasa Kohtaka aada5181fa docs: fix typo in a section describing search API (#7984) 2017-03-30 08:54:32 +02:00
Torkel Ödegaard 00fcaaf171 mysql: commented out old code from old PR 2017-03-29 22:55:37 +02:00
Torkel Ödegaard 8f90c6115d mysql: progress on mysql data source 2017-03-29 22:54:18 +02:00
Torkel Ödegaard 1ecdf34938 sql: wip mysql stuff 2017-03-29 20:43:20 +02:00
Torkel Ödegaard c33fa27ed8 Update latest.json 2017-03-29 17:28:52 +02:00
Torkel Ödegaard 6965064ea9 Merge branch 'master' into sql-proxy 2017-03-29 16:40:14 +02:00
Torkel Ödegaard 91c184d3e0 elasticseach: fixed broken unit test 2017-03-29 16:33:44 +02:00
Torkel Ödegaard 3b235612fd elasticsearch: improve validation and error message when adding/testing elasticsearch ds, #7836 2017-03-29 16:03:28 +02:00
Daniel Lee 5702c57452 panel: remove unneeded options for tooltip 2017-03-29 16:01:27 +02:00
Alexander Zobnin 84b15fc74c Merge branch 'master' into heatmap-panel 2017-03-29 15:46:04 +03:00
Torkel Ödegaard 085c4c56b8 elasticearch: added support for histogram aggregations, closes #3164 2017-03-29 13:44:50 +02:00
Alexander Zobnin 65a829b64d heatmap tests: fix timezone-dependent test error 2017-03-29 13:41:19 +03:00
Alexander Zobnin 7c5b9f8c5b heatmap tooltip: change "values" label to "count" 2017-03-29 12:41:34 +03:00
Seuf 319b8d8fca Configurable signout menu activation (#7968) 2017-03-29 11:33:28 +02:00
Daniel Lee ac39ed4218 panel: fixes #7970. Description tooltip overflow.
This seems to work for the three use cases:

- Overflow on the left
- Overflow on the right
- Elements that are out of view on page load
2017-03-29 11:16:16 +02:00
Alexander Zobnin 7770c38e30 heatmap: test for Y axis rendering 2017-03-29 11:30:30 +03:00
Alexander Zobnin 72e313a3dd heatmap: fix type error on buckets object 2017-03-29 11:29:58 +03:00
Torkel Ödegaard 98554e9fbe docs: added config entry for ldap allow_sign_up option, #7972 2017-03-29 08:42:10 +02:00
Alexander Zobnin ac347fa06a heatmap: fix error while loading panel in editor mode 2017-03-28 18:09:15 +03:00
Alexander Zobnin ece6fd73a1 heatmap: add initial rendering tests 2017-03-28 17:46:10 +03:00
Dan Cech 24d4e50343 utf8mb4 encoding (#7959)
* use utf8mb4 character set for connections to mysql

* use utf8mb4 character set for tables, shorten varchar fields used in unique indexes

* migration type to update table character set

* update table character sets

* set charset for temp_user.status

* gofmt
2017-03-28 14:34:53 +02:00
Jaroslav Hanslík e91a078105 Slack notification should contain fallback text (#7961) 2017-03-28 10:05:44 +02:00
Dan Cech dde8583db8 xorm engine.SetMaxConns is a deprecated alias for engine.SetMaxOpenConns 2017-03-27 18:04:03 -04:00
Alexander Zobnin c9801595e5 heatmap: add heatmap_ctrl tests and fix errors 2017-03-27 19:04:29 +03:00
Daniel Lee 09ec8cdebe Merge pull request #7947 from crmac/docs-whats-new-4.0-fixes
Fix some spelling/grammar/wording problems in What's New in Grafana v4.0
2017-03-27 09:01:09 +02:00
crmacleo 54883e09d5 docs: fix some spelling/grammar/wording issues 2017-03-26 17:27:19 -07:00
Alexander Zobnin 0a56db7745 Add unit tests for heatmap_ctrl. 2017-03-26 18:22:54 +03:00
Alexander Zobnin 0023657701 Fix bucket size calculation if all values are 0; 2017-03-24 15:26:27 +03:00
Alexander Zobnin 96e91b5a0f Move css styles to public/sass/components/_panel_heatmap.scss 2017-03-24 15:15:01 +03:00
Alexander Zobnin 68f5e75eba Move heatmap panel into core grafana. 2017-03-24 14:18:26 +03:00
Daniel Lee 44c9ba2edf docs: add query parameter to api user search
ref #7469
2017-03-23 18:09:14 +01:00
Daniel Lee 08984448d0 Merge pull request #7923 from huydx/patch-1
Update README.md
2017-03-23 17:43:07 +01:00
0x6875790d0a 77ca62b1bc Update README.md 2017-03-24 01:04:18 +09:00
Daniel Lee f45d637025 auth: fix warning in test 2017-03-23 15:52:08 +01:00
Daniel Lee 5773499dba docs: adds note for #6428 2017-03-23 15:33:59 +01:00
Daniel Lee beb85f413a oauth: delete session key instead of set to empty
Adds the Delete function to the Session wrapper so that the Macaron
function for deleting keys from a Session can be used.

https://go-macaron.com/docs/middlewares/session#implement-provider-interface
2017-03-23 15:26:13 +01:00
Daniel Lee 79cef75fed Merge pull request #7426 from Altoros/altoros/authorization-errors
Add common type for oauth authorization errors
2017-03-23 15:25:35 +01:00
Torkel Ödegaard 83d864e7e4 fix: graph and fill below to issue, fixes #7916 2017-03-23 14:23:22 +01:00
Torkel Ödegaard 6828d35480 packaging: build fix 2017-03-23 12:38:42 +01:00
Torkel Ödegaard 887867165c packaging: testing fix 2017-03-23 11:31:47 +01:00
Torkel Ödegaard 7864828e75 packaging: publish nightly builds 2017-03-23 11:10:01 +01:00
Tobias Wolf 68e6700663 Add an After= DB ordering relation to systemd .service (#7903)
In systemd `After=` merely codes an ordering relation and does not start
other units.

Grafana needs to specify that it wants to start up _after_ either of the
supported DB services have started, _if they start_.

Enabling the database services, however, is out of scope for Grafana.
2017-03-22 16:49:35 +01:00
Torkel Ödegaard 8aa00f9227 build: updated publish script 2017-03-22 15:07:24 +01:00
Torkel Ödegaard b404f32a09 docs: updated download links 2017-03-22 14:26:57 +01:00
Daniel Lee 01f646c191 docs: adds 4.2.0 release date 2017-03-22 14:06:53 +01:00
Torkel Ödegaard 7dd09d4185 Update CHANGELOG.md 2017-03-22 10:51:06 +01:00
Matt 578ba9bbd5 Added scientific notation as a unit for #7763 (#7781) 2017-03-22 10:49:31 +01:00
Torkel Ödegaard 362a349d9f cloudwatch: added #7892 to changelog 2017-03-22 07:20:46 +01:00
gomlgs e99137598e Cloudwatch: Correctly obtain IAM roles within ECS container tasks. (#7892)
We now obtain credentials based on the container task's role
rather than just relying on the credentials of the enclosing
container instance.

Fixes #6700.
2017-03-22 07:15:19 +01:00
Trent White 5ed7d65b0e orange grafana.com seemed too much. making it gray 2017-03-21 13:13:35 -04:00
Torkel Ödegaard b21ad3c376 Merge branch 'master' of github.com:grafana/grafana 2017-03-21 17:10:54 +01:00
Trent White a510d85480 format css 2017-03-21 11:17:28 -04:00
Trent White 182a30e22c style tweak 2017-03-21 11:16:42 -04:00
Trent White d4f2f41088 add dashboard and plugin icons to plugin list and dash search 2017-03-21 11:12:58 -04:00
Daniel Lee 69bec98962 chore: update all grafana.org urls to .com 2017-03-21 15:37:55 +01:00
Daniel Lee b9940e618c profile: locks login fields if disable_login_form
If the auth config variable, disable_login_form, is set to true then
the username and email fields are set to read-only on the profile page.

The reason for this is so that the user does not lock themselves out by
changing their email address or username. Or create a new user by
changing both.

ref #7810
2017-03-21 14:42:32 +01:00
Torkel Ödegaard 0c372f0b85 Merge branch 'v4.2.x' 2017-03-21 10:36:40 +01:00
Torkel Ödegaard 99064603a4 packaging: added rpm posttrans script to fix config file change, fixes #7686 2017-03-21 10:36:15 +01:00
Daniel Lee 5ecc8a171f template: fix validation for required selects
Since upgrading to Angular 1.6.1, selects with a default empty option
no longer show a popup with an error on submit. This fix adds an
empty option that is then removed with ng-if. Having the default
option set to null or undefined seems to be the cause of the bug.

The list of changes in 1.6 is here but could not find any obvious
cause for this bug:

https://docs.angularjs.org/guide/migration#migrating-from-1-5-to-1-6
2017-03-21 10:31:42 +01:00
Daniel Lee 3d3357ee41 docs: add note for #7614 2017-03-20 23:14:33 +01:00
Daniel Lee 94498d533b template: fix validation for required selects
Since upgrading to Angular 1.6.1, selects with a default empty option
no longer show a popup with an error on submit. This fix adds an
empty option that is then removed with ng-if. Having the default
option set to null or undefined seems to be the cause of the bug.

The list of changes in 1.6 is here but could not find any obvious
cause for this bug:

https://docs.angularjs.org/guide/migration#migrating-from-1-5-to-1-6
2017-03-20 22:51:55 +01:00
Daniel Lee 65910db991 template: tweak to warning message 2017-03-20 17:14:24 +01:00
Torkel Ödegaard c1c241698a Merge branch 'master' of github.com:grafana/grafana 2017-03-20 16:05:13 +01:00
Torkel Ödegaard adf7645bf5 docs: added alias 2017-03-20 16:04:57 +01:00
Daniel Lee e527aebbf1 Merge pull request #7758 from thuck/template_self_reference_7614
Validate query to avoid self-reference of variable #7614
2017-03-20 15:33:48 +01:00
Torkel Ödegaard f78a28395d s3: support for alternative s3 bucket url syntax, closes #7871 2017-03-20 14:11:37 +01:00
Torkel Ödegaard be5c4f47a6 s3: support for alternative s3 bucket url syntax, closes #7871 2017-03-20 14:10:44 +01:00
Torkel Ödegaard 3f76d76be6 Merge branch 'v4.2.x' 2017-03-20 13:39:53 +01:00
Torkel Ödegaard 122b4695e7 Update CHANGELOG.md 2017-03-20 13:37:55 +01:00
Andrii Skomorokhov f2e4269242 Fixed position of tooltip with description at graph. (#7854) 2017-03-20 13:36:00 +01:00
Torkel Ödegaard 711081950e lib: updated dependency, fixes #7579 2017-03-20 13:30:22 +01:00
Torkel Ödegaard dce63ec1d8 docs: updated changelog 2017-03-20 11:40:06 +01:00
Torkel Ödegaard 54c6699c2b usermanagement: disable invite features when login form is disabled, cherry picked from master, #7875 2017-03-20 11:37:33 +01:00
Torkel Ödegaard 970619ed52 Merge branch 'disable-login' 2017-03-20 11:18:41 +01:00
Torkel Ödegaard 6f324cd794 refactor: minor refactorings of #7876 2017-03-20 11:18:29 +01:00
Torkel Ödegaard 4d4e165be7 links: updated links from grafana.net to grafana.com 2017-03-20 10:20:32 +01:00
Mitsuhiro Tanda a67497e679 add new s3 metrics (#7846) 2017-03-20 09:09:08 +01:00
Jens L 5785bfe0cc Add more information for generic oauth2 (#7880)
Add reference to OpenID's userinfo_endpoint (as in #6351)
2017-03-20 08:36:43 +01:00
Denis Doria 87027b0f77 Do not collapse if there is only 1-3 queries #7836 (#7878)
Also has the side effect of new panels having not collapsed queries when
being created
2017-03-18 15:23:40 +01:00
Torkel Ödegaard 50718b592c docs: added aliases 2017-03-18 08:25:26 +01:00
Dan Cech 51bdb60296 fix docs.grafana.org/plugins 2017-03-17 18:41:02 -04:00
Dan Cech 737c29ec8c disable inviting new users to orgs if login form is disabled 2017-03-17 16:35:05 -04:00
Torkel Ödegaard aaf013b360 Merge branch 'master' of github.com:grafana/grafana 2017-03-17 19:33:38 +01:00
Torkel Ödegaard 19516ebcce docs: minor fix 2017-03-17 19:33:31 +01:00
Andrii Skomorokhov 5cb51631db Fixed position of tooltip with description at graph. (#7854) 2017-03-17 11:48:28 +01:00
Daniel Lee 76fa363613 Merge pull request #7867 from pandurang90/opsgenie_typo_fix
Typo fix for OpsGenie
2017-03-17 10:31:47 +01:00
Pandurang Waghulde f3cce7efc9 typo fix for OpsGenie 2017-03-17 12:57:52 +05:30
Daniel Lee 38cab50a0c Merge pull request #7843 from gkman/patch-1
Update alerting.md
2017-03-16 12:41:03 +01:00
Torkel Ödegaard 7856e2f16b fix: metrics_panel and time range issue introduced earlier today, fixes #7849 2017-03-16 12:20:23 +01:00
Torkel Ödegaard 32f89f65da fix: Data source group by time interval did not take effect on initial query after dashboard load, fixes #7839 2017-03-16 09:54:33 +01:00
Gregory Kman e9ad71abed Update alerting.md
Add missing `"`
2017-03-15 12:00:03 -05:00
Torkel Ödegaard 0b73369c4b docs: fixed docs title issue 2017-03-14 12:21:22 +01:00
Torkel Ödegaard b05fca4fd7 Merge branch 'master' of github.com:grafana/grafana 2017-03-14 11:07:37 +01:00
Torkel Ödegaard 23954f775b Update ISSUE_TEMPLATE.md 2017-03-14 09:46:32 +01:00
Torkel Ödegaard f42ef5fe17 Update ISSUE_TEMPLATE.md 2017-03-14 09:44:19 +01:00
Torkel Ödegaard 69ff97305f Update ISSUE_TEMPLATE.md 2017-03-14 09:44:09 +01:00
Torkel Ödegaard 967cdd73e1 Update ISSUE_TEMPLATE.md 2017-03-14 09:43:50 +01:00
Torkel Ödegaard 9e27b8ee47 Update README.md 2017-03-13 23:05:47 +01:00
Torkel Ödegaard 98b65641c3 Update README.md 2017-03-13 23:05:04 +01:00
Torkel Ödegaard 0bb8a920ca Update README.md 2017-03-13 21:32:28 +01:00
Torkel Ödegaard b471e7e448 updated 2017-03-13 20:17:46 +01:00
Torkel Ödegaard e189400f7c Merge branch 'master' into rebrand-docs 2017-03-13 20:14:02 +01:00
Daniel Lee b93a2887a8 docs: add note for #3090 2017-03-13 11:44:02 +01:00
Daniel Lee 84ef6b9d48 Merge branch 'bigbenhur-autologscale'
Closes #5278 and closes #3090
2017-03-13 11:17:45 +01:00
Denis Doria 891df21969 Small fix for the Y-Max/Y-Min inputs on Axes (#7811) 2017-03-13 09:32:36 +01:00
Daniel Lee 77921c4dcd renderpng: fixes invalid image link (#7797)
Closes #7770
2017-03-13 09:31:59 +01:00
Jan Rückert 8637207b55 Change 60-day date range back to 90 days (#7803) 2017-03-11 16:17:35 +01:00
Daniel Lee 2580b61088 docs: adds note for #7663 2017-03-11 14:05:25 +01:00
Daniel Lee 6799b766a4 Merge pull request #7775 from hagen1778/prometheus-textarea-query
Make Prometheus query field a textarea #7663
2017-03-11 14:00:37 +01:00
Torkel Ödegaard 25318f5848 Merge branch 'master' into rebrand-docs 2017-03-11 12:36:58 +01:00
Daniel Lee e19b48840f graph: merge fixes for #5278
This is an old PR so had some problems after merging in master.

- Fix for min and max that were not getting passed into the
applyLogScale function
- Fix for when min/max were undefined rather than null
- Fix for decimal ticks, as this PR populates the ticks itself then
it also needs to calculate the number of decimal places too. Flot
was showing the wrong number of decimal places sometimes otherwise
on the y-axis.
2017-03-10 18:46:36 +01:00
Daniel Lee 28cf229707 Merge branch 'autologscale' of git://github.com/bigbenhur/grafana into bigbenhur-autologscale 2017-03-10 11:57:00 +01:00
Daniel Lee 22553b154a docs: add note for #7799 2017-03-10 10:41:30 +01:00
Daniel Lee 9b806bc209 Merge pull request #7799 from thuck/influxdb_limit_fix_glow
Small fix for the "glow" when focus the field for LIMIT and SLIMIT
2017-03-10 09:12:53 +01:00
thuck 58afb1c7d6 Small fix for the "glow" when focus the field for LIMIT and SLIMIT 2017-03-09 21:22:40 +01:00
Daniel Lee 74c795b294 panel: use meta.soloMode instead of url check
when checking if rendering a png for lazy loading of panels.
2017-03-09 16:55:16 +01:00
Daniel Lee c176de89c9 docs: add notes for #6065 #7232 and #5216 2017-03-09 14:31:27 +01:00
Daniel Lee a30cf204d7 influx: small ux changes to query editor 2017-03-09 14:18:36 +01:00
Torkel Ödegaard 835d420294 alerting: fixed width of query component in alert tab 2017-03-09 12:57:58 +01:00
Torkel Ödegaard 952cc1d883 alerting: fixed width of query component in alert tab 2017-03-09 12:56:49 +01:00
Daniel Lee 2f5814d51c Merge pull request #7735 from thuck/influxdb_limit
Included LIMIT, SLIMIT and ORDER BY time for influxdb. closes #6065 and closes #7232
2017-03-09 09:23:04 +01:00
Torkel Ödegaard 7f8a3a0a2d dashboard: lazy loading panels as they become visible,fix, removed debunce #5216 2017-03-09 09:08:34 +01:00
Torkel Ödegaard aee8f0b75e opentsdb: fix for OpenTSDB and multi value template variable in metric field, fixes #7754 2017-03-09 08:28:31 +01:00
Torkel Ödegaard b272f5144a fix: graphite query ctrl, removed unnesserary check for empty paths, fixes #7740 2017-03-09 07:31:00 +01:00
Torkel Ödegaard 073dec8ba8 Merge branch 'master' of github.com:grafana/grafana 2017-03-09 07:06:04 +01:00
Torkel Ödegaard bb2eb00b0e minor data source edit form improvement 2017-03-09 07:05:49 +01:00
Mitsuhiro Tanda be123a07c5 (prometheus) adjust annotation step (#7768)
* (prometheus) adjust annotation step

* (prometheus) add step option
2017-03-09 06:53:50 +01:00
hagen1778 04d90d7139 Make Prometheus query field a textarea #7663 2017-03-08 21:30:20 +02:00
thuck b8a82827b9 Fix ORDER BY to look like GROUP BY 2017-03-08 20:22:01 +01:00
Daniel Lee 588955c752 Merge branch 'jifwin-load_on_Scroll' 2017-03-08 19:06:59 +01:00
Daniel Lee bd348a47c7 panel: update to #7452 panel loading on scroll
Moves the logic up a level to the panel_ctrl. This cleans up the code
and makes the lazy loading available for all panels.

Removes the config option and making this default behavior. We can
add back the config option if we get feedback that it is needed during
the beta phase of the v4.3.0 release.

Unbind the scroll handler on panel destroy to avoid memory leaks.

Fix for png rendering, it did not match all forms of dashboard-solo.
e.g. /render/dashboard-solo/db...

Fix for when taking a snapshot. All the panels get refreshed then
even the panels that are not visible.

Closes #5216.
2017-03-08 19:02:45 +01:00
Daniel Lee 4f06202e9a build: bumped version to 4.3.0 2017-03-08 17:10:51 +01:00
Daniel Lee 61844cb0da Merge branch 'master' into v4.2.x 2017-03-08 17:09:33 +01:00
Daniel Lee 5037dae959 docs: move #7469 to v4.2.0 2017-03-08 17:09:08 +01:00
Daniel Lee dc6d55a59f docs: changelog for 4.2.0
Adds notes for:
- ref #7694
- ref  #7681
- ref #7736
- ref #7743
- ref #7696
- ref #3536
- ref #6365
- ref #7591
- ref #7276
- ref #7723
- ref #7739
- ref #7680
2017-03-08 11:16:14 +01:00
thuck 1cf569ac8e Fix tabs vs space 2017-03-08 08:25:32 +01:00
thuck 555acacd6d Validate query to avoid self-reference of variable #7614 2017-03-07 23:29:16 +01:00
Daniel Lee 9efb6e76e9 users: adds search and pagination (#7753)
ref #7469. Follow up change that adds proper paging with 50 results
per page as well as a search box to search by name, login or email.
2017-03-07 16:03:54 +01:00
Daniel Lee 08b2edf98c Merge branch 'load_on_Scroll' of git://github.com/jifwin/grafana into jifwin-load_on_Scroll 2017-03-07 15:58:14 +01:00
Torkel Ödegaard 140a0982e8 Merge branch 'master' into v4.2.x 2017-03-07 13:12:59 +01:00
Daniel Lee 8e3f22d307 docs: adds note about closing #7695 2017-03-07 11:23:57 +01:00
Daniel Lee 4ee262fe65 Merge pull request #7720 from mitjaziv/cubic_decimetre
added cubic decimetre - dm3 #7695
2017-03-07 10:41:27 +01:00
Ross Lodge 70c2586c80 Use other variable dependencies in regex filter for datasource variable (#7547) 2017-03-07 08:39:19 +01:00
Joseph Pintozzi a37a2259b3 Allowing "Unique Count"s of any data type (#7704) 2017-03-07 08:36:33 +01:00
Mitsuhiro Tanda a24ac012c4 support full resolution for $interval variable (#7696) 2017-03-07 08:35:29 +01:00
Patric Kanngießer 3735a1ace7 remember scroll position (https://github.com/grafana/grafana/issues/7680) (#7728) 2017-03-07 08:19:34 +01:00
Wouter Smit 125ee865b6 Spelling mistake (#7739) 2017-03-06 21:08:45 +01:00
Mitsuhiro Tanda b387a8759e use session.NewSession() (#7745) 2017-03-06 21:08:16 +01:00
Pranay Kanwar 6ab90425c4 Pass dropcounter rate option if no max counter and no reset value or reset value as 0 is specified (#7743) 2017-03-06 16:19:37 +01:00
Torkel Ödegaard c3202d3f99 sessions: start session gc at startup but only after between 10 - 180 seconds 2017-03-06 12:23:28 +01:00
Torkel Ödegaard ebdd35d799 Merge branch 'master' of github.com:grafana/grafana 2017-03-06 11:52:07 +01:00
Torkel Ödegaard 9f1c6a73f0 tech: added sql logger to log all sql statements sent to sql server 2017-03-06 11:51:35 +01:00
Denis Doria 31866b5e57 Allow commas on template variable #7681 (#7732)
This improvement allows to wrap an "expression" when using single or
double quotes. So now you can have time interval with offset for
influxdb.
2017-03-06 08:37:49 +01:00
Torkel Ödegaard 6af62abd41 docs(): added router_logging to configuration options, closes #7723 2017-03-06 08:26:36 +01:00
Denis Doria 0264fcc66c Remove unsaved dialog when removing a dashboard #7591 (#7733) 2017-03-06 07:49:28 +01:00
Denis Doria e71b13d9fa Improve regex detection for influxdb measurement #7276 (#7734) 2017-03-06 07:47:50 +01:00
thuck c3eb9da160 Finish query builder for LIMIT, SLIMIT and ORDER BY time #6065 2017-03-05 23:41:16 +01:00
thuck f577dd0f38 Including LIMIT, SLIMIT and ORDER BY time on influxdb #6065
Initial work for the query builder interface
2017-03-05 23:13:46 +01:00
Mitja Zivkovic 7ace2463a4 added cubic decimetre - dm3 #7695 2017-03-03 14:27:15 +01:00
bergquist fe970f6629 docs: adds note about closing #7676 2017-03-03 11:09:05 +01:00
bergquist 26bb9ad399 build: use initial checkout within container
speedup and simplify the build within the container
2017-03-03 11:07:05 +01:00
Carl Bergquist f185c2c953 Merge pull request #7676 from dbrgn/threema-emoji
feat(alerting): Add emoji to Threema alert notifications
2017-03-03 11:04:49 +01:00
bergquist 55e0df7896 docs: adds note about closing #7710 2017-03-02 14:01:06 +01:00
bergquist ee190d57eb webhooks: get proxy settings from ini file
closes #7710
2017-03-02 13:58:50 +01:00
bergquist 412b8998a8 webhooks: get proxy settings from ini file
closes #7710
2017-03-02 13:57:28 +01:00
bergquist 473513aa2f docs: how to configure alert notification links 2017-03-01 17:19:34 +01:00
jifwin c09cd4ba29 make load on scroll configurable and use debouce 2017-03-01 15:02:59 +00:00
Carl Bergquist 824357ed3b Merge pull request #7694 from rickard-von-essen/patch-1
Added some details about Sessions in Postgres
2017-03-01 12:17:25 +01:00
bergquist 06146b801c build: replace sha1 files with sha256
due to security reasons.
https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
2017-03-01 11:44:53 +01:00
Rickard von Essen 573bcdde12 Added some details about Sessions in Postgres 2017-03-01 11:35:12 +01:00
bergquist 62eb19a186 template: dont allow template variables to begin with '__'
closes #7678
2017-02-28 17:08:38 +01:00
bergquist 6b1dd1c7fc changelog: adds note about closing #7678 2017-02-28 17:08:17 +01:00
bergquist 9b6571fab1 template: dont allow template variables to begin with '__'
closes #7678
2017-02-28 17:04:47 +01:00
bergquist 1631c8de95 build: use correct version for tar.gz files 2017-02-28 09:15:06 +01:00
bergquist 3ef077c180 build: use correct version for tar.gz files 2017-02-28 09:09:49 +01:00
Danilo Bargen 1422655e97 feat(alerting): Add emoji to Threema alert notifications
This commit prepends emoji to Threema alert notifications to make it
easier to discern various notification types (e.g. alert, no data, ok).
2017-02-27 17:10:52 +01:00
bergquist 7d897c0980 build: add docker trigger for release builds 2017-02-27 13:26:53 +01:00
bergquist 86789c0b69 docs: update docs for 4.2.0 beta release 2017-02-27 12:44:55 +01:00
bergquist a763285daa updates script for packagecloud 2017-02-27 11:05:05 +01:00
Torkel Ödegaard d2dac02a28 Revert "ES Nested type bucket aggregation (#4694) (#4694)"
This reverts commit 8087af9c89.
2017-02-27 10:57:44 +01:00
Archit Sharma 8087af9c89 ES Nested type bucket aggregation (#4694) (#4694)
* (elasticsearch): add nested agg (use bucket aggs). fixes #4693

* (elasticsearch): rebased after merge of #6043 refactored from #4527
2017-02-27 10:57:00 +01:00
bergquist ffe0ecfaaa release 4.2.0 beta1 2017-02-27 10:33:26 +01:00
bergquist 05952688c5 tech: avoid using http.DefaultClient 2017-02-24 17:22:12 +01:00
bergquist 03354bc49a tech: replace context.TODO with background ctx 2017-02-24 09:20:28 +01:00
Torkel Ödegaard e73b306e0c fix(templating): fixed duplicate dashboard refresh when changing template variable, #7654 2017-02-24 08:16:37 +01:00
bergquist 46ac8c098f changelog: adds note about closing #7482 2017-02-24 07:42:30 +01:00
Carl Bergquist 5d3da99806 Merge pull request #7482 from dbrgn/master
Alerting: Add Threema Gateway integration
2017-02-24 07:40:36 +01:00
bergquist 785cecac26 changelog: adds note about closing #7526 2017-02-24 07:35:45 +01:00
Carl Bergquist bef216b6f4 Merge pull request #7526 from Mic92/master
Add Pushover alert notifications
2017-02-24 07:32:59 +01:00
bergquist 67b8b9743b changelog: note about closing #7602 2017-02-24 07:30:47 +01:00
Carl Bergquist 3ef1a60647 Merge pull request #7602 from Altoros/suppress-empty-results-in-table-plugin
Added suppressing of empty results to table plugin
2017-02-24 07:28:59 +01:00
Torkel Ödegaard d6eaaf3add refactor: minor refactoring 2017-02-23 15:57:36 +01:00
Mitsuhiro Tanda 68bb417db9 support [[var]] in cloudwatch datasource (#7649)
* support [[var]] form in cloudwatch datasource

* support multi variable in single dimension

* fix test
2017-02-23 15:02:35 +01:00
bergquist d88286ab81 orgs: set orgId as query param on load
ref #1613
2017-02-23 11:03:39 +01:00
Mitsuhiro Tanda 988ed06970 typeahead support in mixed datasource selection 2017-02-23 00:48:16 +09:00
bergquist 73830a44fe sharemodal: fixes broken unittests 2017-02-22 14:29:49 +01:00
bergquist fe223cbc96 changelog: adds note about closing #1613 2017-02-22 14:04:01 +01:00
bergquist fdb06c7c10 sharing: set orgId as query parameter when sharing a dashboard
to make sure an user opens the dashboard in the correct org, orgId will
always be added when sharing a dashboard. if the users current orgId
doesnt match the query parameter grafana will change it and redirect the
user.

closes #1613
2017-02-22 13:56:06 +01:00
bergquist dea2e5d743 changelog: adds note about closing #6948 2017-02-22 11:24:06 +01:00
bergquist 607ee635d1 alerting: adds deduping of alert notifications 2017-02-22 10:52:01 +01:00
Carl Bergquist b4fd6f2d45 Merge pull request #7632 from grafana/alerting_notification_dedupe
alerting: dedupe alert notifications when running multiple servers
2017-02-22 10:48:41 +01:00
bergquist c1d69358ba changelog: adds note about closing #552 2017-02-22 10:39:52 +01:00
bergquist 9ed1d12cc0 style: use for loops over _.each in typescript 2017-02-22 10:36:30 +01:00
bergquist c5a76fba87 shortcuts: add expand/collapse to shortcut help 2017-02-22 10:33:24 +01:00
bergquist e828f3a97b shortcuts: change init bind key to d 2017-02-22 10:32:30 +01:00
Mitsuhiro Tanda 5a30b08b14 add keyboard shotcuts for collapse/expand rows 2017-02-22 09:30:56 +01:00
Torkel Ödegaard e3b71ed95e docs(): updated CLA 2017-02-22 09:10:08 +01:00
Torkel Ödegaard 9c84b9f944 docs(): CLA fixes 2017-02-22 08:55:24 +01:00
Daniel Lee e5f5c1724a templating: check for default data source (#7636)
For data source template variables, check if the
selected value is default and if so load the
default data source.

Fixes #7586
2017-02-21 17:27:21 +01:00
bergquist 00dddca26a alerting: dedupe alert notifications when running multiple servers
alert notifications will only be sent if the database value
is updated.

ref #6957
2017-02-21 16:54:49 +01:00
Daniel Lee 96a3ed0ac3 docs: new /api/users/search route
ref #7469. Description of new route that
adds paging for the users list.
2017-02-21 16:09:15 +01:00
Torkel Ödegaard d5245fd19a docs(): updated changelog with #7612 2017-02-21 10:49:50 +01:00
Aaron Roydhouse 4039e5edbc Improve 'external_image_storage.s3' documentation (#7623)
Add documentation for 'external_image_storage.s3' to explain how to specify the AWS region for the S3 bucket, and the requires S3/IAM permissions.
2017-02-21 10:09:50 +01:00
bergquist 70b36a02af Revert "tech: use context package over xperimental version"
This reverts commit 99f1c30071.
2017-02-20 22:04:51 +01:00
bergquist 99f1c30071 tech: use context package over xperimental version 2017-02-20 21:44:15 +01:00
tamayika b01fd3d0b5 Support for all ad-hoc filter operators on Elasticsearch (#7612) 2017-02-20 21:01:52 +01:00
Torkel Ödegaard 1d9b3871fa Merge branch 'rebrand-docs' of github.com:grafana/grafana into rebrand-docs 2017-02-20 12:12:47 +01:00
Torkel Ödegaard bc9165bdfc Merge branch 'master' into rebrand-docs 2017-02-20 12:11:22 +01:00
bergquist 072c1559ba middlware: prevent orgredirect to open body stream
the org redirecter opened the body stream by misstake. Causing
downstream code to start reading from an empty stream and raise errors.
2017-02-20 11:38:29 +01:00
Torkel Ödegaard b176f36889 docs(): updated CLA 2017-02-20 10:41:13 +01:00
Torkel Ödegaard 38126bc595 fix(templating): fixed issue detecting template variable dependency, fixes #7354 2017-02-20 09:31:50 +01:00
bergquist 492b2bd42f build: fixes golang 1.8 build on windows 2017-02-19 11:32:26 +01:00
Simon Effenberg a4318e41f8 fixing little spelling issue (#7603) 2017-02-18 17:21:29 +01:00
Tim De Pauw 48649951e4 Github → GitHub (#7607) 2017-02-18 17:20:44 +01:00
bergquist d2444cbed0 Merge branch 'paging-users' 2017-02-17 16:25:03 +01:00
bergquist 400bd8d2d3 build: reduce logs from npm install 2017-02-17 16:16:17 +01:00
Carl Bergquist 24474ba41a Merge pull request #7601 from grafana/redirect_on_new_orgid
middlware: change org when url contains orgid
2017-02-17 15:31:17 +01:00
bergquist 6115941df0 middleware: rename org-id -> orgId 2017-02-17 15:18:40 +01:00
bergquist 5174d050f2 middlware: change org when url contains orgid
closes #6948
ref #1613
2017-02-17 15:02:14 +01:00
Torkel Ödegaard ac0d09c419 fix(): fixed issue with syncing refresh interval to url 2017-02-17 14:07:15 +01:00
bergquist 12f1ea71fd chore: delete empty test 2017-02-17 12:07:46 +01:00
bergquist 76f617b862 build: disable setup for windows build 2017-02-17 12:06:24 +01:00
bergquist 774c1de892 changelog: adds note about closing #7319 2017-02-17 10:42:52 +01:00
bergquist 5fb4540358 changelog: adds note about closing #7382 2017-02-17 10:41:15 +01:00
bergquist 79daa71350 docs: update golang requirement to 1.8 2017-02-17 10:37:59 +01:00
bergquist defa81e4c1 Merge branch 'http_graceful' 2017-02-17 10:34:02 +01:00
bergquist cf871b1284 http: close http server gracefully. 2017-02-17 10:33:47 +01:00
bergquist 52566376b2 tech(server): remove unused code 2017-02-17 10:18:11 +01:00
bergquist a32b7dfb9d build: upgrade to golang 1.8 2017-02-17 09:05:52 +01:00
bergquist c924510deb alertlist: adds pause as filter option
closes #7400
2017-02-16 16:01:57 +01:00
bergquist a747d33373 templating: allow whitespace values
closes #7382
2017-02-16 15:58:01 +01:00
bergquist d72011589e templating: refactor sorting test 2017-02-16 14:22:38 +01:00
bergquist 927b39fa63 templating: adds test for sorting template values 2017-02-16 14:14:17 +01:00
Senkevich Alexsandr 17d02a7065 added suppressing of empty results in table plugin 2017-02-16 14:35:42 +03:00
bergquist 3c0f61511d build: deps-go is not required for building grafana
setup compiles the backend and caches it which is nice
when developing grafana since incremental compiles are
much faster. But its not required for building grafana.
2017-02-16 09:10:55 +01:00
bergquist 9b4d95ff25 changelog: note about closing #7347 2017-02-15 14:35:40 +01:00
Roman Vynar 4fcd5eab29 Add advanced TLS settings to harden setup. (#7347)
* Hardcoded the most secured TLS options.
2017-02-15 14:29:20 +01:00
Torkel Ödegaard 902cf5f889 fix(): google analytics fix 2017-02-15 14:26:57 +01:00
bergquist bd010289b2 alerting: images in alert notifications is now optional
its now possible to turn of image uploading in alert notifications
for those who operate on very sensitive data.

closes #7419
2017-02-15 14:17:36 +01:00
bergquist f14e25612e annotations: go vet fixes 2017-02-15 14:15:42 +01:00
bergquist c8c3021987 docs: tutorial for setting up grafana as HA
ref #7541
2017-02-15 12:38:50 +01:00
Daniel Lee 6dfdcd7ca5 email: change default from name to Grafana
Changes default from name in smtp settings
from Grafana Admin to Grafana.

Fix for integration test (which is skipped but that
did not work)
2017-02-15 11:02:46 +01:00
Daniel Lee 8144b73544 changelog: adds note about closing #2131 2017-02-15 10:44:43 +01:00
Daniel Lee 5fca4c7304 Merge pull request #7569 from jacobbednarz/add-sender-name-to-email
Updates mailer to include `from_name` value
2017-02-15 10:32:06 +01:00
Dennis Wiemer 8b25ba6a7c Added click events in graph to core eventbus (#7511) 2017-02-15 08:47:20 +01:00
Torkel Ödegaard e573006283 docs(): added cla 2017-02-15 08:40:34 +01:00
Jan Garaj 79cd48f64c Cloudwatch AWS/SES metrics (#7568) 2017-02-15 08:12:24 +01:00
Jacob Bednarz 6a9247500a Update documentation to include information about from_name values 2017-02-15 08:07:29 +11:00
Jacob Bednarz 7520b4f404 Update default configuration to include from_name values 2017-02-15 08:06:58 +11:00
Jacob Bednarz 796957c8c6 Update mailer tests to include FromName 2017-02-15 08:04:21 +11:00
Jacob Bednarz 66445faeb5 Format mailer From field to include name
Updates the messafe `From` field to include the name and email of the
sender.
2017-02-15 07:51:41 +11:00
Jacob Bednarz 90cbfacacf Add FromName to SmtpSettings struct
Updates the `SmtpSettings` struct to include a value for setting the
name of the email sender.
2017-02-15 07:45:28 +11:00
Jacob Bednarz 7dc6b69c8b s/smpt/SMTP 2017-02-15 07:43:59 +11:00
Jacob Bednarz c9d4654592 s/from_adress/from_address 2017-02-15 07:43:16 +11:00
bergquist 423e8686ef docs: fixes markdown formating 2017-02-14 12:56:49 +01:00
bergquist e97cab9964 docs: removes version selector from influxdb 2017-02-14 12:02:31 +01:00
Daniel Lee 5304e7b220 changelog: adds #7554 - minor enhancement to 4.2.0 2017-02-14 11:22:47 +01:00
Daniel Lee 76f82b00d7 Merge pull request #7554 from ryantxu/kbn_physics
Add more physics units
2017-02-14 11:16:20 +01:00
bergquist 73bec813fc docs: adds delete datasource by name 2017-02-14 10:41:08 +01:00
Daniel Lee 6861c6033c Changelog: add 7449 - minor enhancement to 4.2.0
Closes #7449
2017-02-14 10:21:07 +01:00
Ryuichi Sakai 0c9f664ea0 Make timeout for snapshot creation configurable 2017-02-14 10:10:51 +01:00
bergquist 9f80e8c03d changelog: rearrange closed issues 2017-02-14 10:06:31 +01:00
bergquist 6761661e10 changelog: adds note about closing #7542 2017-02-14 10:03:23 +01:00
bergquist 0523830716 changelog: add note about closing #7542 2017-02-14 08:56:00 +01:00
xginn8 1c8509ea58 wrap text in annotations modal (#7549)
annotation: wrap text in drop_element, fixes #7542
2017-02-14 08:49:43 +01:00
ryan 7867a24d87 Adding more physics units 2017-02-13 23:30:15 -08:00
Carl Bergquist 05a6cb3f76 Merge pull request #7548 from ryantxu/influxdb_logo
update datasource logos
2017-02-14 08:23:03 +01:00
ryan a1e071d3c5 missing space 2017-02-13 18:47:59 -08:00
ryan 2749dd8711 elasticsearch svg 2017-02-13 18:47:01 -08:00
ryan b46fac34d9 replace elastic logo 2017-02-13 18:38:13 -08:00
ryan fc0de84701 update influx logo 2017-02-13 18:19:14 -08:00
bergquist 2ad2b96133 build: avoid progress bar update on yarn install
this will save us ~100TB of unneeded data in the long term.
2017-02-13 15:26:10 +01:00
bergquist 2c68c071c0 changelog: update release of 2017-02-13 2017-02-13 15:11:45 +01:00
bergquist c7560edba5 docs: release 4.1.2 for windows 2017-02-13 14:17:26 +01:00
bergquist 89fdcc84de docs: release 4.1.2 2017-02-13 13:52:42 +01:00
Daniel Lee 193d468ed3 admin: adds paging to global user list
Currently there is a limit of 1000 users in the global
user list. This change introduces paging so that an
admin can see all users and not just the first 1000.

Adds a new route to the api - /api/users/search that
returns a list of users and a total count. It takes
two parameters perpage and page that enable paging.

Fixes #7469
2017-02-13 12:59:36 +01:00
Jörg Thalheim f069aae576 Add Pushover alert notifications
Pushover is a service for getting real-time
notifications on your mobile devices and desktop
computers: https://pushover.net
2017-02-10 22:44:33 +01:00
bergquist e80f673264 changelog: adds note about closing issues 2017-02-10 15:56:28 +01:00
Carl Bergquist 7f4f38e773 Merge pull request #7519 from huydx/master
(feat) support datasource delete by name api
2017-02-10 15:53:34 +01:00
huydx 143cbe921f (feat) support datasource delete by name api 2017-02-10 23:30:14 +09:00
bergquist f147ac053d Merge branch 'huydx-feat/sqlmax' 2017-02-10 15:30:12 +01:00
bergquist 5b7b3fef64 conf: adds sample values for db conn settings 2017-02-10 15:30:01 +01:00
huydx 28d93b574d (feat) support max connection setting for database configuration 2017-02-10 15:30:01 +01:00
bergquist 3c7cf3f728 docs: kairosdb is no longer supported by default 2017-02-10 14:42:19 +01:00
Daniel Lee 1294b203e6 admin: adds paging to global user list
Currently there is a limit of 1000 users in the global
user list. This change introduces paging so that an
admin can see all users and not just the first 1000.

Adds a new route to the api - /api/users/search that
returns a list of users and a total count. It takes
two parameters perpage and page that enable paging.

Fixes #7469
2017-02-10 11:00:04 +01:00
bergquist 900230890f changelog: adds note about closing #2385 2017-02-10 10:15:03 +01:00
Vladimir Kolobaev 8083079eea graph: set max width for legend tables.
ref #2385
2017-02-10 10:11:39 +01:00
Torkel Ödegaard 1e26a8e68a docs(): rebrand updates 2017-02-10 08:58:53 +01:00
Torkel Ödegaard 0d8cdf0ebe docs(): rebrand updates 2017-02-10 08:58:45 +01:00
bergquist dcf097a8b9 changelog: adds note about closing #6109 2017-02-10 08:57:46 +01:00
xginn8 3d4c3ff00d return an empty message if table contains no data #6109 (#7487) 2017-02-10 08:54:00 +01:00
bergquist 7bf570532f docs: adds note about closing #7493 2017-02-10 08:34:56 +01:00
Vladimir Kolobaev 6eda5604d2 Full metric description (#7493)
graph: add full metric description for graph-legend-alias title
2017-02-10 08:31:51 +01:00
bergquist 38c29d2209 changelog: adds note about closing #7513 2017-02-10 08:29:44 +01:00
Carl Bergquist 73d441450b Merge pull request #7516 from grafana/oauth-login-redirect
redirect user to requested url after login via oauth
2017-02-10 08:27:41 +01:00
bergquist 5dd961c0f5 settings: remove commented code 2017-02-10 07:39:26 +01:00
Dan Cech b22881c717 redirect user to requested url after login via oauth 2017-02-09 14:01:53 -05:00
bergquist c7febca447 mqe: fixes broken test for indexalias 2017-02-09 16:43:57 +01:00
bergquist aa7292fac6 mqe: adds support for wildcard and index aliases 2017-02-09 16:25:03 +01:00
Torkel Ödegaard c05c6ee7a4 docs(): minor fix 2017-02-08 20:00:39 +01:00
Daniel Lee bccb650010 Adds Sorting for lists of data sources to 4.2.0 2017-02-08 12:06:00 +01:00
Daniel Lee 2b2368b189 Merge pull request #7491 from grafana/sorting-datasources
Sorting datasources with case insensitive order
2017-02-08 12:01:31 +01:00
Daniel Lee fbc3c3dd32 api: removes import alias + some unused fields 2017-02-08 11:57:05 +01:00
bergquist 10508d0238 docs(changelog): adds note about closing #6451 2017-02-08 11:28:26 +01:00
bergquist e8f191ef32 Merge branch 'jregovic-master' 2017-02-08 11:25:41 +01:00
bergquist 00549f393c style(hipchat): improves code style 2017-02-08 11:24:49 +01:00
Torkel Ödegaard 0a17217d59 docs(): updating links 2017-02-08 08:23:23 +01:00
Daniel Lee 8aa5b62d6d fix(panel): case insensitive sort metric sources
Sorts the list of metric sources that is used in dropdown for Panel
Data Source on the Metrics tab so that it is case insensitive and
so that the built data sources are last in the list.
2017-02-08 00:01:42 +01:00
Daniel Lee cbd1455c42 fix(api): case insensitive sort for datasources
The data source list is case sensitive when sorted. This changes the
sort to be case insensitive. The test only tests the handler, not the
routing or database query.
2017-02-07 22:15:52 +01:00
James Regovich 53942f7987 Adding HipChat Notifier 2017-02-07 10:50:49 -06:00
bergquist 5bba0c2a94 tech(build): upgrade dist builder to golang1.8rc3 2017-02-07 12:45:06 +01:00
Torkel Ödegaard 10e100b080 docs(): updates 2017-02-07 12:27:16 +01:00
bergquist b3db5aae4b docs(changelog): adds note about closing #6799 2017-02-07 11:21:20 +01:00
Carl Bergquist 7d205ae2b8 Merge pull request #7466 from hagen1778/prometheus-basicauth-query
allow setting basic auth headers for prometheus datasource
2017-02-07 11:18:17 +01:00
bergquist 8ca4afaf22 docs(changelog): adds note about closing #7459 2017-02-07 11:17:20 +01:00
Danilo Bargen 689f5cb686 feat(alerting): Text formatting for Threema alert messages 2017-02-07 11:14:57 +01:00
Danilo Bargen d1a5d9c15c feat(alerting): Add Threema Gateway integration
This commit adds alerting support for Threema Gateway. It supports all
Simple IDs (managed by the Gateway server).

More information can be found on https://gateway.threema.ch/
2017-02-07 11:14:57 +01:00
bergquist 9ece10ef24 style(dataproxy): simplify expression 2017-02-07 11:03:57 +01:00
bergquist b386920abb Merge branch 'prometheus_secure' of https://github.com/mtanda/grafana into mtanda-prometheus_secure 2017-02-07 11:01:02 +01:00
hagen1778 a1e835884b use configured Transport instead of defaultHttpTransport 2017-02-07 11:56:59 +02:00
Daniel Lee 5e9653f935 docs(): adds missing index pages + link fix 2017-02-07 10:22:14 +01:00
bergquist 285918caf6 tech(build): switch to golang 1.8rc3 2017-02-07 10:13:21 +01:00
Torkel Ödegaard 8a92861133 docs(): fixes for rebranded docs site 2017-02-07 09:09:51 +01:00
Daniel Lee abd9233f86 Docs for developing plugins (#7475)
* docs(plugins): new developing plugins section

Creates new section called Developing Plugins in
the plugin section of the docs.

1. Some changes to the Development guide page
2. Converted defaults/editor mode blog post
to new page
3. Converted snapshots blog post to new page
4. Adds new code styleguide page
5. Updates to apps and datasources pages
6. Adds plugin.json schema

* docs(links): fixes broken links

Fixes broken links to other pages as
well as broken image links.
2017-02-07 07:48:01 +01:00
Torkel Ödegaard 3398c28ab2 docs(): fixing redirects for moved doc pages, updating links to point to new urls 2017-02-06 18:04:53 +01:00
r.khavronenko 25be602dce go fmt 2017-02-06 17:17:16 +02:00
bergquist 5a7abe365c tech(build): echo before running go fmt/vet 2017-02-06 15:55:22 +01:00
bergquist 57d36b3d42 feat(alerting): transform labels into tags for prometheus tsdb 2017-02-06 15:25:15 +01:00
r.khavronenko 80b92335bb allow setting basic auth headers for prometheus datasource 2017-02-06 16:22:09 +02:00
Mitsuhiro Tanda 69566a23fc improve security of Prometheus datasource 2017-02-06 23:10:10 +09:00
bergquist 3827c0a69c tech(alerting): adds tags to alerting data model 2017-02-06 14:59:29 +01:00
Torkel Ödegaard 982dc276d3 Update building docs readme 2017-02-06 10:19:47 +01:00
jifwin 9e7df648b5 Fix requests cancelling (#7457)
* fix backendSrv request cancelling

* revert imports

* formatting
2017-02-06 06:42:26 +01:00
bergquist a36b1d9dce tech(build): require go vet to pass 2017-02-05 21:21:05 +01:00
bergquist c05bc0cb17 chore(vet): fixes invalid fmt.Sprintf format 2017-02-05 21:19:39 +01:00
Grzegorz Pietrusza a3019a9789 cleanup 2017-02-04 14:30:24 +00:00
Grzegorz Pietrusza 220b65afd2 implement panels loading on scroll 2017-02-04 14:10:40 +00:00
bergquist d9b5628126 docs: update nodejs version requirement in readme 2017-02-03 16:15:37 +01:00
Carl Bergquist 282b1bc73a Merge pull request #7442 from lucapette/patch-1
Fix typo
2017-02-03 14:06:54 +01:00
lucapette 032ecad3b7 Fix typo 2017-02-03 12:10:22 +01:00
bergquist 457d6c8f81 tech(build): fixes broken build 2017-02-02 17:25:33 +01:00
Torkel Ödegaard 65cf0d0e5c fix(graph legend): fixed legend table mode scrollbar visible when it needs to to, fixes #6828 2017-02-02 16:29:11 +01:00
bergquist 3e62b1b2d7 tech(build): use build number as iteration number 2017-02-02 15:55:37 +01:00
bergquist a580113de4 feat(alerting): changes default timerange to 15min 2017-02-02 12:05:44 +01:00
bergquist 63aa436997 tech(build): slimdown the size of the build container 2017-02-02 11:33:34 +01:00
bergquist 3cbca80d3c tech(build): starts docker build for latest build 2017-02-02 10:41:11 +01:00
Alexander Menzhinsky 30c334a2b8 Add common type for oauth authorization errors 2017-02-01 16:42:59 +03:00
bergquist aef4195493 tech(build): fixes invalid script file usage 2017-02-01 07:09:36 +01:00
bergquist ea6d996abc tech(build): enable windows build trigger 2017-01-31 21:43:18 +01:00
bergquist 74c5c5368c tech(build): update windows trigger 2017-01-31 21:36:52 +01:00
bergquist afd135944a tech(build): upgrade golang to 1.7.4 2017-01-31 21:11:34 +01:00
bergquist 18f20a3357 tech(build): deploy to new s3 buckets 2017-01-31 20:26:19 +01:00
Torkel Ödegaard 01f1c1b8dc feat(): began refactoring PR #5364 2017-01-31 17:10:27 +01:00
bergquist b600e1c50b docs(changelog): adds note about closing #7417 2017-01-31 15:24:00 +01:00
Mitsuhiro Tanda 91999851cb support regex expansion in templating "Regex" field (#6565) 2017-01-31 15:21:53 +01:00
Carl Bergquist 4f5dc6104f Merge pull request #7417 from Erliz/patch-1
Add image url to telegram alert notifier
2017-01-31 15:13:21 +01:00
Kevin Bowling 0c46def1a0 Add an idiomatic plugin path for FreeBSD (#7410) 2017-01-31 14:54:53 +01:00
Stanislav Vetlovskiy 0e892e9f86 Add image url to telegram alert notifier
If public image url of alert is exist add it to the telegram message
2017-01-31 16:47:14 +03:00
bergquist 513fcdeeb8 tech(build): prepare for tag builds 2017-01-31 11:00:23 +01:00
Torkel Ödegaard f602752bdc fix(packaging): fixed issue in deb package post install script that made it think upgrade was happening, fixes #7403 2017-01-31 10:56:04 +01:00
bergquist d72f257f27 tech(build): disable package iteration for release builds 2017-01-31 09:40:26 +01:00
Torkel Ödegaard fce2e341d2 mergefix(): fixed issue with master merge 2017-01-31 09:00:36 +01:00
Torkel Ödegaard 8a95c563bb Merge branch 'master' into websocket 2017-01-31 08:56:49 +01:00
Torkel Ödegaard 2594041eed hiding grafana live ds 2017-01-31 08:56:46 +01:00
Torkel Ödegaard 9ba1ea0179 fix(): another unit test fix attempt 2017-01-31 08:52:48 +01:00
Torkel Ödegaard 0c5abc1615 Merge branch 'xginn8-master' 2017-01-31 08:27:53 +01:00
Torkel Ödegaard 5fc5971145 refactor(): refactoring PR #7124 2017-01-31 08:27:48 +01:00
Torkel Ödegaard 436e35c845 fix(): fixed unit test broken in last PR merge 2017-01-31 07:59:14 +01:00
Torkel Ödegaard 9a61d43dc6 refactor(): refactoring PR #7141 2017-01-31 07:57:39 +01:00
Torkel Ödegaard c400b5cf63 Merge branch 'master' of github.com:grafana/grafana 2017-01-31 07:48:44 +01:00
Torkel Ödegaard 1a9aaa4138 feat(server side png rendering): added timezone parameter for server side rendering, refactoring PR #7264 2017-01-31 07:48:10 +01:00
Torkel Ödegaard 830491fa66 Merge branch 'time-offset-to-image' of https://github.com/ryu1-sakai/grafana into ryu1-sakai-time-offset-to-image 2017-01-31 06:28:54 +01:00
Pavlos Daoglou 3e741315b4 [3743] Adds support for user search based on login or email (#7334)
* [3743] Adds support for user search based on login or email

* Use query parameter instead

* Use macaron Query() instead
2017-01-31 06:25:55 +01:00
Stanislav Vetlovskiy bd4eadf69c #7383 Fix factory typo in telegram notifier (#7406) 2017-01-31 06:23:19 +01:00
bergquist 3c304b9b88 tech(build): disable builds for master 2017-01-30 16:24:50 +01:00
bergquist cefb4103a7 tech(build): disable build based on tag 2017-01-30 16:03:55 +01:00
bergquist dd982ac9a2 tech(build): dont include buildnumber when building tags 2017-01-30 15:23:38 +01:00
bergquist ac6b5ea796 tech(build): option to not include buildIteration in package name 2017-01-30 15:21:39 +01:00
bergquist 163036591d tech(build): fixes broken build 2017-01-30 15:04:55 +01:00
bergquist 2de8cdb85c tech(build): remove unused deps 2017-01-30 14:28:39 +01:00
bergquist 7307e6345b tech(build): remove sha calc from build step 2017-01-30 13:58:39 +01:00
bergquist 6de13e081b tech(build): deploy builds for each commit to master 2017-01-30 10:37:14 +01:00
Jay Linski 91513f0bc0 Remove deprecated dataproxy logging setting (#7398)
This should have been removed in 06440ef57b, but was probably forgotten.

Solves #6718.
2017-01-30 08:14:44 +01:00
Torkel Ödegaard b191638f41 feat(packaging): Make config file not part of package to simplify upgrade, made commit always a short sha, changed RESTART_ON_UPGRADE to true by default, #7399, #7227 2017-01-30 08:08:37 +01:00
Torkel Ödegaard 2a09d4a5a6 fix(): conf file had left over of old config key, #7395 2017-01-30 07:11:12 +01:00
Oleksandr Kushchenko edba465a75 add DeliveryStreamName dimension to AWS/Firehose Cloudwatch namespace (#7388) 2017-01-28 08:30:57 +01:00
lpic 5b699dbf0d Set time when testing ES datasource, fixes #7044 (#7390) 2017-01-28 08:30:33 +01:00
Kit Westneat cddc9ac0a7 file_export.ts: #5325 missed exportTableDataToCsv when adding sep (#7391) 2017-01-28 08:29:57 +01:00
bergquist 1fee26925f Merge branch 'new_deploy' 2017-01-27 15:55:42 +01:00
bergquist 4b6aaec880 tech(build): create sha files after signing packages 2017-01-27 15:54:19 +01:00
bergquist a634bd0ce8 tech(build): sign and deploy packages to s3 2017-01-27 15:21:16 +01:00
bergquist feed804a0e tech(build): updates path to signing file 2017-01-27 15:21:16 +01:00
bergquist 0cc21669f4 tech(build): adds package signing step 2017-01-27 15:21:16 +01:00
bergquist 46e4a54a6e style: go fmt with simplify 2017-01-27 15:21:02 +01:00
bergquist 1df9c2cab3 docs(changelog): adds note about closing #7377 2017-01-27 08:54:23 +01:00
Carl Bergquist b3847a3738 Merge pull request #7377 from solugebefola/patch-3
Disable sign out for AuthProxyEnabled
2017-01-27 08:51:32 +01:00
Solar Olugebefola de7edb40f5 Disable sign out for AuthProxyEnabled
Sign out was disabled for AuthProxyEnabled in #3122.  This is to catch the one other instance of a sign out link in the side menu.
2017-01-26 13:10:33 -05:00
Torkel Ödegaard 2f4da15264 fix(http api): throw validation error if missing property in call to /api/admin/users/123/permissions, #7365 2017-01-26 08:54:51 +01:00
Ryan McKinley a656d01bf5 append windows phantomjs with .exe (#7065) 2017-01-25 14:49:09 +01:00
Torkel Ödegaard 9b8760bad7 packaging(): fix rpm & SUSE compatability issue, #7293 2017-01-25 14:42:19 +01:00
Torkel Ödegaard 7c5ef2c75a Merge branch 'connection-reset-shared_tooltip' 2017-01-25 14:35:02 +01:00
Torkel Ödegaard 28f890e42f refactor(): removed commented out code 2017-01-25 14:34:55 +01:00
Torkel Ödegaard 23eab81cbe fix(): fixed minor issue with single stat tooltip, #7357 2017-01-25 14:11:30 +01:00
Torkel Ödegaard e073d20731 updated sample config 2017-01-25 13:34:02 +01:00
Torkel Ödegaard f196ffa07d updated docs 2017-01-25 13:33:27 +01:00
Torkel Ödegaard 40d39f8a3e refactor(): renaming alerting hide ui option, #7318 2017-01-25 13:32:26 +01:00
Torkel Ödegaard fee4846429 Merge branch 'alerting_ui' of https://github.com/smalik03/grafana into smalik03-alerting_ui 2017-01-25 13:16:48 +01:00
Torkel Ödegaard 4e30aa9da2 docs(): changelog updated with #7112 2017-01-25 12:32:59 +01:00
Naoufel JAMALI 4e1d8c9ced Elasticsearch - Term aggregation limit fix (should fix #7112) (#7338)
* Elasticsearch - Term aggregation limit fix  (should fix #7112)

* Elasticsearch - Term aggregation limit fix
2017-01-25 12:29:41 +01:00
bergquist b6305a6577 tech(build): dont upload packages from master 2017-01-24 15:24:43 +01:00
bergquist d5e753adbc tech(build): fixes circle.yml format issue 2017-01-24 14:01:50 +01:00
bergquist 3d6698389b tech(build): adds s3 bucket for nightly 2017-01-24 13:58:37 +01:00
bergquist f7993db73c tech(build): installs yarn in build image 2017-01-24 11:26:03 +01:00
bergquist 66fa12835a tech(build): replace grafana_branch with circle_branch; 2017-01-24 11:26:03 +01:00
bergquist 6b70fb2729 tech(build): fixes broken yum installer 2017-01-24 11:26:03 +01:00
bergquist 5f0033f3eb tech(build): path to build relative 2017-01-24 11:26:03 +01:00
bergquist ac111bc238 tech(build): cache golang downloads. DUH! 2017-01-24 11:26:03 +01:00
bergquist 5be00191ec tech(build): Dockerfile for building grafana 2017-01-24 11:26:03 +01:00
bergquist e504e5aaf6 tech(build): avoids setup since all deps should be in /vendor 2017-01-24 11:26:03 +01:00
bergquist 1339ce80f5 tech(build): moves builds script into main repo 2017-01-24 11:26:03 +01:00
Chris Burkhart b1888fb8eb Update building_from_source.md (#7340)
Add a note about the `go get` warning that the user sees when following the setup instructions.
2017-01-24 08:31:10 +01:00
bergquist 9b57005540 tech(build): makes npm paths absolute 2017-01-23 15:53:47 +01:00
bergquist 3d5efd3350 tech(build): removes coveralls 2017-01-23 15:53:16 +01:00
Carl Bergquist 3d3958e694 Merge pull request #7328 from jubicoy/master
Added commonly used kilo-prefixed energy units
2017-01-23 13:56:35 +01:00
Torkel Ödegaard 697d0867fa fix(Elasticsearch): fix for alias patterns that refers to term that is numeric zero, fixes #7323 2017-01-23 10:15:02 +01:00
Teemu Huhtala 03eb98e94d Added commonly used kilo-prefixed energy units
Kilovolt-ampere reactive (kvar)
Kilovolt (kV)
Kiloampere (kA)
2017-01-23 10:20:11 +02:00
Torkel Ödegaard 8eae09e5e6 docs(): updated changelog with info on #7324 2017-01-23 07:29:16 +01:00
lpic cf9790fc4c ES - Support for min_doc_count on group by terms (#7324) 2017-01-23 07:26:42 +01:00
lpic a0c8380baf ES: Change bool queries to use 'filter' clause (#7313)
Change all bool queries to use 'filter' clause instead of 'must' for
better performance
2017-01-21 08:31:29 +01:00
Chris Bentivenga 9151b4034a annotationsQuery -> annotationQuery (#7321)
Documentation calls for `annotationQuery` but the [example](https://github.com/grafana/simple-json-datasource/blob/205cf4cfbce95cd455da97c7972b64538cc80ab3/src/datasource.js#L41) uses the method name `annotationQuery`
2017-01-21 08:29:21 +01:00
smalik 9862c9ff40 feat(alerting): Show/hide alerting UI using configuration variable
Use configuration variable "show_alerting_ui" to show/hide alerting UI
2017-01-20 10:43:29 -05:00
Axel Pirek 4b8f2aeb36 Fix tooltips sometimes rendering outside of graph panel
I noticed tooltips on other panels rendering outside of their panel or
even the browser window when hovering on the very edge of graphs with
relative time overrides.
2017-01-19 13:33:49 +01:00
Axel Pirek 138a79c2fb Clear highlight when clearing tooltip and crosshair 2017-01-19 11:08:32 +01:00
Axel Pirek ee58a6ee2b Speed up tooltip value retrieval 2017-01-19 10:16:28 +01:00
Axel Pirek a2e6408be1 Only render tooltip if position is in viewport 2017-01-19 10:16:20 +01:00
bergquist 57099f0273 docs(changelog): adds note about closing #7301 2017-01-19 09:33:53 +01:00
bergquist 09b61caa65 Merge branch 'huydx-notify-line' 2017-01-19 09:30:13 +01:00
bergquist f5d8a75381 tech(webhook): remove redundant if statement 2017-01-19 09:29:40 +01:00
huydx 376d2d56bf (feature) add LINE notify to notifier 2017-01-19 17:26:53 +09:00
Adrián López e1b82e72eb Fix empty value tags and comma separated values (#7289)
When a tag doesn't have a value it was showing a empty 'bubble'.
If value has several values separated by commas, make a 'bubble' for
each one.
2017-01-18 16:02:40 +01:00
bergquist 94e901793a docs(guides): rearranges menu order 2017-01-17 14:56:11 +01:00
bergquist 96fbe404f8 docs(changelog): adds note about closing #7268 2017-01-17 12:19:46 +01:00
bergquist 55af92eba1 fix(table): fixes broken annotation rendering
closes #7268
2017-01-17 12:17:18 +01:00
bergquist 2dd1eb81cd docs(changelog): adds note about closing #7223 2017-01-17 10:49:31 +01:00
bergquist 4ea4e0436a feat(mailer): set localname to hostname
Some email providers does not accept localhost
in the HELO message. So we set it to hostname
instead. Our hope is that should be enough for
those providers who does not accept localhost.

closes #7223
2017-01-17 10:36:04 +01:00
bergquist 276916cd5d docs(changelog): note about closing #7035 2017-01-17 10:05:56 +01:00
bergquist ed9595a20d Merge branch 'show_no_data_in_list' 2017-01-17 09:53:38 +01:00
bergquist e78da57e4d feat(alerting): shows when no_data triggered alerts
closes #7035
ref #7257
2017-01-17 09:49:25 +01:00
Torkel Ödegaard 0683742e83 tech(library upgrade): fixed unit test broken by angularjs upgrade, #7274 2017-01-16 22:27:35 +01:00
Torkel Ödegaard 6f87f88690 tech(lib upgrade): upgraded angularjs from 1.5.8 to 1.6.1, closes #7274 2017-01-16 21:31:55 +01:00
Torkel Ödegaard 710d07d7a5 Merge branch 'mtanda-clipboard_js' 2017-01-16 21:08:47 +01:00
Torkel Ödegaard c5955bacd2 refactor(): minor refactor 2017-01-16 21:08:39 +01:00
Torkel Ödegaard 09cec8535e Merge branch 'clipboard_js' of https://github.com/mtanda/grafana into mtanda-clipboard_js 2017-01-16 20:57:16 +01:00
Mitsuhiro Tanda d683b0379b fix monkey patch for clipboard.js 2017-01-17 01:12:37 +09:00
bergquist f29f83ca75 chore: adds comment out why the code was added 2017-01-16 15:04:53 +01:00
bergquist 3c9357a2e9 fix(alerting): supports lowercase metrics
this fix is due to EvalMatch now serailize as lower case.

ref #7257
2017-01-16 15:01:57 +01:00
bergquist 01c6658a7a docs(changelog): adds note about closing #7269 2017-01-16 14:42:31 +01:00
bergquist bfa3c590e7 fix(alertlist): changes scroll to auto
close #7269
2017-01-16 14:38:01 +01:00
bergquist 22601fa736 docs(changelog): adds note about closing #7209 2017-01-16 12:48:29 +01:00
bergquist 76c9f62265 Merge branch 'Ricky-N-feature/dataProxyAuditLog' 2017-01-16 12:44:40 +01:00
bergquist 06440ef57b tech(dataproxy): moves cfg to [dataproxy] 2017-01-16 12:43:59 +01:00
bergquist d4a96b9741 tech(dataproxy): make the code a little bit more defensive 2017-01-16 12:24:08 +01:00
bergquist dd84fb563a style(dataproxy): renames log functions 2017-01-16 12:23:49 +01:00
bergquist 51bca7d84b tech(dataproxy): moves all parameters to Info call 2017-01-16 12:16:41 +01:00
bergquist 839eb97061 Merge branch 'feature/dataProxyAuditLog' of https://github.com/Ricky-N/grafana into Ricky-N-feature/dataProxyAuditLog 2017-01-16 12:02:43 +01:00
xginn8 873a8bc520 wrap the title of a panel and dashboard search results. fixes #7203 (#7213) 2017-01-16 12:02:07 +01:00
bergquist ee1c15b9cc docs(changelog): adds note about closing #7234 2017-01-16 11:54:38 +01:00
bergquist 99f18f9d69 merge branch 'oliverpool-diff-aggregate' 2017-01-16 11:52:34 +01:00
bergquist 480a58d377 Merge branch 'diff-aggregate' of https://github.com/oliverpool/grafana into oliverpool-diff-aggregate 2017-01-16 11:52:22 +01:00
bergquist 8a8de91a8b Merge branch 'andrewhowdencom-master' 2017-01-16 11:50:23 +01:00
bergquist 2fdb47ae97 docs(prometheus): rewrote and shorten the note about templates 2017-01-16 11:50:12 +01:00
bergquist 2696d6cd3f Merge branch 'master' of https://github.com/andrewhowdencom/grafana into andrewhowdencom-master 2017-01-16 11:47:13 +01:00
bergquist c73e86e557 docs(testdata): some minor changes 2017-01-16 11:21:23 +01:00
bergquist ae08386ce3 docs(testdata): adds docs page about test datasource 2017-01-16 11:13:52 +01:00
bergquist 92f0a22fd7 docs: moves datsources pages to feature folder 2017-01-16 11:13:27 +01:00
bergquist bd414c1793 docs: moves panels to panel folder 2017-01-16 08:17:37 +01:00
bergquist 20bdc48f13 docs(guides): remove (Latest) from menu name 2017-01-16 08:15:47 +01:00
bergquist f4713956f0 tech: updates latest.json to 4.1.1 2017-01-16 07:07:32 +01:00
bergquist eb8d1dfa34 docs(smtp): adds info about how to use passwords with #
closes #7265
2017-01-16 07:03:35 +01:00
bergquist 62eaa683c0 docs(changelog): note about closing #7256 2017-01-16 07:00:51 +01:00
And^Cw Howden 6edbc4604c Add additional documentation about Prometheus + Templated queries 2017-01-15 20:56:53 +01:00
Ryuichi Sakai 1bc55a2d38 Enable image rendering to use browser time offset 2017-01-15 22:01:28 +09:00
Torkel Ödegaard e5a6c523d7 Merge branch 'master' of github.com:grafana/grafana 2017-01-13 17:39:41 +01:00
Torkel Ödegaard 49fe74228b fix(browser history): fixes and enhancements to browser history, it now works properly again AND it can restore previous time ranges in dashboards, closes #7259 2017-01-13 17:37:53 +01:00
Carl Bergquist c43bb7fb99 Extractor should not modify dashboard json (#7256)
* test(dashboard): tests that he extractor does not modify original json

* feat(extractor): validate a cloned version of the dashboard json
2017-01-13 15:46:23 +01:00
bergquist 2d441bfb37 docs(changelog): note about closing #7149 2017-01-13 15:20:15 +01:00
Carl Bergquist 1efeaafdbf Merge pull request #7249 from grafana/alerting_test_alertrule
Enable error and no_data overrides when testing alerting.
2017-01-13 15:18:02 +01:00
Torkel Ödegaard deff24d2c1 Merge branch 'clipboard_js' of https://github.com/mtanda/grafana into mtanda-clipboard_js 2017-01-13 14:57:23 +01:00
Torkel Ödegaard d354f3a8af fix(alerting): fixed evaluation for no_value condition, fixes #7244 (#7247)
* fix(alerting): fixed evaluation for no_value condition, fixes #7244

* feat(alerting): moving null library into grafana, fixing handling on no value / no series
2017-01-13 12:32:30 +01:00
bergquist 0873d493c2 feat(alerting): moves getNewState to evalHandler
closes #7149
2017-01-13 11:02:24 +01:00
rrickardt bccdd7cad1 Update postinst (#7233)
With present postinst script on Centos 7, restart after upgrade is not working with Warning: grafana-server.service changed on disk. Run 'systemctl daemon-reload' to reload units.

So i added systemctl daemon-reload.
2017-01-13 06:27:36 +01:00
Tomas Varneckas 54c456ec5b Make API key usage example meaningfully runable (#7243) 2017-01-13 06:25:49 +01:00
Mitsuhiro Tanda 1672ca4edb call clipboard destroy() 2017-01-13 02:58:44 +09:00
Mitsuhiro Tanda 3df119002d patch for clipboard.js work 2017-01-13 02:19:02 +09:00
Carl Bergquist 13178d99d4 Merge pull request #7240 from tomasv/fix-tags-api-doc
Fix typo in tags API documentation example request
2017-01-12 17:08:14 +01:00
Tomas Varneckas 9449e93e1e Fix typo in tags API documentation example request 2017-01-12 17:55:43 +02:00
oliverpool 80c67267e8 Add the diff option on the singlestat panel 2017-01-12 16:23:57 +01:00
oliverpool 92a0b402c5 Add diff documentation 2017-01-12 16:22:41 +01:00
oliverpool 2b932492c2 Add a diff aggregate
`diff = current - first` (when available)
2017-01-12 16:19:18 +01:00
bergquist 60a2041065 tech(build): yarn install should use --pure-lockfile 2017-01-12 15:36:44 +01:00
bergquist 915b1efab9 tech(build): updates deps in yarn 2017-01-12 15:33:07 +01:00
bergquist 9a35d82e51 docs(singlestat): its called avg in grafana
ref #7234
2017-01-12 13:36:10 +01:00
bergquist 35db025b0a docs(installation): updates docs for 4.1.1 2017-01-12 10:38:23 +01:00
Torkel Ödegaard 821876a85b Merge branch 'master' of github.com:grafana/grafana 2017-01-11 19:48:17 +01:00
Torkel Ödegaard b8b517cd3f docs(): updated changelog 2017-01-11 19:48:06 +01:00
Mitsuhiro Tanda 4b567e35d5 suppress refresh when user is inactive (#7219) 2017-01-11 19:46:34 +01:00
Torkel Ödegaard f045fbf267 Merge branch 'master' of github.com:grafana/grafana 2017-01-11 19:40:59 +01:00
Torkel Ödegaard 9c0f7f547b fix(alerts): added alert listener for appEvents 2017-01-11 19:40:05 +01:00
Mitsuhiro Tanda db2718a699 remove zero_clipboard.js 2017-01-12 02:37:32 +09:00
Mitsuhiro Tanda 1571072c18 use clipboard.js 2017-01-12 02:37:29 +09:00
Mitsuhiro Tanda 5ccbe6d40b add clipboard.js 2017-01-12 02:22:56 +09:00
Ricky Niemi 0b48e48e3d Small whitespace fix on setting file 2017-01-11 07:51:46 -08:00
Ricky Niemi 269d16301a Rename to audit logging to data proxy logging 2017-01-11 07:40:06 -08:00
Ricky Niemi 0fee7c863a Gate data proxy audit logging behind audit_logging server setting 2017-01-11 07:22:57 -08:00
Torkel Ödegaard 61214899bd docs(): updated changelog 2017-01-11 15:26:08 +01:00
Torkel Ödegaard bd8899b37d fix(graph): fixed table legend min-height, fixes #7221 2017-01-11 15:24:43 +01:00
Torkel Ödegaard edae622d8f docs(): updated changelog 2017-01-11 14:04:34 +01:00
Mitsuhiro Tanda 7e4c101d02 S3 IAM support (#7058)
* add s3 dependencly

* rewrite image uploader by aws-sdk-go

* improve backward compatibility of s3 image uploading

* set default for expires option

* remove acl and expires
2017-01-11 14:00:49 +01:00
Lee Briggs 2e796da441 Add support for sensu notifications (#7207) 2017-01-11 13:57:07 +01:00
Torkel Ödegaard 64f5146a62 change(text panel): removed rarely used (and not properly working), text mode option, closes #6389, closes #7214 2017-01-11 12:33:12 +01:00
Torkel Ödegaard cdc7da3ae1 docs(): updated changelog 2017-01-11 12:16:34 +01:00
Torkel Ödegaard b48273d1cf Merge branch 'master' of github.com:grafana/grafana 2017-01-11 12:11:38 +01:00
Torkel Ödegaard 149dd78298 Merge branch 'built_in_template_variables' 2017-01-11 12:10:33 +01:00
Torkel Ödegaard b475f91387 feat(templating): completed work on built in template variables and , closes #7190, refactors #7170 2017-01-11 12:10:26 +01:00
bergquist 5e14f4a16e tech(build): changes build for 4.1 release 2017-01-11 11:07:01 +01:00
bergquist 8574f100aa docs(guides): removes beta info for 4.1 2017-01-11 10:50:41 +01:00
Torkel Ödegaard 44b7a26119 fix(graph): fix for table legend and scroll, fixes #7204, fixes #6628 2017-01-11 10:35:52 +01:00
Torkel Ödegaard 8c39cd35f0 progress on interval built in variable 2017-01-11 10:18:21 +01:00
bergquist f4e9bd507b tech(build): updates packagecloud script 2017-01-11 08:59:44 +01:00
Utkarsh Bhatnagar 7e3ccdf983 Fixed opentsdb templating bug (#7208) 2017-01-10 21:35:05 +01:00
Ricky Niemi d9cbb994b8 Clean up audit log formatting and code 2017-01-10 11:42:03 -08:00
bergquist 6518a0f765 Merge branch 'docs-4.1' 2017-01-10 15:37:07 +01:00
bergquist 50b937dcb1 tech(build): updates docs to 4.1.0 2017-01-10 15:36:54 +01:00
bergquist 4d0b5ca14a tech(build): upgrades appveyour nodejs version 2017-01-10 15:01:53 +01:00
bergquist 381f8d4475 docs(changelog): adds note about closing #7195 2017-01-10 10:30:28 +01:00
Ricky Niemi d03977ac0e Add initial audit logging to data proxy 2017-01-09 22:59:43 -08:00
Carl Bergquist edf868d46b Merge pull request #7195 from theisenmark/webhook-username
Fix webhook username mismatch
2017-01-09 18:03:34 +01:00
Mark Theisen afda9cbb2d Fix webhook username mismatch
Fixing variable name mismatch so that the Authorization HTTP header is added to webhook notifications.
2017-01-09 17:18:53 +01:00
bergquist 4f216f22e9 docs(http): fixes typos 2017-01-09 16:49:06 +01:00
Torkel Ödegaard e218837380 began work on built in template variables, #7190 2017-01-09 15:31:19 +01:00
Carl Bergquist bcfe048aae Merge pull request #7184 from simnv/git-via-https
Use HTTPS instead of git to download tether-drop package
2017-01-09 07:15:01 +01:00
Valeriy Simonov 1aa1f7b12c Use https instead of git for tether-drop
git protocol (tcp/udp/9418) is forbidden when using some corporate
proxies. HTTPS is used more widely.
2017-01-09 10:00:07 +05:00
Valeriy Simonov 5bfe0ab237 Merge remote-tracking branch 'grafana/master' 2017-01-09 09:37:19 +05:00
Vitaliy Fuks 7c376f2bda Fixed typo. (#7181) 2017-01-08 09:43:17 +01:00
Mekal Zheng e57c764410 check validation of interval string before converting to seconds 2017-01-07 18:17:44 +08:00
Mekal Zheng 333aeb43c4 use methods of kbn to convert interval string to both second and millisecond 2017-01-07 16:33:40 +08:00
Mekal Zheng af798092b7 add variable $intervalSecond 2017-01-07 00:28:32 +08:00
Torkel Ödegaard 53fbb8b074 docs(changelog): added entry for telegram notifier, #7098 2017-01-06 12:19:39 +01:00
Torkel Ödegaard 31bd725559 Merge branch 'notifier-refactor' 2017-01-06 12:17:34 +01:00
Torkel Ödegaard eca918c0e7 Merge branch 'master' of github.com:grafana/grafana 2017-01-06 12:15:12 +01:00
Torkel Ödegaard 69d31c560d bumped master to 4.2 2017-01-06 12:14:58 +01:00
Mitsuhiro Tanda dfaefe34a4 add cloudwatch region (#7161) 2017-01-06 12:05:27 +01:00
Torkel Ödegaard b8f559aecb feat(plugins): made notifiers more pluggable and easier to support many of them, new ones can now be added without modifying any existing file, #7162 2017-01-06 12:04:25 +01:00
Torkel Ödegaard d6a2431767 Merge branch 'notifier-telegram-messenger' of https://github.com/leonoff/grafana into leonoff-notifier-telegram-messenger 2017-01-06 10:27:20 +01:00
Torkel Ödegaard 45d2e70ba7 feat(dashboard): sorting dashboard model kekeys, refactoring PR #7139 2017-01-06 10:09:11 +01:00
Torkel Ödegaard c472054f21 Merge branch 'master' into dashboard-export 2017-01-06 07:50:16 +01:00
Carl Bergquist e61d049623 tech(build): replace npm with yarn (#7108)
* tech(build): replace npm with yarn

* tech(build): change node version for CI
2017-01-06 07:28:43 +01:00
Torkel Ödegaard 7433e8c58f docs(changelog): updated changelog with ES PR #7154 2017-01-06 07:24:56 +01:00
Torkel Ödegaard 20b7c2f2e2 feat(ES): refactoring PR #7154 2017-01-06 07:22:37 +01:00
Torkel Ödegaard 293fd93e6c fix(elasticsearch): fixed predict default value, fixes #7145 2017-01-06 07:06:41 +01:00
Torkel Ödegaard 6960fb46c2 fix(build): remove triggering full package release on every commit, #6970 2017-01-06 06:51:17 +01:00
Torkel Ödegaard 813232315e fix(testdata): fixed test data source build issue 2017-01-06 06:50:02 +01:00
Torkel Ödegaard 63f6e86e46 feat(ES): better support for text type, closes #7151 2017-01-06 06:35:08 +01:00
Torkel Ödegaard 658d39944b feat(elasticsearch): add support for Elasticsearch scaled_type number type, closes #7155 2017-01-06 06:12:48 +01:00
Vaibhav Tandon b97e784555 Moving average support for all models along with additional settings associated with each model 2017-01-05 23:17:24 +00:00
Matthew McGinn 870c5f8cef adding refresh url param to pass refresh interval #7124 2017-01-05 00:15:52 -05:00
Dan Cech df1e90c723 export sorted dashboard json 2017-01-04 18:13:33 -05:00
Torkel Ödegaard 36929c2a92 fix(elasticsearch): add support for text type filter in templating query, fixes #7136, fixes #7135 2017-01-04 20:14:56 +01:00
Utkarsh Bhatnagar 65057212e7 Org update should throw error if not found (#7066)
* Org update should give error if not found

* Used affected rows
2017-01-03 09:21:18 +01:00
bergquist d8ebebc612 docs(http_api): adds docs for alerting in http api 2017-01-03 08:12:18 +01:00
bergquist 9a3e51894b tech(alerting): remove unused property 2017-01-03 08:11:17 +01:00
Torkel Ödegaard 9dc42648cf fix(templating): fixed issue with experimental feature template variable value groups tags, fixes #6752 2017-01-02 13:32:20 +01:00
bergquist 2e7d222f6e Revert "tech: remove unused code"
This reverts commit d9131be0a5.
2017-01-02 13:22:37 +01:00
bergquist d9131be0a5 tech: remove unused code 2017-01-02 13:11:09 +01:00
Torkel Ödegaard 2be5ee0bd5 fix(graph): fixed graph legend issue with always visible scrollbar, fixes #6828 2017-01-02 12:22:56 +01:00
Torkel Ödegaard 083a42942f fix(phantomsj): fixed issue with y axis label rotation in phantomjs rendered graphs, fixes #6924 2017-01-02 12:01:48 +01:00
Torkel Ödegaard 8030b56bba fix(panel): fixed panel help text for panels that set background color, fixes #7085 2017-01-02 11:14:00 +01:00
Mitsuhiro Tanda 9855ea8c6c handle sts error (#7088) 2016-12-30 16:59:06 +01:00
bergquist 08bad530dc tech(build): fail when go fmt fails 2016-12-30 15:08:31 +01:00
Mikhail Leonov e32a653cb6 Added Telegram Messenger notification destination 2016-12-30 15:57:12 +03:00
Julie Lee 8ed8922525 Update _tabbed_view.scss (#7078)
repeated style statement
2016-12-28 12:28:05 +01:00
Carl Bergquist c97131d1a0 Merge pull request #7074 from ksatirli/master
Adds London and Canada AWS Regions
2016-12-27 16:32:56 +01:00
Kerim Satirli 48b57afe84 Adds London and Canada AWS Regions 2016-12-27 14:25:12 +01:00
Kerim Satirli 797e2ea25d Adds London and Canada AWS Regions 2016-12-27 14:10:36 +01:00
Vitaliy Fuks 716d6473b7 Fixed typo. (#7064) 2016-12-27 11:35:00 +01:00
Darrian d662961ebe Added 'linear' to fill types for InfluxDB (#7042) 2016-12-23 09:43:47 +01:00
Ryan McKinley 27d83f414e Add influx 'mode' and 'cumulative_sum' (#7045) 2016-12-23 09:43:15 +01:00
James Blackburn f98e07e012 Fix auto_assign_org_role = Read Only Editor docs (#7057)
`auto_assign_org_role` should be `Read Only Editor` rather than `Read-Only Editor`
2016-12-23 09:41:28 +01:00
Darrian cdfb24ab85 Added offset interval to specs 2016-12-21 22:58:40 +00:00
Darrian 96f3ee9e4c Added missing category for Predictions 2016-12-21 22:55:18 +00:00
Darrian 27ead53382 Set indentation to tabs 2016-12-21 22:54:56 +00:00
bergquist fef511d403 docs(conf): adds docs about supporting database_url
closes #1878
2016-12-21 23:39:08 +01:00
Darrian b8572b69f0 Register new queries available in InfluxDB - Holt Winters fixes #5619
For correct data fill on holt winters predictions, the time function
needed modification to allow a 2nd param for offset, as per
https://docs.influxdata.com/influxdb/v1.0/query_language/data_exploratio
n/#advanced-group-by-time-syntax
2016-12-21 22:30:32 +00:00
bergquist c18741c605 docs(ldap): adds note about special chars in password
closes #5337
2016-12-21 22:02:34 +01:00
bergquist 02bf83b37e docs: fixes broken code formating 2016-12-21 15:35:55 +01:00
Torkel Ödegaard fad07f0d15 refactor(http): refactoring http server 2016-12-21 14:36:32 +01:00
bergquist 8859eeb151 docs(readme): adds link to 4.1 beta release 2016-12-21 12:35:54 +01:00
bergquist a7b3ef06a8 docs: update image in github repo 2016-12-21 12:31:25 +01:00
Carl Bergquist 70f37651be Merge pull request #7034 from Timosha/add-ruble-sign
add Russian ruble sign
2016-12-21 11:10:01 +01:00
Timon 1ab66ac5d7 add Russian ruble sign 2016-12-21 12:59:09 +03:00
bergquist cb21b20905 docs(changelog): adds note about closing #6997 2016-12-21 10:05:56 +01:00
bergquist 4e306590f8 Merge branch 'v4.0.x' 2016-12-21 10:02:28 +01:00
bergquist 8cef4cc74e fix(influxdb): handles time(auto) like time($interval)
closes #6997
2016-12-21 10:01:20 +01:00
Torkel Ödegaard 8bccbdafd2 feat(live): minor progress on stream manager 2016-12-21 09:16:29 +01:00
bergquist c3005397f5 docs: adds guide for whats new in 4.1 beta 2016-12-21 08:33:35 +01:00
bergquist c18b410104 docs: updates release date for 4.1.0 2016-12-20 20:11:38 +01:00
Trent White 5440804109 add new grabber icon and tweak styles to better fit space (#7019) 2016-12-20 17:49:04 +01:00
Torkel Ödegaard b7827962dc feat(live): just wanted to checkout how far I got on the websocket data source 2016-12-20 16:09:04 +01:00
bergquist 1c8865e702 docs: updates links to windows beta build 2016-12-20 16:08:05 +01:00
Torkel Ödegaard 1507d6c872 Merge branch 'master' of github.com:grafana/grafana 2016-12-20 15:30:10 +01:00
Torkel Ödegaard 4c5bdd9da4 fix(panel): need to check if panel has links 2016-12-20 15:24:53 +01:00
bergquist 48fbd7e134 docs: add note about closing #4079 2016-12-20 14:46:05 +01:00
bergquist afa5e9507a docs: updates install links for 4.1.0 beta 2016-12-20 13:15:59 +01:00
Utkarsh Bhatnagar 13c4ce68ee Added name and id in response of create/update (#7016) 2016-12-20 13:02:26 +01:00
Torkel Ödegaard fa01022494 fix(ux): fixed css issue with add row button, fixes #7017 2016-12-20 13:00:46 +01:00
Torkel Ödegaard e81e4ad06f updated websocket lib 2016-12-20 11:36:11 +01:00
bergquist 034db646ab release v4.1.0-beta1 2016-12-20 11:25:58 +01:00
bergquist 2660609c40 tech(build): adds scripts for only uploading to testing 2016-12-20 11:12:19 +01:00
bergquist ba96b88b66 feat(alerting): adds 24h and 48h duration as pre defined values
ref #7007
2016-12-20 09:23:05 +01:00
bergquist 80d438ca49 chore(alerting): removes double logging 2016-12-20 08:34:44 +01:00
bergquist 0c857e0ed8 docs(http): adds info about mass pausing alerts 2016-12-19 16:45:46 +01:00
bergquist a230ff65a9 fix(alerting): typo 2016-12-19 16:44:59 +01:00
bergquist 8d6c94b9f9 docs(changelog): adds note about closing #6589 2016-12-19 16:42:11 +01:00
Carl Bergquist 9135abf3ae Merge pull request #6996 from bergquist/pause_all_alerts
Pause all alerts
2016-12-19 16:38:44 +01:00
Torkel Ödegaard 164de5e3ce Merge branch 'master' of github.com:grafana/grafana 2016-12-19 16:36:26 +01:00
Torkel Ödegaard a2baec8592 fix(panel): fixed panel help tooltip issue, #4079 2016-12-19 16:36:09 +01:00
bergquist 6c2c3c7e24 Revert "fix(alerting): pause dto can only pause one"
This reverts commit b2c5a6a037.
2016-12-19 16:07:55 +01:00
bergquist b2c5a6a037 fix(alerting): pause dto can only pause one 2016-12-19 16:05:24 +01:00
bergquist 71f406558e tech(alerting): remove comments 2016-12-19 15:40:09 +01:00
bergquist a2257ec3d0 tech(alerting): renames pause all method 2016-12-19 15:17:49 +01:00
bergquist ecf44d4d9c tech(): go fmt code 2016-12-19 13:26:42 +01:00
bergquist ecdf1888c4 feat(alerting): removes pause per datasource 2016-12-19 13:24:45 +01:00
Torkel Ödegaard 090db9401c fix(graph): fix for when data min/max delta is zero and negative and grid y min/max is auto, fixes #6980 2016-12-19 09:30:52 +01:00
Torkel Ödegaard 3be77ad293 fix(docs): fixed spelling in docs article 2016-12-19 08:42:37 +01:00
bergquist 6b9db0c0c5 style(alerting): simplify support for pausing multiple alerts 2016-12-19 08:18:42 +01:00
Torkel Ödegaard 0a0b4f5533 Merge branch 'info-corner-refinements' 2016-12-16 21:17:47 +01:00
Torkel Ödegaard 2fc2cc721e change(panel): changed hover delay for #6998 2016-12-16 21:16:35 +01:00
Matt 594207b6d3 Polish on icon placement, incorporated torkel's better idea for going slightly lighter, make sure error icon color was white now 2016-12-16 12:51:22 -05:00
Matt 0c85e845df Softened the color a bit by mixing in the panel-bg, so it's not introducing any new variables. Was too start as pure body-bg 2016-12-16 12:11:29 -05:00
bergquist 86f148be48 docs(paths): updates relative path on /installation/ page 2016-12-16 17:42:40 +01:00
bergquist 30022b0d0b docs(paths): adds aliase for rpm and debian install
got reports on twitter about broken links.
2016-12-16 17:36:01 +01:00
bergquist 686f598d44 docs(changelog): adds note about closing #6473 2016-12-16 17:11:33 +01:00
bergquist 4244551a87 fix(influxdb): removes quotes for field key queries
fixes #6473
2016-12-16 17:09:17 +01:00
Torkel Ödegaard 3a9680939e Merge branch 'master' of github.com:grafana/grafana 2016-12-16 16:09:59 +01:00
Torkel Ödegaard a361d1f488 feat(panel): refinements for panel help text, made the inspector the home for the model version 2016-12-16 16:09:02 +01:00
bergquist 4ef95cfd31 style(api): reduce code complexity 2016-12-16 16:07:23 +01:00
bergquist c45ad965d1 chore(github): typo 2016-12-16 15:50:29 +01:00
bergquist 1f8f3ed038 style(api): extracts filter logic for mass pause 2016-12-16 15:19:13 +01:00
bergquist fb6aa0e026 feat(api): adds endpoint for mass pausing alerts
ref #6589
2016-12-16 15:00:58 +01:00
Torkel Ödegaard 2c05237d90 Merge branch 'master' of github.com:grafana/grafana 2016-12-16 13:47:22 +01:00
Torkel Ödegaard c04590784b Merge branch 'utkarshcmu-help-text' 2016-12-16 13:43:51 +01:00
Torkel Ödegaard af363ab478 fix(panel): build fixes 2016-12-16 13:43:43 +01:00
Torkel Ödegaard 62f3b16671 feat(panel): working on panel help text and unifying panel links, panel errors, and panel help into a single panel feature, #4079 , #6847 2016-12-16 13:06:04 +01:00
Torkel Ödegaard ac9ae52cea feat(panel): working on panel help text and unifying panel links, panel errors, and panel help into a single panel feature, #4079 , #6847 2016-12-16 12:46:29 +01:00
Torkel Ödegaard b9043c915e feat(panel): working on panel help text, #4079 , #6847 2016-12-16 11:48:32 +01:00
Mitsuhiro Tanda bc8d27737f fix cloudwatch docs (#6992) 2016-12-16 11:31:02 +01:00
Mitsuhiro Tanda 81394fcaa4 add cloudwatch internal metrics (#6990) 2016-12-16 10:48:05 +01:00
Mitsuhiro Tanda f8d6902428 fix cloudwatch percentile (#6989) 2016-12-16 10:47:41 +01:00
Torkel Ödegaard ca7bc25c83 feat(panel): working on panel help text, #4079 , #6847 2016-12-16 10:34:00 +01:00
bergquist df3adbc0f8 refactor(mqe): reduce duplication 2016-12-16 08:01:58 +01:00
bergquist 830bf5a91c docs(changelog): adds note about closing #6676 2016-12-15 16:31:30 +01:00
bergquist faa3b5f4e8 feat(alertlist): adds sorting on state
closes #6676
2016-12-15 16:29:40 +01:00
bergquist 2264addd9d docs(changelog): adds notes about closing #6905 2016-12-15 14:29:06 +01:00
bergquist c467e48940 feat(notifications): removes html escaping subject
closes #6905
2016-12-15 14:27:33 +01:00
Torkel Ödegaard 597ebb1161 fix(config): fixed issue setting generic oauth name via ENV variable, fixes #6974 2016-12-15 14:08:39 +01:00
Torkel Ödegaard 0c94194a5b Merge branch 'master' of github.com:grafana/grafana 2016-12-15 13:57:05 +01:00
Torkel Ödegaard b50490f080 docs(): changelog updated 2016-12-15 13:56:49 +01:00
Torkel Ödegaard 35b970347a Merge branch 'v4.0.x' 2016-12-15 13:55:26 +01:00
Torkel Ödegaard 497a1fcefc Merge branch 'v4.0.x' of github.com:grafana/grafana into v4.0.x 2016-12-15 13:54:58 +01:00
Torkel Ödegaard 94962b4193 fix(logging): fixed default log level filter option not taking effect, fixex #6978 2016-12-15 13:54:47 +01:00
bergquist 0c8193a6af docs(changelog): adds note about closing #6866 2016-12-15 11:15:06 +01:00
bergquist ca7baca21d feat(alerting): adds ok as no data option
closes #6866
2016-12-15 11:13:19 +01:00
bergquist 6a161216de fix(influxdb): fixes bug with empty tagColumn for annotations 2016-12-15 10:54:22 +01:00
bergquist 51c4385c92 fix(mqe): only parse none empty functions 2016-12-15 08:52:43 +01:00
bergquist f907330c9e tech(mailer): improves error when grafana cannot read open cert/key file
ref #6949
2016-12-15 08:27:21 +01:00
bergquist e3b53fe599 test(mqe): adds test for double function usage 2016-12-15 07:36:06 +01:00
bergquist 7dece3ff0c test(mqe): solves brittle unit test 2016-12-15 07:36:06 +01:00
Torkel Ödegaard 19552450fa Merge branch 'master' of github.com:grafana/grafana 2016-12-14 22:31:11 +01:00
Torkel Ödegaard 435f474e8a docs(): minor fix for docker docs 2016-12-14 22:30:20 +01:00
bergquist dde6e73fed feat(mqe): add basic support for functions list 2016-12-14 22:29:17 +01:00
Solar Olugebefola 1e6210dd41 update broken links (#6961) 2016-12-14 22:20:22 +01:00
Torkel Ödegaard 8fc6e4cfb0 fix(auth proxy, ldap): fixed so users cannot change password when ldap or auth proxy is enabled, fixes #2495, do not allow user to change email or username depending on what property auth proxy is using, fixes #6903 2016-12-14 22:19:25 +01:00
Torkel Ödegaard df562e23cf feat(ldap): better ldap logging, closes #6918 2016-12-14 22:01:02 +01:00
Torkel Ödegaard 6e27db148c Merge branch 'authproxy_ldap' of https://github.com/seuf/grafana into seuf-authproxy_ldap 2016-12-14 21:45:15 +01:00
Torkel Ödegaard 9f69a4d34d clean(): removed old docs file 2016-12-14 21:22:01 +01:00
Torkel Ödegaard c59fd2e8f6 fix(docs): fixed support for old docs url, fixes #6960 2016-12-14 21:21:21 +01:00
Torkel Ödegaard 330c1b945e refactor(datasource): refactoring datasource secure json fields handling, #6697, #6692 2016-12-14 21:06:10 +01:00
Torkel Ödegaard b38e9b0cac fix(cloudwatch): removed debugger statement 2016-12-14 20:40:02 +01:00
Torkel Ödegaard c3920bfba1 fix(cloudwatch): fixed broken cloudwatch edit page, #6697 2016-12-14 20:38:35 +01:00
Torkel Ödegaard 467ddc19c3 feat(panel): worked on panel description tooltip, #6847 2016-12-14 17:22:19 +01:00
bergquist ca6a667555 feat(mqe): renames app tag into cluster 2016-12-14 16:49:16 +01:00
Torkel Ödegaard 5f7ad9ddb6 Merge branch 'help-text' of https://github.com/utkarshcmu/grafana into utkarshcmu-help-text 2016-12-14 16:20:36 +01:00
bergquist f8871f9e4a chore(mqe): remove comments 2016-12-14 16:16:42 +01:00
bergquist 6d57e42246 feat(mqe): restricts the executor to max 4 concurrent outgoing requests 2016-12-14 15:40:15 +01:00
Torkel Ödegaard 7425c63528 fix(dashboard): fixed unit test 2016-12-14 14:42:25 +01:00
Torkel Ödegaard e72a60bbf5 feat(graph): shared graph tooltip is not a select option with 3 options, normal, shared crosshair & shared tooltip, CTRL+O or CMD+O cycles option, closes #6894 2016-12-14 14:33:33 +01:00
Torkel Ödegaard baec2bbe8a fix(firefox): fixed table options tab UX issues, fixes #6900 2016-12-14 13:16:54 +01:00
Torkel Ödegaard 488fe62f15 fix(singletat): fixed/polished layout in singlestat ui options tab 2016-12-14 12:58:20 +01:00
Torkel Ödegaard faf6a5fd36 fixed issue in metric segment and option lookup, #6912 2016-12-14 10:50:48 +01:00
Carl Bergquist 38d8ba8faa Merge pull request #6952 from huydx/format-gofmt
(format) run go fmt in pkg
2016-12-14 09:26:38 +01:00
Carl Bergquist 9cd04768f7 Merge pull request #6953 from huydx/typo-execution
(typo) Exeuction -> Execution
2016-12-14 09:24:54 +01:00
bergquist 9510f21304 docs(changelog): fixes invalid ticket ref 2016-12-14 09:12:22 +01:00
huydx b97f4fd8b9 (typo) Exeuction -> Execution 2016-12-14 12:21:41 +09:00
huydx adb441e5c8 (format) run go fmt in pkg 2016-12-14 12:17:38 +09:00
bergquist 63bf332023 Merge branch 'alerting_mqe' 2016-12-13 16:15:22 +01:00
bergquist e6c557bb91 Merge branch 'master' into alerting_mqe 2016-12-13 16:15:04 +01:00
bergquist 362162d6fa feat(mqe): add token cache 2016-12-13 14:01:48 +01:00
bergquist 69d6316512 style(mqe): instance dependencies in ctor func 2016-12-13 12:47:57 +01:00
bergquist 549c3ab78b tech(mqe): update todo 2016-12-13 11:42:06 +01:00
bergquist b620c7457d test(query_editor): adds test for nesting queries in targetFull 2016-12-13 10:46:09 +01:00
Utkarsh Bhatnagar bd20dc6c4c Fixed failing tests (#6941) 2016-12-13 10:00:33 +01:00
bergquist 76f78c0f72 test(alert_tab): basic test skeleton
I created this test by misstake. But instead of deleting it I thought it
might be good to keep it to make it easier to add tests for the alert
tab
2016-12-13 09:50:38 +01:00
Torkel Ödegaard 62d18cd493 docs(): updated changelog with PR #6940 2016-12-13 09:18:10 +01:00
Utkarsh Bhatnagar 5777f65d05 Basic Auth now supports LDAP username and password (#6940) 2016-12-13 09:15:52 +01:00
Torkel Ödegaard 0841e841f5 cleanup(): removed docker/production folder as it was old and unused (ie grafana-docker repo is the place for the offical production docker container 2016-12-12 22:12:27 +01:00
bergquist e1703166f0 docs(changelog): add thank you note to contributor 2016-12-12 19:06:21 +01:00
bergquist 99e3db8208 Merge branch 'master' into alerting_mqe 2016-12-12 19:01:50 +01:00
Torkel Ödegaard 46c161b104 Merge branch 'master' of github.com:grafana/grafana 2016-12-12 16:35:59 +01:00
Torkel Ödegaard 80d88d302c fix(config): changed default for oauth and allow_sign_up setting, #6928 2016-12-12 16:35:42 +01:00
Hans Kristian Flaatten 1060b99810 docs(configuration): set allow_sign_up to true for gerneric OAuth (#6928)
This enables Grafana to accept new users authenticated through OAuth, without this set to true only previously authenticated users may log in with OAuth - and thus defeating the purpose.
2016-12-12 16:27:51 +01:00
Torkel Ödegaard 9da44141f1 fix(git): removed external submodule, accedentially included in PR, fixes #6929 2016-12-12 15:43:04 +01:00
bergquist 0e03c43174 docs(changelog): adds note about merging #4550 2016-12-12 14:59:02 +01:00
bergquist f33aeb6591 Merge branch 'adrianlzt-bug/show_multiple_tags_with_influxdb' 2016-12-12 14:56:51 +01:00
bergquist 530e1b358a Merge branch 'master' into adrianlzt-bug/show_multiple_tags_with_influxdb 2016-12-12 14:55:56 +01:00
bergquist ce4e71364c test(influxdb): adds tests for supporting multiple tags 2016-12-12 14:55:39 +01:00
Torkel Ödegaard 5ec7dea81a Merge branch 'v4.0.x' 2016-12-12 14:39:53 +01:00
Torkel Ödegaard 8feaef20e0 fix(graph): fixed graph issue with axes mode set to series and picking Max value, fixes #6926 2016-12-12 14:37:40 +01:00
Torkel Ödegaard 40b359334b fix(typescript): fixed sourcemap issue, #6904 2016-12-12 14:24:36 +01:00
bergquist d599f45707 Merge branch 'bug/show_multiple_tags_with_influxdb' of https://github.com/adrianlzt/grafana into adrianlzt-bug/show_multiple_tags_with_influxdb 2016-12-12 13:30:27 +01:00
bergquist ba848cffb4 docs(cli): add page for the cli 2016-12-12 13:15:35 +01:00
Torkel Ödegaard ee6cd727ea Merge branch 'master' of github.com:grafana/grafana 2016-12-12 11:38:31 +01:00
Torkel Ödegaard 3bb9d47a45 minor change to #6904 2016-12-12 11:38:10 +01:00
bergquist 413a187119 docs(notification): add message property to notification 2016-12-12 11:28:16 +01:00
Carl Bergquist a5c41fe7cb Merge pull request #6921 from huydx/master
fix(alert): alert test should return error when it failed to dispatch
2016-12-12 11:02:14 +01:00
Torkel Ödegaard 815722c3cc Merge branch 'upgrade_typescript' of https://github.com/Nepomuceno/grafana into Nepomuceno-upgrade_typescript 2016-12-12 10:53:19 +01:00
bergquist 3cbc325f18 tech(github): asks ppl to remove placeholder text 2016-12-12 10:39:45 +01:00
huydx 015fa82cf5 fix(alert): alert test should return error when it failed to dispatch 2016-12-12 18:22:58 +09:00
Seuf 12a82bc0d4 Auth Proxy improvements - adds the option to use ldap groups for authorization in combination with an auth proxy - adds an option to limit where auth proxy requests come from by configure a list of ip's - fixes a security issue, session could be reused 2016-12-12 09:53:02 +01:00
Seuf ae27c17c68 Auth Proxy improvements
- adds the option to use ldap groups for authorization in combination with an auth proxy
- adds an option to limit where auth proxy requests come from by configure a list of ip's
- fixes a security issue, session could be reused
2016-12-12 09:43:17 +01:00
bergquist 06b4dacaa4 docs(changelog): add note about closing #5479 2016-12-12 08:37:29 +01:00
Carl Bergquist 73ec529688 Merge pull request #6897 from grafana/cli_db_commands
Enable the CLI to do change the grafana admin password in the database
2016-12-12 08:30:20 +01:00
Gabriel Nepomuceno cbf0d571f5 Removing task from other build sources 2016-12-10 09:00:58 +00:00
Gabriel Nepomuceno 2f46c56672 removing type validation because copy needs to be done first 2016-12-09 23:41:07 +00:00
Gabriel Nepomuceno 7ff07aa7b1 Revoming old files 2016-12-09 22:05:11 +00:00
Gabriel Nepomuceno a8ae0a5b79 fixing compilation of grunt 2016-12-09 21:53:00 +00:00
Gabriel Nepomuceno f3ebd2d849 upgrading bases and correcting identation missing tslint 2016-12-09 14:57:25 +00:00
Axel 2adbe3e13e Prettify duration value format (#6875)
* Prettify duration unit format

Format duration like "2 days, 19 hours, 48 minutes" and make Decimals useful e.g.
0 decimals: 2 days
2 decimals: 2 days, 19 hours, 48 minutes
3 decimals: 2 days, 19 hours, 48 minutes, 27 seconds

Previous code did some rounding that is now gone so numbers might be
different.

* Rewrite kbn.toDuration without moment.js

Because https://github.com/moment/moment/issues/3653

* Add tests for kbn.toDuration
2016-12-09 15:55:25 +01:00
bergquist 96e8ecfa7b feat(cli): adds command to reset admin password
closes #5479
2016-12-09 15:25:02 +01:00
bergquist cd85e1f651 Merge branch 'master' into cli_db_commands 2016-12-09 12:36:05 +01:00
bergquist ba7a990f86 tech: bump version in server cli 2016-12-09 12:30:36 +01:00
bergquist 02392e5189 docs(changelog): adds PR contributors name to release notes 2016-12-09 12:19:41 +01:00
bergquist 64f22e7037 docs(changelog): add note about closing #6356 2016-12-09 11:49:23 +01:00
bergquist cfb6033765 Merge branch 'elastic5_support' 2016-12-09 11:42:15 +01:00
bergquist 619c5c4f1b Merge branch 'master' into elastic5_support 2016-12-09 11:41:23 +01:00
bergquist ebec02ffae style(elastic): minor code style changes 2016-12-09 11:40:00 +01:00
bergquist 99c5f7d571 feat(elastic): remove support for ES 1.x 2016-12-09 11:34:19 +01:00
bergquist 873024b917 tech(elastic): use bool conditions for all es queries 2016-12-09 11:13:28 +01:00
Matt Toback e58b6989c2 Small refactor to make hover highlighting proper, added a title tag for the completed grafana step. (#6882) 2016-12-09 09:42:24 +01:00
Matt Toback f39f77692b Adjusted the active state to fix the faint line showing. Probably related to the font change going into 4.0 (#6886) 2016-12-09 09:41:54 +01:00
Carl Bergquist 20e4cb9a0b Merge pull request #6885 from utkarshcmu/patch-1
Fixed Create org API in docs
2016-12-09 08:53:33 +01:00
Utkarsh Bhatnagar db3ac79015 Fixed Create org API in docs 2016-12-08 12:08:04 -08:00
bergquist 6265afd8b6 docs: updat latest to 4.0.2 2016-12-08 15:17:13 +01:00
bergquist 7c3c8bc4c9 docs(changelog): add date for 4.0.2 release 2016-12-08 15:14:44 +01:00
bergquist 49827de278 docs: release 4.0.2 2016-12-08 15:05:37 +01:00
bergquist a90f650109 update package.json version to 4.0.2 2016-12-08 14:04:08 +01:00
bergquist f68350acbf docs(alerting): link fix to issue rather then commit 2016-12-08 14:01:59 +01:00
Torkel Ödegaard 22bf6420f1 Merge branch 'master' of github.com:grafana/grafana 2016-12-08 10:25:26 +01:00
Torkel Ödegaard 05772b30d7 feat(ux): completed work on getting started panel, #6466 2016-12-08 10:25:05 +01:00
Carl Bergquist 249b82d28b Merge pull request #6873 from dec5e/reference_typos
Fix some typos in Reference docs
2016-12-08 09:49:10 +01:00
Andrey Artemov c97e95227a Fix some typos in "Export & Import" reference 2016-12-08 10:34:53 +02:00
Andrey Artemov c94805d4c2 Fix typo in Singlestat page title 2016-12-08 10:34:31 +02:00
Torkel Ödegaard dee6b7d150 Merge branch 'master' into getting-started-panel 2016-12-08 08:51:40 +01:00
Matt Toback 6ae6a5d312 Polished some styles, updated issue 6466 2016-12-07 14:51:00 -05:00
bergquist 8ee85626f2 fix(api): return correct json info after updating datasource
closes #6869
2016-12-07 18:09:17 +01:00
bergquist c871212d6c docs(changelog): adds note about fixing avg() reducer bug 2016-12-07 15:58:03 +01:00
bergquist dd3060fdc3 feat(alerting): calculate avg of valid points 2016-12-07 15:55:37 +01:00
Torkel Ödegaard 924535c6d0 change(graph): changed null value graph option to default to null, closes #6868 2016-12-07 15:27:20 +01:00
bergquist 2bdd2a59cb test(alerting): improve naming for test scenario 2016-12-07 15:19:58 +01:00
Adrian Lopez 395b834a23 Better match for culumn inside tagsColumn 2016-12-07 12:23:57 +01:00
Torkel Ödegaard e082d78697 fix(elasticsearch): removed unused code 2016-12-07 12:07:56 +01:00
Torkel Ödegaard 7b68e6ea3b feat(elasticsearch): Added support for Missing option (bucket) for terms aggregation, refactoring PR #4244, thx @shanielh 2016-12-07 12:06:47 +01:00
bergquist dd432e671e docs(changelog): note about closing #6687 2016-12-07 11:28:18 +01:00
Carl Bergquist 0294446af9 Merge pull request #6856 from kylemcc/opsgenie-alerting
alerting: add support for OpsGenie
2016-12-07 11:23:54 +01:00
Carl Bergquist 2c7adccf12 Use cache for http.client in tsdb package. (#6833)
* datasource: move caching closer to datasource struct

* tsdb: use cached version of datasource http transport

closes #6825
2016-12-07 11:10:42 +01:00
vaibhavinbayarea 24172fca01 Added feature request "predict value" in moving averages pipeline agg (#5689)
issue-id: #5688
2016-12-07 10:47:46 +01:00
Matt Toback d28726be06 Moved ADD ROW to left to consolidate row actions along the same vertical area. (#6852) 2016-12-07 10:45:23 +01:00
Carl Bergquist b0679b610f Merge pull request #6857 from SaaldjorMike/typo
Fix docs typo
2016-12-06 23:36:55 +01:00
Mike Rostermund c5b29228ee Add missing char/typo 2016-12-06 22:26:43 +01:00
Kyle McCullough 4ef940482c alerting: add support for OpsGenie 2016-12-06 14:48:13 -06:00
utkarshcmu 6b26a0f91d Fixed hover position 2016-12-06 05:53:33 -08:00
utkarshcmu 13f0b32a8f Added sanitizer to help text 2016-12-06 05:24:03 -08:00
bergquist 6440d884db elastic: make sure old tests are for es2 2016-12-06 14:17:03 +01:00
utkarshcmu 034d84354e Fixed HelpText input box 2016-12-06 03:58:38 -08:00
utkarshcmu 42de27a2cb Added help text for users 2016-12-06 03:54:44 -08:00
Torkel Ödegaard 83afbd4262 Merge branch 'master' of github.com:grafana/grafana 2016-12-06 11:58:51 +01:00
Torkel Ödegaard e1b25b3999 changelog(): updated changelog with info on shared tooltip feature merged via PR #6274, closes #1578 2016-12-06 11:58:39 +01:00
Torkel Ödegaard fa393c282a feat(graph): refactoring shared tooltip PR #6274 2016-12-06 11:55:20 +01:00
bergquist 005a17d52f Merge branch 'master' of https://github.com/lpic10/grafana into lpic10-master 2016-12-06 10:15:36 +01:00
bergquist 464553a453 docs: explains how to use comment chars in passwords 2016-12-06 09:48:56 +01:00
Torkel Ödegaard 51165e76ba Merge branch 'shared_tooltip' of https://github.com/connection-reset/grafana into connection-reset-shared_tooltip 2016-12-06 09:32:22 +01:00
bergquist 8f1ed07275 metrics: 64bit fields should come first in structs
https://golang.org/pkg/sync/atomic/#pkg-note-BUG
2016-12-06 09:08:51 +01:00
bergquist 21353f4ba5 docs: adds note about closing #6779 2016-12-06 09:08:50 +01:00
Torkel Ödegaard 9bb440bc82 Merge branch 'master' of github.com:grafana/grafana 2016-12-06 09:02:51 +01:00
bergquist c17064fb44 fix(webdav): adds missing auth headers
closes #6779
2016-12-06 09:02:14 +01:00
Torkel Ödegaard 62269bb894 change(influxdb): always specify absolute time range in milliseconds, refactoring #6571 2016-12-06 08:56:01 +01:00
Torkel Ödegaard c6bb86d833 Merge branch 'master' of https://github.com/ryantxu/grafana into ryantxu-master 2016-12-06 08:38:29 +01:00
jifwin e73b82d54f Disable web-security for phantomjs rendering (#6469) 2016-12-06 08:37:36 +01:00
Ben RUBSON e51525dbde Only take bar series to calculate barWidth (#6756)
* Only take bar series to calculate barWidth

solves #6751

* Typo

* Typo

* Typo

* Typo

* Refactor

* Simplify
2016-12-06 08:36:23 +01:00
Mitsuhiro Tanda 5f6a3ecd56 (cloudwatch) don't expand variable when panel or row repeat is used (#6618)
* (cloudwatch) don't expand variable when panel or row repeat is used

* fix test
2016-12-06 08:16:41 +01:00
Mitsuhiro Tanda be26c017f6 (cloudwatch) percentile support (#6634)
* support extended statistics

* handle different response format for extended statistics
2016-12-06 08:12:30 +01:00
Torkel Ödegaard d56b9a720a feat(alerting): added confirm text when removing panel with alert rule 2016-12-06 08:11:21 +01:00
Adrian Muraru f91fcaf5cf Dashboard PNG export (#6644) 2016-12-06 08:05:13 +01:00
Torkel Ödegaard 167936f9b9 updated changelog 2016-12-06 07:43:39 +01:00
Torkel Ödegaard ee36234196 Merge branch 'v4.0.x' 2016-12-06 07:42:35 +01:00
Torkel Ödegaard f9fba0e935 fix(timerange): fixed time range zoom out shortcut, fixes #6837 2016-12-06 07:42:22 +01:00
Torkel Ödegaard 88e1d56bc2 fix(logging): added extra logging when default config file is not found (ie homepath is not correct), fixes #6829 2016-12-06 07:36:10 +01:00
Torkel Ödegaard 4c406dec2f cleanup(): removed unused (old) migrate stuff 2016-12-05 12:52:34 +01:00
Torkel Ödegaard aea3093d85 change(Timepicker): removed last 90 days to make room for Last 2 days, #6758 2016-12-05 11:52:00 +01:00
Jaime Soriano Pastor f2d5829944 Add 'Last 2 days' option to quick ranges (#6758) 2016-12-05 11:51:02 +01:00
Torkel Ödegaard 37c1a49dc9 updated changelog 2016-12-05 11:44:50 +01:00
Torkel Ödegaard 50022253bd Merge branch 'v4.0.x' 2016-12-05 11:44:02 +01:00
Torkel Ödegaard 890e5ce8ca feat(playlist): added support for kiosk mode & minor polish/fix, closes #6727 2016-12-05 11:43:51 +01:00
Torkel Ödegaard 80f7a6a896 updated changelog 2016-12-05 11:20:54 +01:00
Torkel Ödegaard 1f50c6d76f Merge branch 'v4.0.x' 2016-12-05 11:20:14 +01:00
Torkel Ödegaard cc46b81961 fix(rendering): fixed server side rendering issue when sertting enforce_domain to true, fixes #6769 2016-12-05 11:20:01 +01:00
Torkel Ödegaard c5ff1e4584 Merge branch 'v4.0.x' 2016-12-05 11:04:24 +01:00
Torkel Ödegaard a9c0f66cda fix(influxdb): Fix for Ad-Hoc Filters variable & changing dashboards, fixes #6821 2016-12-05 11:04:05 +01:00
Torkel Ödegaard e1d52902c1 Merge branch 'master' of github.com:grafana/grafana 2016-12-05 10:54:40 +01:00
Torkel Ödegaard d1feaaf4f3 Merge branch 'v4.0.x' 2016-12-05 10:54:01 +01:00
Torkel Ödegaard ab07667b69 fix(rendering): minor fix for server side rendering when using non default http addr setting and non default domain setting, #6813 2016-12-05 10:51:46 +01:00
silvestre-abruzzo 48a14cb4c6 Use correct domain in render.js (#6813)
Phantomjs is always rendering login page because domain is not considered. According to http://phantomjs.org/api/webpage/method/add-cookie.html a correct domain must be passed. Probably this change is now necessary due to https://github.com/grafana/grafana/issues/6660
2016-12-05 10:50:23 +01:00
bergquist b81e97c99c webhook: adds json content-type
closes #6822
2016-12-05 10:46:04 +01:00
bergquist 4a2a935c8f changelog: adds note about closing #6822 2016-12-05 10:45:22 +01:00
bergquist 87dbdb8300 webhook: adds json content-type
closes #6822
2016-12-05 10:44:31 +01:00
bergquist 1b68116922 changelog: add bugfix header 2016-12-05 09:42:31 +01:00
bergquist ea829988da changelog: add note about closing #6807 2016-12-05 09:39:20 +01:00
bergquist 0403f53b6f feat(webhook): adds alert rule message to webhook
close #6807
2016-12-05 09:34:35 +01:00
bergquist b88478a7e5 docs(readme): remove link to old CLA page 2016-12-03 03:46:51 +01:00
Carl Bergquist fbf2113904 Merge pull request #6795 from hvnsweeting/patch-1
Use space to separate multiple modes
2016-12-03 03:15:31 +01:00
bergquist 6c9cf87080 feat(alerting): calculate avg of valid points 2016-12-02 23:44:14 +01:00
bergquist c9b7f8603e tech(): replace spaces to handle input more graceful 2016-12-02 23:43:02 +01:00
bergquist 9dd6cf45ac feat(webhook): adds alert rule message to webhook
close #6807
2016-12-02 22:24:36 +01:00
bergquist 96cd13044b change to golang 1.7.4 2016-12-02 21:27:12 +01:00
bergquist f70d7ff3a3 fix(influxdb): align tsdb.influxdb with dataproxy
ref #6784
2016-12-02 21:10:29 +01:00
bergquist 368889828d update latest.json to 4.0.1 2016-12-02 21:10:11 +01:00
Torkel Ödegaard a5f7edbe40 Update CHANGELOG.md 2016-12-02 11:29:12 -05:00
Torkel Ödegaard bc0fdc1f8e Update CHANGELOG.md 2016-12-02 11:28:06 -05:00
bergquist 8134724b8a docs: update links to 4.0.1 2016-12-02 17:17:33 +01:00
bergquist f7dced3067 update to version 4.0.1 2016-12-02 16:33:00 +01:00
bergquist b4b7156f42 fix(webdav): adds missing auth headers
closes #6779
2016-12-02 16:20:15 +01:00
Carl Bergquist c206c04399 Merge pull request #6796 from hvnsweeting/patch-2
Update sample.ini
2016-12-02 16:10:39 +01:00
bergquist 04fa86fdde docs(changelog): note about closing #6759 2016-12-02 15:43:39 +01:00
stuart nelson bc69c8ef40 Add transport cache for reverse proxy (#6776)
* Add transport cache for reverse proxy
* Use updated at in cache
2016-12-02 15:39:57 +01:00
stuart nelson 9ed21c6a16 Add transport cache for reverse proxy (#6776)
* Add transport cache for reverse proxy
* Use updated at in cache
2016-12-02 15:39:28 +01:00
Viet Hung Nguyen c6e66ec15e Update sample.ini
Use space to separate multiple modes
2016-12-02 13:48:08 +07:00
Viet Hung Nguyen b00fc73242 Use space to separate multiple modes 2016-12-02 13:46:41 +07:00
fg2it d3e47e50c1 swap member declaration in StandardGauge to avoid problem with atomic on arm and x86-32 2016-12-01 21:26:54 +01:00
bergquist 158656f570 docs(changelog): add note about closing #6749 2016-12-01 21:23:55 +01:00
Carl Bergquist 6c03c64c79 Merge pull request #6768 from fg2it/fix6749
fix 6749 by swapping member in StandardGauge to avoid problem with atomic
2016-12-01 21:16:16 +01:00
Carl Bergquist ae171357fc Merge pull request #6783 from solugebefola/patch-1
typo?
2016-12-01 18:16:10 +01:00
Solar Olugebefola 1c234c6089 typo? 2016-12-01 11:54:07 -05:00
Axel Pirek e6c8e75d62 Make tooltip shareable like crosshair 2016-12-01 10:10:23 +01:00
fg2it 834e3f1c29 swap member declaration in StandardGauge to avoid problem with atomic on arm and x86-32 2016-11-30 21:57:18 +00:00
bergquist 09e49f0a17 docs: adds note about closing #5677 2016-11-30 00:10:29 +01:00
Carl Bergquist d11b17b8fe Merge pull request #5677 from bmundt/remove_columns
Added Hidden Column Style for Table Panel
2016-11-30 00:08:17 +01:00
bergquist 4543bfe5aa docs: add note about closing cloudwatch 2016-11-29 23:38:44 +01:00
Carl Bergquist 3c662ade8c Merge pull request #6698 from grafana/cloudwatch_configurable_keys
Cloudwatch configurable keys from config page.
2016-11-29 23:37:13 +01:00
bergquist 180940a378 fix(singlestat): align width for gauge settings 2016-11-29 23:25:45 +01:00
bergquist 0d41b1294a fix(singlestat): align width for gauge settings 2016-11-29 23:24:46 +01:00
bergquist 16f6339327 docs: add note about closing #6740 2016-11-29 23:20:48 +01:00
Carl Bergquist c2ed24b788 Merge pull request #6740 from dirk-leroux/new_aggregation_on_singlestat_panel
New aggregation on singlestat panel
2016-11-29 23:18:01 +01:00
bergquist aa14d9d893 docs: add note about closing #6411 2016-11-29 22:30:05 +01:00
bergquist 87824d2be7 Merge branch 'ichekrygin-victorops' 2016-11-29 22:28:39 +01:00
bergquist 83e90325c9 chore(victorops): remove unused code 2016-11-29 22:26:42 +01:00
bergquist a6ea2f4fdb Merge branch 'victorops' of https://github.com/ichekrygin/grafana into ichekrygin-victorops 2016-11-29 22:22:25 +01:00
bergquist bb6248a51a docs: remove link to CLA since we use CLA assistance 2016-11-29 21:51:51 +01:00
bergquist a3a07b7191 docs(changelog): add note about closing #6655 2016-11-29 21:43:31 +01:00
Carl Bergquist b47410af6a Merge pull request #6670 from tomkozlowski/feature/postgres-certs
generalized database connection cert support and added to postgres
2016-11-29 21:40:27 +01:00
bergquist 9f4d06e8e2 docs(changelog): add note about closing #5443 2016-11-29 21:24:45 +01:00
bergquist 253324fc32 style(sqlstore): remove comment 2016-11-29 21:24:45 +01:00
Carl Bergquist f6557f14b7 Merge pull request #6741 from dpavlos/fix_5443
[5443] Check if title is empty before save a new dashboard
2016-11-29 21:22:07 +01:00
bergquist 3b4e55216c docs(changelog): add note about fixing #6679 2016-11-29 21:14:37 +01:00
Carl Bergquist 5a0fc434f3 Merge pull request #6722 from dpavlos/fix_6679
[6679] Check if org exists before delete it
2016-11-29 21:12:02 +01:00
bergquist b00e9390d3 docs(v4): update docs for v4 2016-11-29 19:03:33 +01:00
bergquist a73bebbf3d tech(build): update publish script for 4.0.x release 2016-11-29 18:18:44 +01:00
bergquist aed695ebe0 tech(build): set master to 4.1.0 pre 2016-11-29 18:03:20 +01:00
bergquist 9143165580 tech(build): change windows build branch 2016-11-29 17:41:18 +01:00
Torkel Ödegaard 25a5fc465c fix(row): fixed dropping new panels onto panels, should split target panel 2016-11-29 11:38:02 -05:00
Torkel Ödegaard 7276b00fc7 fix(row): fixed dropping new panels onto panels, should split target panel 2016-11-29 11:37:06 -05:00
bergquist 567c2a1799 tech(build): update branch to package 2016-11-29 17:31:15 +01:00
bergquist 231492d443 tech(build): change windows build branch 2016-11-29 17:03:49 +01:00
bergquist 64f371a32d tech: upgrade package json to v4.0.0 2016-11-29 16:51:38 +01:00
bergquist 360516ed41 feat(metrics): change active alerts to guage 2016-11-29 16:46:25 +01:00
Torkel Ödegaard 7e831e10a2 updated version in grafana-server main.go 2016-11-29 10:41:31 -05:00
Pavlos Daoglou 7f7f080ad8 [5443] Check if title is empty before save a new dashboard 2016-11-29 12:25:20 +02:00
Dirk le Roux e0073d7e54 Fixed spelling error 2016-11-29 08:32:51 +02:00
Dirk le Roux 6412bd2f57 oAdded value type documentation to singlestat panel
Signed-off-by: Dirk le Roux <dirk.leroux@gmail.com>
2016-11-29 08:26:32 +02:00
Dirk le Roux 49dda7e5c1 first, delta, range passing unit tests
Signed-off-by: Dirk le Roux <dirk.leroux@gmail.com>
2016-11-29 08:26:31 +02:00
Ryan McKinley 0534d43a6e use ms when query less then 5 mins 2016-11-28 14:57:36 -08:00
Ryan McKinley 1ce0d81736 Merge remote-tracking branch 'grafana/master' 2016-11-28 13:38:18 -08:00
bergquist f7e8e9c9af docs(readme): bump golang version 2016-11-28 20:47:04 +01:00
Carl Bergquist 2bdb2f79ec fix(table): renderes empty date column as '-' (#6736)
* fix(table): renderes empty date column as '-'

closes #6728

* docs(changelog): add note about closing 6728
2016-11-28 14:42:43 -05:00
bergquist 2bdeb78885 style(docker): remove comments 2016-11-28 18:48:34 +01:00
bergquist 20df0aafc2 tech(docker): adds docker fig for elastic 5 2016-11-28 18:43:26 +01:00
bergquist ab2f109443 fix(config): error message for broken config file
closes #6731
2016-11-28 17:55:18 +01:00
Torkel Ödegaard a2d1cc1a46 fix(css): minor style fix 2016-11-28 09:39:07 -05:00
Pavlos Daoglou 0064331bbf [6679] Check if org exists before delete it 2016-11-28 00:09:01 +02:00
bergquist b2edcd8cfd tech(docs): use relref for links 2016-11-27 20:22:29 +01:00
bergquist ce64a0173c docs(datasource): add root datasource page 2016-11-27 20:05:35 +01:00
bergquist 3475ff2d81 docs(http): moves overview content to /http_api/
ref #6719
2016-11-27 17:09:56 +01:00
bergquist e3ad740b49 docs(changelog): add note about closing #6701 2016-11-27 16:56:31 +01:00
bergquist bdfb773a98 fix(alerting): fixes broken no_value evaluator
closes #6701
2016-11-27 16:53:29 +01:00
bergquist 583de8e0e0 docs(graph): remove unused headers 2016-11-27 16:10:16 +01:00
bergquist adc1bd3dea docs(graph): moves thresholds to display tab
closes #6703
2016-11-27 16:07:41 +01:00
bergquist 7bc1c3cc1c feat(cloudwatch): make it possible to reset keys
closes #6697
2016-11-24 16:37:33 +01:00
bergquist 3d21f06d5b tech(cloudwatch): store keys in secure json blob 2016-11-24 14:16:52 +01:00
bergquist 0ea6537916 tech(cloudwatch): refactoring 2016-11-24 14:00:05 +01:00
bergquist f7e12e5f93 test(cloudwatch): fixes failing tests 2016-11-24 14:00:05 +01:00
bergquist 1695aece0c feat(cloudwatch): add authtype dropdown to config page 2016-11-24 14:00:05 +01:00
bergquist 64784db870 feat(cloudwatch): adds access and secret key to edit config page 2016-11-24 14:00:05 +01:00
bergquist c3075a9bd1 docs(changelog): add note about solving sync problem for alerts 2016-11-24 13:59:52 +01:00
Torkel Ödegaard 2f354ed926 fix(getting started panel): some more work on this, #6466 2016-11-24 13:58:51 +01:00
Carl Bergquist 42f522fe97 Merge pull request #6692 from grafana/feature/tls-client-auth
Feature/tls client auth
2016-11-24 13:58:08 +01:00
Daniel Lee ad8f06f87f feat(changelog): adds TLS Client auth 2016-11-24 13:57:19 +01:00
bergquist 2bbe3d56bc docs(alerting): add info about alerting metrics 2016-11-24 13:45:24 +01:00
Daniel Lee 0618122bcd feat(httpsettings): add tls auth option
- Three text areas where the user can paste
in the CA Cert (optional), Client Cert
and Client Key.

- Tooltips for Auth checkboxes with brief
descriptions of what With Credentials and
With CA Cert are.

- Adds popover for TLS Auth header too.

- Aligns gf-form elements as labels and
checkboxes were not aligned before.

- Makes CA Cert optional as it is only
needed for self-signed certs.
2016-11-24 13:33:28 +01:00
Daniel Lee b6b53c0f4b fix(dataproxy): test with CA Cert 2016-11-24 13:22:25 +01:00
Daniel Lee 2893b25a05 feat(datasources): allow updating of tls certs
The tls files are stored as a json blob in the
SecureJsonData field. To update one file, the
json has to be fetched from the db first and
then updated with the cert file that has been
changed.

Also, a change to the dto with flags that are
used in the frontend to show if a file has
been uploaded. For example, if tlsClientKeySet
is set to true then means a file for the
client key is saved in the db. This is to
avoid sending any private data to the frontend.
2016-11-24 13:22:25 +01:00
Daniel Lee 387f8cc0c6 feat(dataproxy): TLS CA Cert for self-signed certs
For self-signed TLS Certificates, authentication
with InsecureSkipVerify set to false then this
error will occur:

x509: certificate signed by unknown authority

The solution is to allow the user to upload the
CA cert as well.
2016-11-24 13:22:25 +01:00
Daniel Lee c9b2c694f1 refactor(dataproxy): TLS Client Auth
Use a SecureJsonData field for TLS
Client Auth instead of 3 new db
fields. Same model as used for
PluginSettings.

Saves and encrypts the pem file
content rather than just saving
the paths to the cert and key.
This allows for uploading from
the Edit Datasource page in
Grafana.
2016-11-24 13:22:25 +01:00
Daniel Lee af07adb146 refactor(securejsondata): extract to class
Extract from pluginsettings class so that the
securejsondata type can be used in the other
classes. Encrypt and decrypt functions
extracted too.
2016-11-24 13:22:25 +01:00
Joe Lanford 56b7e2dfaf Added support for TLS client auth for datasource proxies (#5801) 2016-11-24 13:22:25 +01:00
Torkel Ödegaard 2233938ba7 Merge branch 'master' into getting-started-panel 2016-11-24 13:17:22 +01:00
Torkel Ödegaard ad7ae1b912 fix(graph): Fixed tooltip date header visible when x-mode was set to series, fixes #6364 2016-11-24 13:16:46 +01:00
bergquist 421c1eed82 fix(dashboard): fixes bug when saving dashboards 2016-11-24 11:22:13 +01:00
Torkel Ödegaard d9cf6a958b fix(unsaved changes): You now navigate to the intended page after saving in the unsaved changes dialog fixes #6675 2016-11-24 11:06:09 +01:00
Ben RUBSON 614bd7f1e8 Sort series by yaxis by default (#6683)
* Sort series by yxis by default

* Sort series by yxis by default

* Sort series by yxis by default
2016-11-24 10:24:49 +01:00
bergquist 6081c6cb61 docs(http_api): convert to new docs format 2016-11-24 10:16:24 +01:00
Carl Bergquist df2b2e3058 feat(alerting): validate alerts before saving dashboard (#6691)
ref #6576
2016-11-24 09:50:35 +01:00
Torkel Ödegaard 223f2320eb fix(streaming): clear data stream on subject completion 2016-11-23 17:12:30 +01:00
Torkel Ödegaard cf751c256b fix(graph): fixed order of graph tooltip when sort order was none, fixes #6648 2016-11-23 17:08:14 +01:00
Torkel Ödegaard ea5cb0d076 fix(server side rendering): Fixed address used when rendering panel via phantomjs and using non default http_addr config, fixes #6660 2016-11-23 15:35:43 +01:00
Torkel Ödegaard 773fb5d1ae fix(alerting): check if dashboard is saved before testing alert rule, fixes #6549 2016-11-23 14:55:10 +01:00
Pavlos Daoglou c365d52a80 [6486] Fix status code when adding an existing user to org (#6678) 2016-11-23 14:38:44 +01:00
Mitsuhiro Tanda d018d2a23f (prometheus) table support 2016-11-23 17:18:37 +09:00
bergquist 02dc51b1b6 docs(influxdb): typo 2016-11-23 07:15:34 +01:00
Carl Bergquist 78ce29b8f1 Merge pull request #6671 from peregrinogris/patch-2
Fix typo in Basic Concepts
2016-11-23 06:30:44 +01:00
Hernán Rodríguez Colmeiro e7e83a71a6 Fix typo in Basic Concepts 2016-11-22 21:47:59 -03:00
Tom Kozlowski c21ffcc6c9 generalized database connection cert support and added to postgres 2016-11-22 15:29:22 -08:00
bergquist 56156fcd7f feat(alerting): add median reducer to frontend 2016-11-22 14:35:26 +01:00
Torkel Ödegaard 2a33594c02 fix(templating): fixed duplicate button bug, fixes #6652 2016-11-22 14:20:24 +01:00
Torkel Ödegaard 34790e1fab fix(dashboard): minor fix to schema upgrade when schemaVersion is not correct, fixes #6650 2016-11-22 14:20:24 +01:00
bergquist 6882dcfb99 feat(alerting): add backend support for median reducer 2016-11-22 14:09:35 +01:00
Mitsuhiro Tanda 51f80affe3 (cloudwatch) update aws-sdk-go to v1.5.8 (#6658)
* (cloudwatch) upgrade aws-sdk-go v1.5.8

* (cloudwatch) remove non-required aws-sdk-go part

* add go-ini
2016-11-22 13:38:11 +01:00
bergquist 50811c80ea fix(alerting): fixes bug that prevents noData from triggering
closes #6631
2016-11-22 11:47:52 +01:00
bergquist d73620f304 docs(issue_template): add note about alerting 2016-11-22 08:31:45 +01:00
bergquist 41a1ec29e7 docs(readme): add link to whats new in grafana 4 2016-11-21 14:01:41 +01:00
Torkel Ödegaard a3d5b4bf25 Update CHANGELOG.md 2016-11-21 11:51:20 +01:00
Torkel Ödegaard 092f0c4b62 docs(): fixed windows link 2016-11-21 10:58:45 +01:00
Torkel Ödegaard a5c0295a0e docs(): updated doc download links 2016-11-21 10:18:43 +01:00
Torkel Ödegaard c643466d57 bumped version to v4-beta2 2016-11-21 09:51:59 +01:00
bergquist 2b6013ce81 fix(notifications): failed image upload should not stop notification
closes #6638
2016-11-21 09:47:59 +01:00
Torkel Ödegaard 6fa4b8c0b6 Merge branch 'master' of github.com:grafana/grafana 2016-11-21 09:42:46 +01:00
Torkel Ödegaard 8d80812601 Merge branch 'issue-6566' of https://github.com/benrubson/grafana into benrubson-issue-6566 2016-11-21 09:39:35 +01:00
Torkel Ödegaard c1a15648c7 Merge branch 'master' of github.com:grafana/grafana into getting-started-panel 2016-11-21 09:00:40 +01:00
benrubson e71114f4fb Come back to #6287 for graph_tooltip.js
as it is an only one loop solution
2016-11-19 09:12:10 +01:00
benrubson 9797845460 Typo 2016-11-18 19:14:12 +01:00
benrubson 0034b6ede7 Highlight correct point when series has null values 2016-11-18 18:49:20 +01:00
benrubson 1eb0ea3450 Correctly stack series with null and missing values 2016-11-18 18:14:40 +01:00
benrubson becb6303e5 Revert #6287 for graph_tooltip.js 2016-11-18 17:50:54 +01:00
Torkel Ödegaard 1dc581bdfa ux(gettingstarted): progress on getting started panel, #6466 2016-11-18 17:42:14 +01:00
bergquist 5dea0fda51 fix(settings): remove nil pointer exception 2016-11-18 16:43:14 +01:00
benrubson 850d39fc50 Revert #6287 for jquery.flot.stack.js 2016-11-18 16:32:00 +01:00
Torkel Ödegaard fd512457d8 Merge remote-tracking branch 'origin/master' into getting-started-panel-css2 2016-11-18 16:31:54 +01:00
Torkel Ödegaard 0c9001c7ae ux(gettingstarted): progress on getting started panel, #6466 2016-11-18 16:31:19 +01:00
bergquist 1b0005a9e5 feat(mqe): add support for app and host alias 2016-11-18 11:40:38 +01:00
bergquist 61bb9cbc13 test(alerting): fixes broken unit test 2016-11-18 10:53:27 +01:00
Ryan McKinley 7958615097 Use ms rather than second precision 2016-11-17 09:21:25 -08:00
bergquist a3b0fbcaba fix(influxdb): fixes broken tag rendering for influxdb alerting
closes #6626
ref #6523
2016-11-17 15:50:49 +01:00
Torkel Ödegaard 7ce33c31ec Merge branch 'master' of github.com:grafana/grafana 2016-11-17 15:50:08 +01:00
Torkel Ödegaard b9cfb19ab8 changelog(): added entry for PR #6579 2016-11-17 15:50:00 +01:00
Torkel Ödegaard e34bf9a1fa Merge branch 'utkarshcmu-or_alerting' 2016-11-17 15:49:52 +01:00
Torkel Ödegaard 62e8a039a1 refactor(alerting): refactoring PR for OR conditions, #6579 2016-11-17 15:48:15 +01:00
bergquist 3ea66ebe3f fix(alerting): remove possible divide by zero panic
ref #6599
2016-11-17 15:20:14 +01:00
Torkel Ödegaard 457ae74343 Merge branch 'or_alerting' of https://github.com/utkarshcmu/grafana into utkarshcmu-or_alerting 2016-11-17 14:43:24 +01:00
Torkel Ödegaard 98d1748e43 fix(templating): work on fixing exporting issues when using templating variables, like data source variables, and panel repeats, requires more work #6189 2016-11-17 12:32:11 +01:00
Torkel Ödegaard 9d5928ddd6 feat(templating): don't persist template variable options when variable has refresh enabled, closes #6586 2016-11-17 11:38:06 +01:00
Torkel Ödegaard eafe0d6bfa fix(templating): fixed issue when adding template variable, fixes #6622 2016-11-17 11:28:33 +01:00
utkarshcmu aae33b36dd Added tests for firingEvaluation string 2016-11-17 01:41:23 -08:00
Torkel Ödegaard 196fdbfd31 fix(dashboard): fixed issue when dragging new panel to drop zone 2016-11-17 10:31:37 +01:00
utkarshcmu fc82dac868 Added braces to single condition firingEvaluation string 2016-11-17 01:30:50 -08:00
utkarshcmu 690868c837 Added firingEvalution to Rule test 2016-11-17 01:28:17 -08:00
Torkel Ödegaard a45fdfdd3f fix(dashboard): minor fixes, and restored in-activity timer to 1min 2016-11-17 10:11:59 +01:00
bergquist 5c153f0383 Merge branch 'master' into alerting_mqe 2016-11-17 09:57:56 +01:00
bergquist 0a0f558c48 style(mqe): improve code 2016-11-17 08:52:27 +01:00
bergquist 23387bd39b feat(mqe): simplify timestamp parsing 2016-11-17 08:42:09 +01:00
ichekrygin f6b70c7d82 Fix formatting 2016-11-16 17:30:42 -08:00
ichekrygin acc729131a Add VictorOps Test. 2016-11-16 16:14:02 -08:00
ichekrygin 8f0d51171d Resolve rebase w/ upstream conflicts.
Remove: `Alert on Exec Error` (no longer needed)
Add: `ruleUrl` to VictorOps message body.
2016-11-16 16:13:33 -08:00
ichekrygin bbca9861fb Fix return on nil and cleanup debug messages 2016-11-16 14:02:34 -08:00
ichekrygin b46cbc5fbe Add option to alert on ExecutionError 2016-11-16 14:02:34 -08:00
ichekrygin 4ca304b756 Change VictorOps fa from fa-exclamation-triangle -> fa-pagelines 2016-11-16 14:02:34 -08:00
ichekrygin 1e558e3936 Fix user-facing text 2016-11-16 14:02:34 -08:00
ichekrygin b0620a9d4b Add VictorOps alert notification capability 2016-11-16 14:02:34 -08:00
Torkel Ödegaard 42167a65c6 testdata(): added test graph for null stacking scenario, #6566 2016-11-16 19:00:23 +01:00
Torkel Ödegaard f52c6aafe7 docs(): minor update to centos docs about font packages needed for phantomjs 2016-11-16 18:49:14 +01:00
Torkel Ödegaard 4581bb4a7a fix(singletat): Support repeated template variables in prefix/postfix, fixes #6595 2016-11-16 18:44:39 +01:00
Torkel Ödegaard e6776f71d9 cleanup(sass): removed tight-form styles 2016-11-16 18:26:39 +01:00
Torkel Ödegaard d7e8753c59 cleanup(): removed unused gfbox style 2016-11-16 18:08:45 +01:00
Torkel Ödegaard 079b0ef44a change(alerting): delete alert rule from panel model when duplicating panel 2016-11-16 18:03:00 +01:00
Torkel Ödegaard a50178eab1 ux(tweak): minor polish to date picker styling 2016-11-16 17:56:42 +01:00
Torkel Ödegaard f64385cfc9 ux(tweak): minor polish to date picker styling 2016-11-16 17:53:56 +01:00
Torkel Ödegaard 465451c289 cleanup(): removed unused uio-angular tab component 2016-11-16 17:47:37 +01:00
Torkel Ödegaard 18e965c775 fix(error handling): fixed server side error handling page 2016-11-16 17:41:44 +01:00
bergquist 9572f086ae feat(mqe): add timerange to query 2016-11-16 17:09:34 +01:00
Torkel Ödegaard e3564d12a1 fix(404): fixed 404 page 2016-11-16 17:09:00 +01:00
Dan Cech c980efd470 fix up sass lint warnings (#6603) 2016-11-16 17:08:38 +01:00
Dan Cech eacb7c8aba Merge pull request #6584 from tomkozlowski/bugfix/oauth-login-bearer-token
explicitly set oauth2 token to Bearer Type
2016-11-16 10:35:32 -05:00
Torkel Ödegaard e7a30ac464 fix(units): fixed issue with data rate bit units, fixes #6602 2016-11-16 16:29:10 +01:00
Tom Kozlowski a353c8d1bb added explicitly setting token as Bearer Type 2016-11-16 09:55:14 -05:00
bergquist fa8213d8d5 feat(mqe): send http requests 2016-11-16 15:28:31 +01:00
Torkel Ödegaard 4fa995eafa ux(view/tv mode): treat tab change as user activity, resets in activity timer 2016-11-16 14:44:55 +01:00
bergquist f1897b7e96 feat(mqe): add response parser 2016-11-16 14:42:43 +01:00
Torkel Ödegaard 9c7f8268dc fix(build): fixed failing unit test 2016-11-16 14:39:17 +01:00
Torkel Ödegaard 171335bfef fix(ux): fixed dropzone display issues, fixes #6598 2016-11-16 14:28:52 +01:00
bergquist c6ad0cc5ec test(mqe): basic test for response parser 2016-11-16 13:00:25 +01:00
bergquist 113020aabe feat(mqe): support basic aliases 2016-11-16 11:04:15 +01:00
bergquist e12a4f6b46 docs(notifications): fixes typo 2016-11-16 10:55:47 +01:00
Mitsuhiro Tanda 9740752c1e (cloudwatch) long retention support (#6547) 2016-11-16 10:50:33 +01:00
Matt Toback 10cf32f835 Removed green border from OK alerts. Makes dashboards too busy, competes for attention where action is unnceessary (#6555) 2016-11-16 10:50:01 +01:00
bergquist 430104aaac feat(mqe): add support for wildcard series 2016-11-16 10:03:22 +01:00
bergquist fa92dfb7b2 feat(mqe): add support for apps in where clause 2016-11-16 09:54:45 +01:00
Torkel Ödegaard f91a833e6a fix(panel): set initial transparency state at first link 2016-11-16 09:44:16 +01:00
bergquist ab7263579f Merge branch 'master' into alerting_mqe 2016-11-16 09:28:26 +01:00
bergquist cbe8af967d docs(api): add docs about creating new org
close #6588
2016-11-16 09:06:32 +01:00
utkarshcmu f46c4c88ca Added OR condition in docs 2016-11-15 22:43:09 -08:00
Ben RUBSON a4de6da9a0 Correct series highlight (#6578)
solves issue #6573
2016-11-15 18:59:17 +01:00
bergquist 4739608ffb tests(mqe): add query builder 2016-11-15 18:37:34 +01:00
utkarshcmu 8d0bcd23f8 Added tests for checking nested operators 2016-11-15 08:07:05 -08:00
utkarshcmu dfb1b1918c Implemented operator based firiing in backend 2016-11-15 06:35:25 -08:00
bergquist b9d709ab27 feat(alerting): improve error logging for extracting alerts
ref #6576
2016-11-15 11:47:46 +01:00
Torkel Ödegaard 05c5a09f63 docs(): updated changelog 2016-11-15 08:46:30 +01:00
utkarshcmu b2db2b26dd Added OR to alert_tab 2016-11-14 18:36:22 -08:00
Ryan McKinley 04356f31d2 missing space 2016-11-14 14:56:11 -08:00
Ryan McKinley 3588b9732f round the seconds 2016-11-14 13:40:33 -08:00
Carl Bergquist 6e94ccea07 Merge pull request #6569 from nicr9/patch-1
docs(datasources/influxdb): Fix broken image link
2016-11-14 17:25:52 +01:00
Nic Roland 0cdf05ae5d docs(datasources/influxdb): Fix broken image link
Twas missing a leading `/`.
2016-11-14 16:04:33 +00:00
bergquist 1bdda76ba9 tests(mqe): parse mqe query model 2016-11-14 15:03:49 +01:00
bergquist c973241435 feat(mqe): add token request 2016-11-14 14:00:35 +01:00
Torkel Ödegaard 62ff85e774 docs(): fixed ldap link 2016-11-14 11:34:58 +01:00
bergquist 4fdfee739a fix(influxdb): add support for regex measurments
closes #6560
2016-11-14 08:48:19 +01:00
bergquist 118e2a6364 WIP: more boilerplate 2016-11-13 13:51:54 +01:00
bergquist a87fd11f26 feat(stats): add alerts to global admin stats 2016-11-11 14:04:38 +01:00
bergquist ad97db937c feat(stats_usage): add stats about alerts 2016-11-11 13:57:11 +01:00
Carl Bergquist 08429d9a08 Merge pull request #6546 from huydx/master
Fix typo (password strenght -> password strength)
2016-11-11 10:31:04 +01:00
huydx f5a804a558 Fix typo (password strenght -> password strength) 2016-11-11 18:02:58 +09:00
Andrew McDonald b98f817d68 Fix for cloudwatch datasource requesting too many datapoints (#6544)
The range checking in _getPeriod appeared to be using a different variable than the period that had just been calculated for its bounds checks.
2016-11-11 08:54:44 +01:00
bergquist e04d27c0b0 fix(influxdb): return internal influxdb errors
ref #6523
2016-11-11 08:47:53 +01:00
Carl Bergquist b824fa1916 Merge pull request #6538 from grafana/alertlist_only_from_dashboard
feat(alertlist): make it possible to filter on alerts from current da…
2016-11-10 16:19:12 +01:00
bergquist a51de8e987 tech(conf): remove dragoo :( 2016-11-10 16:15:55 +01:00
bergquist abb8f33d77 feat(alertlist): make it possible to filter on alerts from current dashboard 2016-11-10 16:07:13 +01:00
bergquist f924b241ae tech(influxdb): refactor query builder
trying to reduce the amounts of moving parts for influxdb
2016-11-10 14:38:07 +01:00
Torkel Ödegaard 18a37a9eef ux(getting started): struggleing witch cleaning up the css, #6466 2016-11-10 14:21:37 +01:00
bergquist a948dfe514 fix(influxdb): fixes broken raw query usage 2016-11-10 14:18:10 +01:00
Torkel Ödegaard 575828f1e9 Merge branch 'getting-started-panel' of github.com:grafana/grafana into getting-started-panel 2016-11-10 13:25:18 +01:00
Torkel Ödegaard de74bf0c33 Merge branch 'master' into getting-started-panel 2016-11-10 13:24:10 +01:00
Torkel Ödegaard 9f7d0862e8 docs(): minor docs fix 2016-11-10 13:08:32 +01:00
Carl Bergquist a825e63a19 Merge pull request #6515 from grafana/influxdb_alias_seriename
[Influxdb] Backend support for seriename alias
2016-11-10 12:56:53 +01:00
bergquist ecba23e883 Merge branch 'master' into influxdb_alias_seriename 2016-11-10 12:22:17 +01:00
Torkel Ödegaard 6767bdd76d fix(graph): fixed issue log base scale on right y axis, option was not applied at all, also issue with log scale and max value calculation fixed, fixes #6534 2016-11-10 12:04:55 +01:00
Torkel Ödegaard 316d754a21 fix(ui/browser): fixed border not showing in safari, fixes #6530 2016-11-10 11:31:27 +01:00
bergquist 70b9ba2573 tech(build): switch to golang 1.7.3
tls/cipher fixes
https://github.com/golang/go/issues?q=milestone%3AGo1.7.3
2016-11-10 11:30:18 +01:00
bergquist 4f3c8c6663 fix(influxdb): add default operator
ref #6523
2016-11-10 11:21:38 +01:00
Torkel Ödegaard 71eb0f3278 fix(graph): fixed issue with bar width when used in series override, fixes #6528 2016-11-10 10:50:48 +01:00
Ben RUBSON 6495ba155a Correct timeStep in case of missing values (#6526)
* Correct timeStep in case of missing values

* Comment
2016-11-10 10:20:27 +01:00
Ben RUBSON 2443326386 Add some comments about some previous modifications (#6533) 2016-11-10 10:19:42 +01:00
bergquist ef08a243c5 fix(influxdb): fixes possible nil pointer
closes #6531
2016-11-10 08:23:58 +01:00
bergquist bd3259d07a feat(mqe): init commit 2016-11-09 15:55:47 +01:00
bergquist 6a8138904e fix(shortcuts): CTRL on windows or linux 2016-11-09 14:48:51 +01:00
bergquist 82e1d3f6aa feat(influxdb): disable debug logging in appmode 2016-11-09 14:48:05 +01:00
Torkel Ödegaard fff26086d5 docs(): updated install links with beta links as well 2016-11-09 13:53:20 +01:00
Torkel Ödegaard 1d4cace849 fix(testdata): fixed query in default grafana data source 2016-11-09 12:52:56 +01:00
bergquist f0a0e647a0 feat(influxdb): backend support for alias by segment
ref #6510
2016-11-09 12:45:59 +01:00
Torkel Ödegaard d1bedfc1d1 updated version to beta1 2016-11-09 12:10:03 +01:00
Torkel Ödegaard bfed566ea8 changelog(): updated with entry for #2912 and #6287, closes #2912 2016-11-09 11:37:36 +01:00
Torkel Ödegaard a9c6bdc197 panel(graph): stacking can now handle null values, #6287 2016-11-09 11:34:34 +01:00
Torkel Ödegaard 485980eebf Merge branch 'issue-2912' of https://github.com/benrubson/grafana into benrubson-issue-2912 2016-11-09 11:17:04 +01:00
Torkel Ödegaard 33664b0a7e docs(): minor docs change 2016-11-09 11:14:04 +01:00
Torkel Ödegaard 2164bbd447 ux(tv mode): added 1 second delay animation 2016-11-09 10:59:06 +01:00
Torkel Ödegaard fb57bf77da ux(getting started): progress on getting started panel and persited help flag states, #6466 2016-11-09 10:41:39 +01:00
bergquist 97271514fb feat(influxdb): cleanup influxdb query editor options 2016-11-09 10:30:03 +01:00
bergquist c897d39d5e feat(influxdb): add support for serie alias replacement
ref #6510
2016-11-09 10:22:11 +01:00
bergquist 24a3a100ed feat(influxdb): add alias to query 2016-11-09 10:05:12 +01:00
Leandro Piccilli 717a96ab8d Fix raw document query on ES 5.x 2016-11-08 22:18:59 +01:00
Leandro Piccilli a5ee705b89 Merge branch 'master' of https://github.com/grafana/grafana 2016-11-08 22:18:30 +01:00
Torkel Ödegaard 652eb057cf change(graph): change default line width from 2 to 1 2016-11-08 20:57:17 +01:00
Torkel Ödegaard 20d789cb94 docs(): fix title 2016-11-08 20:57:16 +01:00
Torkel Ödegaard d717e0cf13 docs(): minor spelling fix 2016-11-08 20:57:16 +01:00
bergquist 029e52f5a1 docs(pagerduty): update docs regarding pagerduty 2016-11-08 20:41:02 +01:00
bergquist eb34855adb feat(pagerduty): add support for auto resolve
closes #6513
2016-11-08 20:38:38 +01:00
Carl Bergquist 0d729ae392 Merge pull request #6512 from utkarshcmu/pagerduty_bug
Send test notification fixed
2016-11-08 20:30:41 +01:00
utkarshcmu 610ea090dc Send test notification fixed 2016-11-08 11:22:03 -08:00
bergquist 5542b0ab9e tech(pagerduty): sync calls should be using context 2016-11-08 20:05:43 +01:00
bergquist b5c96d2685 style(influxdb): fixes broken layout 2016-11-08 20:02:55 +01:00
bergquist 98a7bf181a tech(influxdb): close body reader 2016-11-08 19:19:49 +01:00
Torkel Ödegaard 5f2cb8e193 Merge branch 'master' into getting-started-panel 2016-11-08 16:23:01 +01:00
Torkel Ödegaard d92bb677df docs(): fix title 2016-11-08 16:15:34 +01:00
Torkel Ödegaard 4c891e3758 docs(): minor spelling fix 2016-11-08 15:06:07 +01:00
Torkel Ödegaard fd09f17cd3 docs(): alerting docs, #6490 2016-11-08 14:53:28 +01:00
bergquist 8713dd8221 tech(docker): pin elastic to 2.4.1 for dev 2016-11-08 14:31:59 +01:00
Utkarsh Bhatnagar e642dce027 Fixed import dashboard bug (#6480) 2016-11-08 14:03:04 +01:00
Matt Toback b8ad86fabd Alert pulse tweak (#6508)
* Added faint tint of red to alerting panels, started working on animation. more to come

* Finally happy with pulse animation. Ready to merge
2016-11-08 14:02:45 +01:00
bergquist 309391cb79 docs(alerting): not only graphite 2016-11-08 11:24:39 +01:00
bergquist 5445e47fd5 docs(alerting): typo 2016-11-08 11:24:19 +01:00
bergquist 1f2b8044b2 docs(notifications): format as table 2016-11-08 11:14:35 +01:00
Torkel Ödegaard b658f38036 docs(): added what new in v4 article and initial draf of alerting docs, #6490 2016-11-08 11:09:10 +01:00
bergquist 8ca18b511f docs(alerting): add docs for alert notifications 2016-11-08 10:58:59 +01:00
Torkel Ödegaard dea5fd385f ux(alerting): minor wording change on alert tab 2016-11-08 09:34:52 +01:00
Torkel Ödegaard 49af12f69f Merge branch 'master' of github.com:grafana/grafana 2016-11-08 09:31:19 +01:00
Carl Bergquist a7be3b91fd Merge pull request #6499 from utkarshcmu/last
Added last function for alerting conditions
2016-11-08 09:10:35 +01:00
utkarshcmu 841fb74b39 Reversed loop for last function 2016-11-07 23:16:57 -08:00
utkarshcmu 74632b5e98 Added last function for alerting conditions 2016-11-07 23:16:57 -08:00
bergquist 5bbdd99d35 tech(notifications): remove async webhook 2016-11-08 08:06:42 +01:00
bergquist 66f257e382 tech(pagerduty): make api call sync 2016-11-08 07:51:19 +01:00
bergquist 7bc80d0374 tech(pagerduty): declare url as constant 2016-11-08 07:50:58 +01:00
bergquist 6dd076efc1 Merge branch 'alerting_pagerduty' of https://github.com/utkarshcmu/grafana into utkarshcmu-alerting_pagerduty 2016-11-08 07:48:20 +01:00
Carl Bergquist bdcff9d15c Merge pull request #6501 from utkarshcmu/invalid_state
Removed invalid alerting state from the UI
2016-11-08 07:00:55 +01:00
utkarshcmu a7e67f3bdd Removed invalid alerting state 2016-11-07 17:43:13 -08:00
Carl Bergquist 9479364600 Merge pull request #6481 from msound/update-github-auth-documentation
Update github auth docs
2016-11-07 20:42:05 +01:00
Carl Bergquist f7f64fbe95 Merge pull request #6495 from rogerswingle/add-govcloud
Add AWS Govcloud Region
2016-11-07 20:36:38 +01:00
Torkel Ödegaard 901e670db4 docs(): minor tweak 2016-11-07 19:58:30 +01:00
Roger Swingle 69ff13adce add govcloud 2016-11-07 13:56:29 -05:00
utkarshcmu 5549d8658a Fixed description message 2016-11-07 07:27:31 -08:00
utkarshcmu f8d1eb11a9 Removed ExecError state 2016-11-07 07:12:43 -08:00
utkarshcmu 4b53ea0a56 Fixed pagerduty tests 2016-11-07 07:08:52 -08:00
utkarshcmu 638d3bcb42 Removed NoData option 2016-11-07 07:08:51 -08:00
utkarshcmu de0fa3d479 Added pagerduty tests 2016-11-07 07:08:51 -08:00
utkarshcmu df8cd764b2 Added trigger options with Pagerduty 2016-11-07 07:08:51 -08:00
utkarshcmu 139bbecc10 Added Pagerduty basic alerting 2016-11-07 07:08:51 -08:00
Torkel Ödegaard a100836bb4 docs(): Added pages for alerting docs, added keyboard shortcuts doc article, #6490 2016-11-07 15:18:27 +01:00
Carl Bergquist 3607316920 Merge pull request #6489 from bergquist/reduce_notification_states
Reduce alerting states
2016-11-07 15:18:07 +01:00
bergquist b2d8e83c7d fix(alert_tab): better execution state description 2016-11-07 14:54:42 +01:00
bergquist 56340bfdfb fix(influxdb): fixes bug when using regexps/numbers in tags
closes #6488
2016-11-07 14:26:20 +01:00
bergquist d7f11c304c tech(alerting): set prev state when creating eval context 2016-11-07 13:01:54 +01:00
bergquist 489f087fbd feat(alerting): reduce states. Make exeuction result configurable.
ref #6444
2016-11-07 12:42:39 +01:00
bergquist 16e7bfc622 docs(changelog): add note about closing #6292 2016-11-07 08:10:36 +01:00
Carl Bergquist d670f1b959 Merge pull request #6479 from utkarshcmu/playlist_bug
Removed playlist item when dashboard is deleted
2016-11-07 08:00:57 +01:00
bergquist f0b591b89b feat(alerting): extract logic state updates and notifications
ref #6444
2016-11-07 07:57:34 +01:00
Torkel Ödegaard b88791135f sasslint fix 2016-11-06 18:05:01 +01:00
Torkel Ödegaard 907fb9c1be ux(dashboard): fix for dropzone width when resizing another panel 2016-11-06 17:41:17 +01:00
Mani Soundararajan db77dfea7a Update github auth docs
In Github's "allowed organizations" scenario, it makes sense to have
`allow_sign_up` to be `true` as most administrators will expect their
org's github users to be able to sign in without further steps like
creating a local user first.
2016-11-06 20:48:14 +05:30
Torkel Ödegaard 2d19af601a fix(alerting): various alerting fixes 2016-11-06 15:40:02 +01:00
Torkel Ödegaard 05c124bb1e docs(changelog): correct changelog 2016-11-06 11:07:52 +01:00
utkarshcmu c737704eeb Removed playlist item when dashboard is deleted 2016-11-06 01:49:43 -08:00
Torkel Ödegaard 8db40b25db ux(dashboard): final tweaks to view mode and kiosk mode, better animation for view mode, and kiosk mode can be entered via kiosk url parameter, #6476 2016-11-06 10:15:36 +01:00
Torkel Ödegaard bd996a4810 ux(viewmode): refining view mode #6476 2016-11-05 21:05:12 +01:00
Torkel Ödegaard 3df4375e39 docs(changelog): updated changelog with new ux improvements 2016-11-05 14:28:40 +01:00
Torkel Ödegaard d38de2cc8b ux(view/kiosk mode): added view mode and kiosk mode, #6476 2016-11-05 14:23:37 +01:00
Torkel Ödegaard 0d82fb71ad ux(keybindings): updated look of dashboard keybindings help modal, #6465 2016-11-05 12:19:52 +01:00
Torkel Ödegaard aaa174a091 ux(dashboard): minor fix so hide controls hide panel resize handles 2016-11-05 08:32:16 +01:00
Torkel Ödegaard 2b81b204aa docs(): fixing image urls in docs 2016-11-04 20:29:17 +01:00
Torkel Ödegaard 3cc4a194a9 ux(keybindings): polish help modal with keybindings, #6465 2016-11-04 17:19:03 +01:00
Torkel Ödegaard 4ab095b051 fix(ux): fixed issue with row menu gliding over header, or in realting extending outside it's bound and not getttin the menu background 2016-11-04 15:35:32 +01:00
Carl Bergquist 741faa2299 Merge pull request #6468 from utkarshcmu/changelog_entry
Added OpenTSDB nested templating fix entry to CHANGELOG
2016-11-04 15:01:46 +01:00
utkarshcmu a78db041ea Added OpenTSDB nested templating fix to CHANGELOG 2016-11-04 06:57:26 -07:00
Carl Bergquist 8bc0462877 Merge pull request #6467 from utkarshcmu/slack_mention
Added Slack mention feature
2016-11-04 14:14:32 +01:00
utkarshcmu dc3a62da83 Added slack tests , fixed webhook tests 2016-11-04 06:05:44 -07:00
utkarshcmu 2f60929d1e Added slack mention functionality 2016-11-04 06:05:44 -07:00
Torkel Ödegaard 6fa89456d6 build(): updated glob node package 2016-11-04 13:58:06 +01:00
Torkel Ödegaard 2da2d5df56 Merge branch 'master' of github.com:grafana/grafana 2016-11-04 12:15:08 +01:00
Torkel Ödegaard c99f4cb9c5 ux(dashboard): minor cleanup 2016-11-04 12:14:43 +01:00
Torkel Ödegaard 2fa7100c3b ux(dashboard): lots of tweaks and polish to row menu, added remove X to add panel and row option views, #6442 2016-11-04 11:43:49 +01:00
Ryan Bak 7165c866c2 Add blank default options for constant templates (#6460)
Restores ability to change constant templates without going into
templating menu
2016-11-04 11:41:39 +01:00
TerraTech 05d24020b1 settings.html: Fixup filename for custom.ini (#6463) 2016-11-04 11:41:12 +01:00
Carl Bergquist 691956bd33 Merge pull request #6363 from Noah-Heil/patch-1
Added two hints to help newer users
2016-11-04 11:12:20 +01:00
bergquist f0d9d133c6 tech(slack): format code using gofmt 2016-11-04 07:55:15 +01:00
Matt 616e9ce5f6 Changed panel-handle cursor to proper 2 directional 2016-11-03 22:56:39 -04:00
Matt cf248a503b Added panel name to individual add panel item to show full name when long 2016-11-03 17:49:54 -04:00
Matt 80f8c0712c Merge branch 'v4ux' of https://github.com/grafana/grafana into v4ux 2016-11-03 17:41:54 -04:00
Matt 308cc9d9f6 Thinned out fonts for row headers, sits much nicer in the dashboard 2016-11-03 17:41:35 -04:00
Torkel Ödegaard abf1f6a163 ux(dashboard): added back hide controls toggle and shortcut, #6442 2016-11-03 22:39:59 +01:00
Torkel Ödegaard d0513d3a54 ux(dashboard): changed name of delete row to remove row, #6442 2016-11-03 22:32:04 +01:00
Torkel Ödegaard 0da60a8bb2 ux(dashboard): minor tweak to row menu animation, it hides in a better way now after click #6442 2016-11-03 22:29:53 +01:00
Torkel Ödegaard 98be1734fa ux(dashboard): refining new row slide out menu, #6442 2016-11-03 22:14:29 +01:00
Torkel Ödegaard d917f69255 Merge branch 'v4ux' of github.com:grafana/grafana into v4ux 2016-11-03 20:32:45 +01:00
Torkel Ödegaard 82592f0c13 ux(help): began work on new help modal 2016-11-03 20:32:36 +01:00
Matt 4e15e61b39 Added vertical ellipses, played with box shadows and borders and such. Ellipses need to fade to Opacity 0 when menu is open. 2016-11-03 15:12:39 -04:00
bergquist 2d7bb4a9f3 fix(tsdb): broken build :( 2016-11-03 19:20:53 +01:00
bergquist b578d06e4a chore(notification): improve log message 2016-11-03 18:04:50 +01:00
bergquist 1afe0e90f9 fix(tsdb): fixes broken legend buidler for prometheus
closes #6456
2016-11-03 18:04:09 +01:00
bergquist 0059beb85d chore(tsdb): remove commented code 2016-11-03 17:34:57 +01:00
bergquist 4af420f759 tech(alerting): refactor how evalhandler uses conditions 2016-11-03 17:31:36 +01:00
Carl Bergquist 262b806193 Merge pull request #6455 from utkarshcmu/opentsdb_template_fix
Fixed multi-value nested templating for opentsdb
2016-11-03 17:11:52 +01:00
Torkel Ödegaard 3e712178cc ux(dashboard): began removing build mode and adding new slide out row menu 2016-11-03 15:50:11 +01:00
Torkel Ödegaard f91e067235 ux(dashboard): keybinding changes / new, #6442 2016-11-03 15:14:44 +01:00
Torkel Ödegaard 8ea2d3f19c ux(dashboard): removed getting started stuff from dashlist panel, #6442 2016-11-03 13:24:01 +01:00
Torkel Ödegaard e80241b5f4 ux(dashboard): minor tweaks 2016-11-03 13:19:40 +01:00
Torkel Ödegaard f1137e4d20 ux(dashboard): removed green row icon gain, replaced with collapse icon, #6442 2016-11-03 11:30:25 +01:00
Carl Bergquist 61c48aecc2 [Alertlist] Set max-height to respect row height (#6454)
* feat(alertlist): max-height to respect row height

closes #6417

* feat(alertlist): use pre calculated panel.height instead

* style(alertlist): rearrange variable order
2016-11-03 11:01:21 +01:00
utkarshcmu 89cf32b160 Made quotes consistent 2016-11-03 01:22:24 -07:00
utkarshcmu 849ac9441a Fixed multi-value nested templating for opentsdb 2016-11-03 01:18:54 -07:00
bergquist c138b04c5e feat(alerting): avoid double logging 2016-11-03 07:25:00 +01:00
bergquist ff5d4e8e0c fix(alerting): temp fix for broken AND condition
This should be refactored. lets return condition results instead
of setting new value on the evalContext. The condition execution
should only be able to update its own state.

closes #6449
2016-11-03 07:18:39 +01:00
Carl Bergquist 89a3d023ce Merge pull request #6453 from utkarshcmu/alert_message_typo
Log bad alert config and fixed alert message typo
2016-11-03 07:12:36 +01:00
Carl Bergquist bb7f03c91e Merge pull request #6446 from utkarshcmu/graphite_alerting_fix
Fixed intervalFormat for Graphite Alerting
2016-11-03 06:58:51 +01:00
utkarshcmu fc91231104 Fixed failing tests 2016-11-02 22:31:59 -07:00
utkarshcmu d009c6b953 Log bad alert config 2016-11-02 18:22:24 -07:00
utkarshcmu 942de5497e Fixed alert message typo 2016-11-02 18:13:11 -07:00
Torkel Ödegaard 075c722527 ux(dashboard): worked on single row edit mode, #6442 2016-11-02 22:24:08 +01:00
Matt Toback 15e369ec02 First pass of getting started panel for home dashboard 2016-11-02 17:21:11 -04:00
bergquist d1d7c240f9 tech(mailer): dont use deprecated method 2016-11-02 22:11:59 +01:00
Torkel Ödegaard e23f898418 ux(dashboard): minor tweaks and polish, added g a shortcut for go to alerting list 2016-11-02 22:08:17 +01:00
Torkel Ödegaard cdea420285 ux(dashboard): fixes for changing panel tabs, #6442 2016-11-02 21:45:46 +01:00
Carl Bergquist 377d9f4a78 Merge pull request #6452 from utkarshcmu/tooltip_bug
Fixed the tooltip message for slack notifier
2016-11-02 20:46:05 +01:00
utkarshcmu 2b28cf1ff1 Fixed the tooltip message for slack notifier 2016-11-02 12:42:33 -07:00
utkarshcmu 33ee85ede9 Commented strange behavior of tests 2016-11-02 11:11:06 -07:00
Torkel Ödegaard 47aae7f1f2 ux(dashboard): added more shortcusts to v/edit panel, #6442 2016-11-02 17:03:14 +01:00
Torkel Ödegaard 95e7ead89b ux(dashboard): varius dashboard ux fixes and keybinding improvements, press 'e' while hovering over panel will open dashboard in edit mode, pressing 'd' will remove panel, #6442 2016-11-02 15:16:48 +01:00
Torkel Ödegaard 19509d1e7a ux(dashboard): minor fix, #6442 2016-11-02 13:49:12 +01:00
Torkel Ödegaard 40ea014fa8 ux(dashboar): added shortcut for build mode, switched keybinding lib to mousetrap, supports sequences so also added for Go to home dashboard, open search with starred dashbords prefiltered, go to profile, #6442 2016-11-02 12:55:58 +01:00
Torkel Ödegaard 3c1435253d feat(ux dashboard editmode): added shortcut to setting menu, #6442 2016-11-02 11:05:28 +01:00
utkarshcmu a4a2e35bb2 Verified interval format function and gofmt check 2016-11-02 02:07:08 -07:00
bergquist d4bc92b267 feat(tsdb): default tsdb httpclient 2016-11-02 08:51:34 +01:00
utkarshcmu 2088363bf9 Added tests for graphite alerting 2016-11-02 00:00:18 -07:00
utkarshcmu 1e8beb8983 Fixed intervalFormat for Graphite Alerting 2016-11-01 17:55:45 -07:00
bergquist 9b28bf25a4 docs(cli): add info about how to install specific plugin version
closes #6434
2016-11-01 18:35:15 +01:00
Carl Bergquist e659eb745d Merge pull request #6420 from utkarshcmu/alerting_initial_state
Alerts not sent when state is changed from "initialized" to "ok"
2016-11-01 18:30:14 +01:00
Torkel Ödegaard 8980f481f7 fix(ux dashboard): panel height fix to reduce jumpiness when loading dashboard 2016-11-01 16:11:26 +01:00
Torkel Ödegaard 8eee4d8e6b fix(dashboard): fixed white theme for new dashboard row look / dash edit mode, #6442 2016-11-01 16:06:49 +01:00
utkarshcmu 7490c49f60 Alert un paused to pending state 2016-11-01 07:58:38 -07:00
Torkel Ödegaard f3090d8cd4 fix(dashboard): fixed issue with resizing panel, #6442 2016-11-01 15:33:20 +01:00
utkarshcmu d9f2519916 Renamed Initialized to Pending 2016-11-01 07:30:55 -07:00
Torkel Ödegaard 18056e53cc ux(dashboard): Fixing broken unit test made by changes for dash edit mode, #6442 2016-11-01 14:35:35 +01:00
Torkel Ödegaard 786afda4c3 ux(dashboard): edit mode fixes 2016-11-01 13:43:05 +01:00
bergquist 578507ae77 tech(cli): add default settings for transport 2016-11-01 08:58:44 +01:00
Carl Bergquist 4b8d9cac6f Merge pull request #6437 from dmvk/feature/grafana-cli-proxy
Take grafana-cli proxy settings from env
2016-11-01 08:53:23 +01:00
bergquist 39f9db8650 Merge branch 'utkarshcmu-slack_notifier' 2016-11-01 08:48:26 +01:00
bergquist 63e2337f6c feat(alerting): change placeholder to info-popover 2016-11-01 08:46:31 +01:00
David Moravek c6257b30c1 Take grafana-cli proxy settings from env 2016-10-31 23:14:48 +01:00
utkarshcmu 95117a0bc9 Added message parsing functionality 2016-10-31 14:55:21 -07:00
utkarshcmu 80fdd830de Added override default recipient functionality 2016-10-31 14:46:51 -07:00
Torkel Ödegaard 48a54edd85 ux(dashboard): improving drag and drop behavior! 2016-10-30 19:37:50 +01:00
Torkel Ödegaard 09a19d8ecb ux(dashboard): progress on ghost empty space panel 2016-10-30 18:02:46 +01:00
Torkel Ödegaard ca1f06f18f hunting memory leaks 2016-10-30 17:11:19 +01:00
Torkel Ödegaard 4d420a0c33 refactor(): dashboard row model and hunting down memory leak 2016-10-30 15:14:18 +01:00
Torkel Ödegaard 57cbefdf0a working on empty space / dropzone ghost panel 2016-10-30 12:05:11 +01:00
Torkel Ödegaard d98191ad65 Merge remote-tracking branch 'origin/row-tabs' into dash-edit-mode 2016-10-30 11:09:09 +01:00
Matt caaeb8e468 Added move row up and down arrows 2016-10-29 09:15:58 -04:00
Torkel Ödegaard 703eda489e ux(row): fixed panel footer hook border 2016-10-29 13:56:47 +02:00
Torkel Ödegaard c6757bed72 ux(dashboard): new row tabs look 2016-10-29 13:51:16 +02:00
Torkel Ödegaard bda5cdcb2f ux(dash edit mode): fix for row height when collapsed 2016-10-29 13:14:37 +02:00
Torkel Ödegaard 591f6536f8 feat(ux): trying to simplify display rules for edit mode / row actions 2016-10-29 13:10:20 +02:00
Torkel Ödegaard 3be9e8e022 Merge branch 'dash-edit-mode' of github.com:grafana/grafana into dash-edit-mode 2016-10-29 11:51:18 +02:00
Torkel Ödegaard 2fbe8cde8a Merge branch 'master' of github.com:grafana/grafana into dash-edit-mode 2016-10-29 11:50:57 +02:00
utkarshcmu dcaae47e96 Fixed tests 2016-10-28 14:54:55 -07:00
utkarshcmu 4c64e45a59 Added initalized state to alerts 2016-10-28 14:44:45 -07:00
Matt d9f99eb501 Added fadeIn animation to non-build mode 2016-10-28 17:09:33 -04:00
Matt 51f55cf6f1 Beginnings of changes to row edits 2016-10-28 16:12:20 -04:00
Torkel Ödegaard e170e47e7c ux(dashboard): minor updates 2016-10-28 16:41:48 +02:00
Torkel Ödegaard 3fc6f6d730 ux(dashboard): minor fixes 2016-10-28 16:37:13 +02:00
Torkel Ödegaard 366650e1ae ux(dashboard): fixed scss issue 2016-10-28 16:30:16 +02:00
Torkel Ödegaard be99c3e20a updates to dashboard edit mode 2016-10-28 16:26:53 +02:00
Torkel Ödegaard 30789308d7 minor change 2016-10-28 14:49:34 +02:00
Torkel Ödegaard 155cce959f more polish on edit mode 2016-10-28 14:38:48 +02:00
Torkel Ödegaard e215ba821c ux(): edit mode polish 2016-10-28 14:13:11 +02:00
Torkel Ödegaard f1a44ad090 ux(): progress on row ux 2016-10-28 13:36:27 +02:00
Eric Uldall 658fc1a67a added hosted domain suppport to google oauth login (#6372) 2016-10-28 12:00:47 +02:00
seanclerkin 7acdbde8f0 Cloudwatch: add support for Aurora specific RDS metrics (#6378) 2016-10-28 12:00:22 +02:00
Hans Kristian Flaatten b5eaa5ea59 Add missing closing " in Docker README (#6413) 2016-10-28 11:55:47 +02:00
Torkel Ödegaard 517ebfaf6d Merge branch 'dash-edit-mode' of github.com:grafana/grafana into dash-edit-mode 2016-10-27 22:11:08 +02:00
Torkel Ödegaard f8395666e6 minor update 2016-10-27 22:11:00 +02:00
Torkel Ödegaard 9c50893221 progress on new design 2016-10-27 21:51:57 +02:00
Leandro Piccilli c9a69c3ed9 Merge branch 'master' of https://github.com/grafana/grafana 2016-10-27 19:00:23 +02:00
Leandro Piccilli 538e1fbc64 Fix templating using query 2016-10-27 18:59:24 +02:00
Matt b58c38a5db Refactored to be a proper list, added x button in upper right. Before cleaning up the CSS, want trent to set some eyes on it and make it look better. 2016-10-27 11:36:46 +02:00
Matt 4633da47ef Merge branch 'dash-edit-mode' of https://github.com/grafana/grafana into dash-edit-mode 2016-10-26 17:52:41 +02:00
Matt e7f5b76570 Added styles and new markup for dashlist panel 2016-10-26 17:52:37 +02:00
Torkel Ödegaard c609586ff0 ux(dashboard): making progress on new add panel experiance 2016-10-26 17:42:39 +02:00
Torkel Ödegaard f1f923abb9 build fix 2016-10-26 14:31:47 +02:00
Torkel Ödegaard 113a772e33 ux(dashboard): add panel stuff 2016-10-26 12:19:18 +02:00
Torkel Ödegaard 280709327c updated 2016-10-25 17:33:22 +02:00
Torkel Ödegaard 7b0eb6d0bb feat(dashboard): progress on dash edit mode 2016-10-25 16:36:40 +02:00
Utkarsh Bhatnagar b382d17e34 Fixed alerting bug for mysql (#6375) 2016-10-25 14:52:20 +02:00
Torkel Ödegaard 5e1f1c0989 updated 2016-10-25 12:12:59 +02:00
Torkel Ödegaard b45bd07032 ux(dashboard): when saving dashbord with default new dashboard title show Save As Dialog, #6099 2016-10-25 11:11:21 +02:00
Torkel Ödegaard 8a715cd122 using gf-form in row header 2016-10-25 10:47:13 +02:00
Torkel Ödegaard d1cc890ed3 Merge branch 'master' into dash-edit-mode 2016-10-24 14:57:30 +02:00
Torkel Ödegaard 556547b316 ux(panel resize): snap to even 12ths spans 2016-10-24 14:57:13 +02:00
Torkel Ödegaard d6c07d242c Merge branch 'master' into dash-edit-mode 2016-10-24 14:51:35 +02:00
Torkel Ödegaard 4db723ea81 ux(panel resize): snap to even 12ths spans 2016-10-24 14:40:46 +02:00
Torkel Ödegaard 6fb81f54bb ux(): minor fix 2016-10-24 14:12:19 +02:00
Torkel Ödegaard 01627b3a68 feat(ux): dashboard edit mode progress 2016-10-24 13:50:38 +02:00
Utkarsh Bhatnagar 10a42cc98c CHANGELOG entry (#6362) 2016-10-24 11:11:44 +02:00
Noah Heil 56ccd80cce Added two hints to help newer users
I spent a couple of hours trying to figure out why the cloudwatch datasource was not working and the "internal error" notice was not helpful. So I added some hints so that people who are a little newer to linux/aws/grafana wont have to suffer like I did.
2016-10-24 03:05:16 -06:00
Utkarsh Bhatnagar 86ca7ddda4 Added explicitTags support for OpenTSDB>=2.3 (#6361) 2016-10-24 09:15:19 +02:00
Torkel Ödegaard 29e834e74b feat(UX): revived dash-edit-mode branch, #6099 2016-10-23 10:05:31 +02:00
Torkel Ödegaard 1bb8192a38 Merge branch 'master' into dash-edit-mode 2016-10-23 10:03:55 +02:00
Torkel Ödegaard 42961ef8a0 fix(dashbard): fixed issue confirmig when saving a dashboard with conflict 2016-10-22 12:34:18 +02:00
Torkel Ödegaard 8735a84685 Merge branch 'master' of github.com:grafana/grafana 2016-10-22 11:51:48 +02:00
Torkel Ödegaard 8bb2f11505 Merge branch 'alerting_keeplast' 2016-10-22 11:51:16 +02:00
Carl Bergquist bc90e6ce46 Alerting: Keep last state on no data (#6354)
* feat(alerting): add support to keep last state on no data

closes #6332

* refactoring(alerting PR #6354): added new option type for NoData option so AlertStateType does not have to contain invalid state, #6354
2016-10-22 10:56:04 +02:00
Torkel Ödegaard a2e14f56e4 refactoring(alerting PR #6354): added new option type for NoData option so AlertStateType does not have to contain invalid state, #6354 2016-10-22 10:54:50 +02:00
Torkel Ödegaard 4999fff29b fix(alerting): fixed email notification so it splits email address multiple ways, fixes #6353 2016-10-22 10:24:31 +02:00
Torkel Ödegaard b32bbbd1a2 fix(influxdb): enforce database restriction, fixes #6352 2016-10-22 10:03:02 +02:00
Torkel Ödegaard 401c67d136 fix(dashboard): re-render panels when leaving fullscreen mode, fixes #6312 2016-10-22 09:51:18 +02:00
Torkel Ödegaard 1581bf8d5b fix(docs): added api_url to configuration docs, fixes #6351 2016-10-22 08:51:32 +02:00
bergquist 6e65c93203 fix(cli): improve error handling 2016-10-21 16:03:02 +02:00
bergquist 2c7dbde06a feat(alerting): recover from panic 2016-10-21 14:46:58 +02:00
bergquist ad56f67ad1 feat(alerting): add support to keep last state on no data
closes #6332
2016-10-21 14:00:20 +02:00
Torkel Ödegaard 96008c9738 Squashed commit of the following:
commit 4113ed00782590187d19dd2f8cbae683f164142c
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Fri Oct 21 10:47:35 2016 +0200

    docs(): minor fix for docs index page

commit 45478d120571519462fac905aadeab5954696690
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Thu Oct 20 14:28:21 2016 +0200

    updated

commit c9c1c1d5a462f85e8001a45218f24102583d7aee
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Thu Oct 20 14:27:34 2016 +0200

    docs(): updated image refs

commit 5fa0f27963968d77bbbbb7edd973847ea72135e3
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Wed Oct 19 14:33:04 2016 +0200

    docs is almost done

commit 6b988c90cb08563e2c27212338c2947e69f6fcc3
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Tue Oct 18 20:45:28 2016 +0200

    almost done

commit 17757c21ed813892ddb1f289f2e52613caf7bcef
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Tue Oct 18 16:45:48 2016 +0200

    making progress on docs

commit f06c815991dd81b8893912a6da04a17b80b63fda
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Tue Oct 18 14:30:55 2016 +0200

    progress on new docs

commit 5197237426252623de2d8b9cc22ddbbdbb240763
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Tue Oct 18 13:25:26 2016 +0200

    making progress

commit 33e2b6b617f16f65878141cf11e54b2817a2ea96
Merge: de385e5 ecb4a99
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Tue Oct 18 12:17:58 2016 +0200

    Merge branch 'new-docs' of github.com:grafana/grafana into new-docs

commit ecb4a99dd54aa39f17d9bf4d7e132a389812f8fd
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Tue Oct 18 10:39:59 2016 +0200

    keep urls for now

commit de385e56d86b071cf2150ccf9f1aa06ec5187277
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Mon Oct 17 17:56:18 2016 +0200

    more progress

commit 8469ebc239ab2316cbbc01862e5026737f272f00
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Mon Oct 17 17:08:06 2016 +0200

    progress on new docs

commit e755f656b12534cfcb23bad11f1fa696e43f7428
Merge: 4644a35 35cce3b
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Mon Oct 17 12:21:27 2016 +0200

    Merge branch 'new-docs' of github.com:grafana/grafana into new-docs

commit 4644a35102555204787e91041b50dcbfe0f7a213
Merge: 25c4bef 977cdd5
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Mon Oct 17 12:21:11 2016 +0200

    Merge branch 'master' of github.com:grafana/grafana into new-docs

commit 35cce3bef802fac020a53693b02c112a91a096fc
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Mon Oct 17 09:31:17 2016 +0200

    progress on #6170

commit 25c4bef629de7d77218ba95cc3bd25fb50bb19d6
Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
Date:   Sun Oct 16 15:05:30 2016 +0200

    fix for osx

commit 6c6b52f975630be87da23dd51beafaecb820cec2
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Sun Oct 16 12:56:39 2016 +0200

    progress on new docs

commit 6a09633981ab26191d5542dbe3a788846ac6b73d
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Sat Oct 15 11:39:49 2016 +0200

    progress on new docs

commit 7d533fbc23e41b86fd1ba9c955dd17ae1ad977e5
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Mon Oct 10 09:25:12 2016 +0200

    making progress on new docs site

commit 50392ce98edfa201977716e92e4a86f9d48ae386
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Sun Oct 9 20:02:28 2016 +0200

    feat(new docs): progress on new docs site

commit 81a3d3d0952d3a5d790412e90d01ac5a247e0686
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Fri Oct 7 07:52:11 2016 +0200

    new docs site experiment

commit 704adc98664665b3624087ab38ce29fc9da005f1
Author: Torkel Ödegaard <torkel@grafana.org>
Date:   Sat Oct 1 20:46:53 2016 +0200

    new docs poc
2016-10-21 11:01:34 +02:00
Carl Bergquist 5520454523 Merge pull request #6344 from roidelapluie/cuu
Allow to set current on graph panel
2016-10-21 09:30:48 +02:00
bergquist 5bf5ed68e1 tech(notifications): replace internal email code 2016-10-21 09:06:03 +02:00
bergquist f77799837e feat(alerting): support for attached graphs in alert notifications
closes #6183
2016-10-21 09:06:03 +02:00
bergquist ded5a0a9d5 tech(alerting): remove unused code 2016-10-21 09:05:54 +02:00
Carl Bergquist 206a6b0a47 Merge pull request #6346 from cglewis/master
fix cla link; formatting and grammar fixes
2016-10-21 08:57:14 +02:00
cglewis 3931e0b743 fix cla link; formatting and grammar fixes 2016-10-20 13:08:12 -07:00
Julien Pivotto d1eb7e5fcd Allow to set current on graph panel
Refs #6335

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2016-10-20 21:13:32 +02:00
Carl Bergquist 1ce0b8fe25 Merge pull request #6333 from utkarshcmu/alerting_typo
Fixed typo
2016-10-20 11:26:02 +02:00
utkarshcmu b989b08781 Fixed typo 2016-10-20 02:22:37 -07:00
Eric Uldall eda442dbf9 added support to login user oauth user by email only (#6330)
* added support to login user oauth user by email only

* added sql handler

* fixed model method name from GetUserByEmail to GetUserByEmailQuery

* fixed variable declaration typo
2016-10-20 06:45:10 +02:00
bergquist 9badb051ba fix(changelog): typo 2016-10-20 06:38:45 +02:00
bergquist f2cbfece2c feat(notification): add helptext for using multiple email addresses 2016-10-19 17:04:17 +02:00
bergquist 6ea0f0120e feat(notifications): switch to ; seperator
using \n caused problems with the json deserialisation.

closes #6326
2016-10-19 16:34:12 +02:00
bergquist 3ac38dfe70 Merge branch 'alerting_opentsdb' 2016-10-19 13:16:16 +02:00
bergquist 2df8c649b7 Merge branch 'master' into alerting_opentsdb 2016-10-19 13:15:22 +02:00
bergquist 5fbab038e8 fix(opentsdb): can always return false 2016-10-19 13:14:42 +02:00
Torkel Ödegaard a826591eed Merge branch 'master' of github.com:grafana/grafana 2016-10-19 13:14:34 +02:00
Carl Bergquist 497eca0190 Merge pull request #6325 from utkarshcmu/alerting_opentsdb
Implmented targetContainsTemplate for OpenTSDB
2016-10-19 13:07:33 +02:00
utkarshcmu 62895114e1 Implmented targetContainsTemplate for OpenTSDB 2016-10-19 03:54:41 -07:00
bergquist 4c2f2eeb58 feat(opentsdb): add mock method for detecting targets with template values 2016-10-19 11:45:39 +02:00
bergquist 20bfe443fe feat(prometheus): trim labelname lookup key
closes #6300
2016-10-19 08:57:58 +02:00
bergquist b2d5b920f5 feat(alerting): allow editor to modify notifications
closes #6314
2016-10-19 08:01:31 +02:00
Carl Bergquist a1e97b0067 Merge pull request #6290 from utkarshcmu/alerting_opentsdb
Opentsdb alerting feature completed, ready for testing
2016-10-19 07:50:40 +02:00
Eric Uldall 9468ddeed5 Issues/6317 empty google login (#6318)
* added Login property to google_oauth model

* fixed spacing

* fixed google_oauth syntax error, missing comma before newline

* set noexpandtab for commit
2016-10-19 07:43:32 +02:00
utkarshcmu 333a853948 Fixed for loop and append 2016-10-18 08:48:06 -07:00
bergquist d1eceedf55 feat(webhook): add httpmethod to webhook
closes #6255
2016-10-18 16:50:16 +02:00
bergquist 9429434cb5 feat(influxdb): use database auth if provided
closes #6310
2016-10-18 15:12:04 +02:00
Mitsuhiro Tanda a8dd44918b support future time range 2016-10-18 19:39:04 +09:00
bergquist 2b55cf609c tech(build): include sha1 as artifact 2016-10-18 11:42:25 +02:00
bergquist d016fc1da1 tech(build): create sha files for windows build 2016-10-18 10:54:17 +02:00
Carl Bergquist 860865bd55 Merge pull request #6303 from mtanda/cw_region
(cloudwatch) add region
2016-10-18 08:48:44 +02:00
Mitsuhiro Tanda 888619d74e (cloudwatch) add region 2016-10-18 12:28:20 +09:00
utkarshcmu 10d581dd0a Added unit tests for query parsing 2016-10-17 14:51:51 -07:00
utkarshcmu 2374d09877 Fixed query parsing bugs 2016-10-17 14:50:53 -07:00
bergquist 97008f90c4 tech(build): semicölöns 2016-10-17 15:19:00 +02:00
bergquist 75a1ff1037 tech(build): dont override arch for windows 2016-10-17 15:09:35 +02:00
bergquist 0abc22f272 tech(build): make artifact path less strict 2016-10-17 14:35:09 +02:00
mkm85 977cdd5933 Fix cloudwatch multivalue (#6282)
* Fixed missing contains variable problem

* allow All option to be used in cloudwatch templating
2016-10-17 11:33:28 +02:00
bergquist b6d112f8d7 tech(build): appveyor formating 2016-10-17 09:34:58 +02:00
bergquist 6c7e227d2f Merge branch 'master' of github.com:grafana/grafana 2016-10-17 09:29:29 +02:00
Paul Traylor a45a487ad3 Update query for "Rule Eval Duration" (#6294)
This query was changed to use seconds in https://github.com/prometheus/prometheus/commit/f69e668fc468dfa2feb13603237810b8d748d87e
2016-10-17 08:37:59 +02:00
utkarshcmu ace81760ea Added tests file for writing tests 2016-10-16 12:10:13 -07:00
utkarshcmu b7744b4928 Added tags and filters params to alerting 2016-10-16 10:55:07 -07:00
utkarshcmu 35f93f4117 Added rate params to alerting 2016-10-16 05:20:58 -07:00
utkarshcmu cc0a39f816 Added downsampling params to alerting 2016-10-16 04:12:13 -07:00
benrubson 807bc5eb47 Add time back to result array 2016-10-16 01:09:00 +02:00
benrubson 9792bd7b08 Typo 2016-10-16 00:46:56 +02:00
benrubson 604dcbc6b2 Missing values, corect tooltip 2016-10-16 00:30:50 +02:00
benrubson 07bf4c0b82 Missing values, keep interpolation 2016-10-16 00:29:15 +02:00
benrubson 04a276dc2c Missing values, correctly highlight last point 2016-10-15 16:51:18 +02:00
benrubson 8d5269dea7 Typo 2016-10-15 13:17:11 +02:00
benrubson 43129aa563 Missing values, correct graph specs 2016-10-15 13:10:19 +02:00
benrubson c976448f6a Missing values, stack null & missing values 2016-10-15 13:07:41 +02:00
benrubson 2cdd097b3a Missing values, correct timeStep 2016-10-15 11:43:36 +02:00
Ben RUBSON d1e8418c74 Correct tooltip timestamp (#6283)
Corrects #6275, follows #6211
2016-10-15 08:02:07 +02:00
Torkel Ödegaard c1567ae595 fix(build): fixes #6284 2016-10-15 08:00:48 +02:00
Torkel Ödegaard 04c23ef322 fix(SIGHUP): ignore SIGHUP syscall, fixes #6276 2016-10-14 14:23:22 +02:00
Torkel Ödegaard 30645a6d3d refactor(alerting): initial step for seperating alerting and dash model, #6273 2016-10-14 13:06:29 +02:00
bergquist 466e62968e tech(build): publish artifacts to s3 2016-10-14 10:37:31 +02:00
bergquist ec4260e14f tech(build): remove commented build steps 2016-10-14 10:26:08 +02:00
bergquist 5e0fa0f0ad feat(opentsdb): context aware http requests 2016-10-14 10:21:47 +02:00
bergquist 6d6d6d90fc Merge branch 'utkarshcmu-alerting_opentsdb' into alerting_opentsdb 2016-10-14 10:15:43 +02:00
bergquist f44e360b0d fix(opentsdb): fmt 2016-10-14 10:15:30 +02:00
Torkel Ödegaard 4c26c55fea fix(api): minor change to how pause alert was done 2016-10-14 09:58:22 +02:00
Torkel Ödegaard 46bab0bb37 feat(alerting): remove annotations when deleting alert, closes #6244 2016-10-14 09:43:30 +02:00
Torkel Ödegaard c9d7eb0a7a feat(alerting): added clear history button to alert state history view, #6244 2016-10-14 09:33:42 +02:00
bergquist fe24e6c8a8 Merge branch 'alerting_opentsdb' of https://github.com/utkarshcmu/grafana into utkarshcmu-alerting_opentsdb 2016-10-14 09:19:42 +02:00
bergquist 455df7f0a0 Merge branch 'master' into alerting_opentsdb 2016-10-14 09:17:35 +02:00
bergquist aeb0c5cb53 Merge branch 'master' into interval 2016-10-14 09:15:04 +02:00
bergquist f4e0a9245e feat(influxdb): choose highest interval value 2016-10-14 09:14:13 +02:00
utkarshcmu 4247e92e87 Resolved conflicts 2016-10-14 00:01:36 -07:00
utkarshcmu 06f2047ced OpenTsdb alerting works with metric query 2016-10-13 23:49:28 -07:00
bergquist 998df2a1ac feat(opentsdb): add alerting support to plugin.json 2016-10-13 23:49:27 -07:00
bergquist b8ec1ce9a2 tech(tsdb): add basic skeleton for alerting 2016-10-13 23:49:27 -07:00
bergquist fb99d9d680 feat(build): remove dist from artifact path 2016-10-14 07:05:36 +02:00
bergquist b2acc7cf03 feat(build): build zipfile before creating artifact 2016-10-13 17:51:09 +02:00
Carl Bergquist 0793811b7e Merge pull request #6192 from polynomial/fix_typo
fix(docs): duplicate word data in Graph Panel
2016-10-13 17:17:49 +02:00
bergquist da2aaf7095 feat(build): trigger windows build after successfull CI build 2016-10-13 17:11:04 +02:00
Carl Bergquist 7bdedff89c feat(plugins): make sure windows data plugin path is absolute (#6264) 2016-10-13 15:36:35 +02:00
Torkel Ödegaard 44f064392d feat(alerting): different colored lines/icons for alert annotations based on state, #6244 2016-10-13 15:22:54 +02:00
mdadm fa492c6828 fixed scoping issue with certPool variable (#6261) 2016-10-13 13:38:55 +02:00
bergquist 4144eacc24 feat(influxdb): start parsing interval parameters 2016-10-13 11:42:51 +02:00
bergquist 1506df8c11 feat(alerting): parse the interval value from the panel 2016-10-13 11:19:44 +02:00
Carl Bergquist c0596d0dd0 Merge pull request #6257 from utkarshcmu/opentsdb_lodash
Opentsdb queries fixed without alias but with tags/filters
2016-10-13 07:34:00 +02:00
utkarshcmu 6638605fd1 Removed console.log 2016-10-12 13:47:40 -07:00
utkarshcmu cc3b928708 Opentsdb queries broken if no alias is uses with tags/filters 2016-10-12 13:32:37 -07:00
bergquist 2e4ca64783 fix(cli): improve error handling
closes #6256
2016-10-12 22:31:28 +02:00
Torkel Ödegaard 0f2fa33daf docs(changelog): added fix for #4393 to the changelog 2016-10-12 13:17:30 +02:00
Uros Meglic e1739b6025 (fix)elasticsearch: IP addresses don't survive terms aggregation (#4393) (#6246) 2016-10-12 13:14:57 +02:00
Carl Bergquist ce60efea8a Merge pull request #6249 from txisme/master
Fixed latest builds URL
2016-10-12 13:06:38 +02:00
txisme 2fc7957485 Fixed latest builds URL 2016-10-12 11:27:21 +01:00
bergquist 5a39bf5c58 fix(alert_tab): dont add dup notifications to repeater
closes #6233
2016-10-12 11:27:49 +02:00
Torkel Ödegaard 0bae12e4ae change(graph): Changed default for stack hover value 2016-10-12 11:21:23 +02:00
bergquist c0829903ba fix(alerting): scope variable was updated
closes #6228
2016-10-12 09:46:32 +02:00
Torkel Ödegaard b8b577eafb fix(spelling): minor spelling fix in alerting code 2016-10-12 09:17:48 +02:00
bergquist 5a91d45f3f fix(influxdb): broken unittests 2016-10-12 07:43:30 +02:00
Torkel Ödegaard 1b8a81d4ba fix(alerting): fixed reducer change issue, fixes #6241 2016-10-12 07:04:53 +02:00
Torkel Ödegaard 3d593492c9 fix to text panel and transparent mode 2016-10-12 07:04:53 +02:00
marcv81 150d21800c Do not pass Authorization header in Grafana.net proxy (#6243) 2016-10-12 06:54:33 +02:00
bergquist 885e0366c5 feat(influxdb): support raw queries in alerting
ref #6231
2016-10-11 18:53:09 +02:00
bergquist ccee1b3f96 fix(alerting): fix bug with unhandled error
closes #6239
2016-10-11 17:37:07 +02:00
bergquist 0d4b00df95 feat(alerting): add template validation for influxdb
closes #6230
2016-10-11 16:03:00 +02:00
Torkel Ödegaard 2e21613be7 fix(templating): fixed issues with dynamic dashboard srv (panel/row) repeats, fixes #6237 2016-10-11 15:17:47 +02:00
Corentin Chary 4df379f90c Do not align refresh time (#6178)
When you have a lot of dashboards, all of them
end up refreshing their dashboards at the exact
same time, which isn't particulary good for your
TSDB backend.
2016-10-11 13:57:53 +02:00
Ben RUBSON f7124f1638 Patch: 4 tooltip bugs (#6211)
* Order tooltip by yaxis by default

solves #6174

* typo

* Avoid sorting multiple times

and evaluate series.yaxis.n as it may not exist.

* typo

* typo

* typo

* Tooltip values loose their format when reordered

solves #6208

* Hover the correct point

* Make tooltip sort happy with hidden series
2016-10-11 13:53:49 +02:00
Uros Meglic dc680a41c8 fix(elasticsearch): Query editor allows to remove last group by (#5692) (#6223) 2016-10-11 13:41:13 +02:00
Torkel Ödegaard cace1d6b8f change(plugin page): changed tab order on plugin page, closes #6123 2016-10-11 13:40:16 +02:00
Torkel Ödegaard 73fc659011 fix(graph): fixed issue with old threshold to new threshold model migration, fixes #6236 2016-10-11 13:22:46 +02:00
Torkel Ödegaard f1905a8485 fix(alerting): fixed issue with using nested queries in graphite query used in alerting rule, fixes #5996 2016-10-11 12:50:11 +02:00
bergquist 446bde2421 Merge branch 'pause_alert_rules'
closes #6135
2016-10-11 10:54:58 +02:00
bergquist c6cf7647ff feat(alerting): pausing alerts requires alert id 2016-10-11 10:53:24 +02:00
Carl Bergquist be2054fe51 Merge pull request #6229 from nijanthanh/cloudwatch_ApplicationELB_UnHealthyHostCount_fix
(cloudwatch) Fix UnHealthyHostCount metric of ApplicationELB
2016-10-11 10:36:19 +02:00
bergquist 3162e680c2 tech(notifiers): improve logging for notifications
ref #6228
2016-10-11 10:15:41 +02:00
Torkel Ödegaard 7b70e0ff3a fix(UI): fixed 3 UI bugs, fixes #6225 2016-10-11 09:51:43 +02:00
bergquist 8b0c29b104 Merge branch 'master' into pause_alert_rules 2016-10-11 09:46:48 +02:00
bergquist 4bbc2108f9 feat(alerting): add pause button to alert list 2016-10-11 09:45:38 +02:00
Nijanthan Hariharan 2b8404e178 (cloudwatch) Fix UnHealthyHostCount metric of ApplicationELB
The UnHealthyHostCount metric of ApplicationELB for cloudwatch datasource did not work because the capitalization was wrong - it was UnhealthyHostCount instead of UnHealthyHostCount.
Here is the AWS documentation listing the metric name - http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html#load-balancer-metrics-alb
2016-10-11 13:10:57 +05:30
Dan Cech 6b16fcea52 Oauth2 Updates (#6226)
* break out go and js build commands

* support oauth providers that return errors via redirect

* remove extra call to get grafana.net org membership

* removed GitHub specifics from generic OAuth

* readded ability to name generic source

* revert to a backward-compatible state, refactor and clean up

* streamline oauth user creation, make generic oauth support more generic
2016-10-11 08:51:44 +02:00
bergquist 804797245d feat(alerting): make it possible to pause from alert tab 2016-10-11 08:40:38 +02:00
Torkel Ödegaard d4fd1c82e3 fix(alerting): added step any to alert threshold input fields, fixes #6205 2016-10-10 19:47:16 +02:00
Dan Cech 519100f1bd Merge pull request #6217 from ericpp/oauth_add_state_param
Added a state parameter for all OAuth requests
2016-10-10 09:58:35 -04:00
bergquist f3825263d4 feat(alerting): add pause button in alert list 2016-10-10 15:17:14 +02:00
Carl Bergquist b0d154d5aa Merge pull request #6221 from grafana/alerting_influxdb
Alerting support for influxdb
2016-10-10 14:32:47 +02:00
bergquist 264590a9c2 feat(alerting): add paused api endpoint 2016-10-10 14:26:09 +02:00
bergquist 19427b59f9 feat(alerting): do not enqueue paused rules 2016-10-10 13:29:10 +02:00
bergquist 04f417a423 feat(alerting): enabled by default. configurable elert engine
closes #6210
2016-10-10 13:09:16 +02:00
bergquist 8d96262106 chore(tsdb): tidy up code 2016-10-10 11:58:06 +02:00
bergquist b841e649ab Merge branch 'master' into alerting_influxdb 2016-10-10 11:38:29 +02:00
bergquist f609623abd style(influxdb): tidy up code 2016-10-10 11:34:52 +02:00
bergquist 95b9f472d1 tech(influxdb): remove unused logging 2016-10-10 11:17:00 +02:00
bergquist f919d04e3c docs(tsdb): improve fill comment 2016-10-10 09:52:53 +02:00
bergquist 0bfb94dc6f feat(tsdb): add interval calculator 2016-10-10 09:45:33 +02:00
Torkel Ödegaard 918481909c fix(metricsegment): fixed issue with metric segment, fixes #6212 2016-10-08 10:23:30 +02:00
Torkel Ödegaard b65642564a poc for new metric segment 2016-10-08 10:06:47 +02:00
Eric Perrino 81443bf8b4 Added a state parameter for all OAuth requests 2016-10-08 01:22:32 -05:00
Torkel Ödegaard 913f17ee8a fix(plugin dashboards): fixed issue with plugin dashboard list, fixes #6215 2016-10-07 16:04:58 +02:00
bergquist 4fafefd66a feat(influxdb): proper support for group by tags 2016-10-07 15:09:54 +02:00
bergquist e499e8850c fix(influxdb): fix for timerange 2016-10-07 11:33:17 +02:00
bergquist 0633e2c03f feat(influxdb): add real support for time ranges 2016-10-07 11:23:37 +02:00
bergquist e36f9fa795 Merge branch 'master' into alerting_influxdb 2016-10-07 10:45:05 +02:00
bergquist a3c91450d5 tech(config): add log.filters to default and sample 2016-10-07 10:39:01 +02:00
Torkel Ödegaard a5cbfc8b98 fix(opentsdb): fixed opentsdb issue, fixes #6206 2016-10-07 08:57:40 +02:00
Eric Perrino d3b0905899 Added allow_sign_up setting to auth.ldap to be able to disable automatic user creation for LDAP logins (#6191) 2016-10-07 08:49:58 +02:00
Wolfram Kroll 7e6595acaf hint about how to override settings from default section (#6181) 2016-10-07 08:48:57 +02:00
bergquist 522d40fa26 fix(influxdb): support mulitple tags 2016-10-06 18:51:17 +02:00
bergquist 87650c150b feat(influxdb): add tags to serie names 2016-10-06 18:47:59 +02:00
bergquist b0addbd7cb feat(influxdb): support multi row results 2016-10-06 15:30:09 +02:00
Torkel Ödegaard dacfa6b978 fixed issue in metric_segment 2016-10-06 15:09:02 +02:00
bergquist d8aa38fafe tech(influxdb): refactor and cleanup 2016-10-06 14:16:26 +02:00
bergquist ab8751767c feat(influxdb): send request and parse response 2016-10-06 12:51:45 +02:00
bergquist b519d5e92c feat(docker): update docker-compose for influxdb 2016-10-06 12:50:06 +02:00
Torkel Ödegaard 04a5ad529c generate sha1 for package files, fixes #913 2016-10-06 10:53:42 +02:00
Torkel Ödegaard cc1452277b added testdata scenario for null data and stacking, also updated testdata dashbord, #2912 2016-10-06 10:53:42 +02:00
bergquist 887ca40455 feat(influxdb): add support for policies 2016-10-05 20:57:28 +02:00
bergquist 4387d20222 feat(influxdb): render select and groupby 2016-10-05 20:36:05 +02:00
bergquist 9968fa5bc5 feat(influxdb): add query part definitions 2016-10-05 16:59:33 +02:00
bergquist 8588bb386c feat(influxdb): add conditions property to tag 2016-10-05 16:57:32 +02:00
Peter Dave Hello bf4c3f3ae6 optimize png images using zopflipng (#6197) 2016-10-05 15:57:50 +02:00
bergquist c7abd3ba4e feat(influxdb): add querypart renderers 2016-10-05 14:42:06 +02:00
bergquist d0e6a9559e feat(influxdb): add query part model 2016-10-05 10:56:34 +02:00
bergquist 92121ea656 feat(alerting): add nop uploader
ref #6183
2016-10-05 07:34:48 +02:00
Benjamin Smith 39769ea65b fix(docs): duplicate word data in Graph Panel 2016-10-04 12:40:34 -07:00
bergquist 946e0bf32e feat(influxdb): parse query json 2016-10-04 21:28:05 +02:00
bergquist e556df5b49 feat(tsdb): add draft implementation for influxdb 2016-10-04 16:25:33 +02:00
bergquist d726f49a8c fix(notification): broken test notifications
ref #6159
2016-10-03 17:03:21 +02:00
bergquist 5a201cfd35 tech(tsdb): abort batch procces when context closes 2016-10-03 14:33:47 +02:00
bergquist d889415c4b tech(tsdb): rename context to query 2016-10-03 14:32:04 +02:00
bergquist 653a0502c4 tech(tsdb): add jsondata to tsdb datasource struct 2016-10-03 14:31:33 +02:00
bergquist 1606b74fce tech(opentsdb): add init ref for opentsdb 2016-10-03 10:59:09 +02:00
bergquist f4a834f84b fix(opentsdb): add context to opentsdb executor 2016-10-03 10:37:49 +02:00
bergquist 8368a4a88a Merge branch 'master' into alerting_opentsdb 2016-10-03 10:36:33 +02:00
bergquist 6f1a9f4f2e Merge branch 'mtanda-cloudwatch_interval' 2016-10-03 10:32:07 +02:00
bergquist f4b5fa4d6a Merge branch 'master' into mtanda-cloudwatch_interval 2016-10-03 10:32:00 +02:00
bergquist 96ca69c5a9 tech(cloudwatch): extract method 2016-10-03 10:31:07 +02:00
Carl Bergquist c38f6ff182 Make alerting notifcations sync (#6158)
* tech(routines): move the async logic from notification to alerting notifier

* tech(notification): reduce code dupe

* fix(notification): dont touch the response unless its an error

* feat(alerting): make alerting exeuction async but flow sync

* tech(alerting): remove commented code

* tech(alerting): remove unused code

* tech(alerting): fix typo

* tech(alerting): implement Context on EvalContext

* tech(alerting): wait for all alerts to return

* feat(alerting): dont allow alert responses to cancel

* Revert "feat(alerting): dont allow alert responses to cancel"

This reverts commit 324b006c96.

* feat(alerting): give alerts some time to finish before closing down
2016-10-03 09:38:03 +02:00
bergquist 6b7015799c Merge branch 'cloudwatch_interval' of https://github.com/mtanda/grafana into mtanda-cloudwatch_interval 2016-10-03 08:51:33 +02:00
bergquist 36f0bf0e1e chore(web): Improve error message for invalid SSL configuration 2016-10-03 08:47:36 +02:00
Leandro Piccilli 0000065053 Merge branch 'master' of https://github.com/grafana/grafana 2016-10-02 16:59:25 +02:00
Torkel Ödegaard 4a116ad4ad fix(build): fixed failing unit test 2016-10-01 17:36:56 +02:00
Torkel Ödegaard 4ec2377e09 fix(notifications): added form validation and restored Send Test button which was always hidden, #6159 2016-10-01 17:14:45 +02:00
Torkel Ödegaard c6cf6d4655 fix(api): fixed issue with api content-type in api success messages, fixes #6160 2016-10-01 16:52:52 +02:00
HeroCC 72f81b3b2a Make Slack Logo link to Slack (#6165) 2016-10-01 16:50:56 +02:00
miao 1f5a68aab1 Modify basic introductions of docs and make it exact (#6166) 2016-10-01 16:50:09 +02:00
Torkel Ödegaard a6918617ff feat(api): fixed minor issue with error message when trying to create duplicate datasource, fixes #6164 2016-10-01 16:41:27 +02:00
Torkel Ödegaard 4f2263552c feat(alerting): updated look for alerting panel, #6136 2016-10-01 16:32:13 +02:00
bergquist 91b180168e tech(notifications): remove unused filter markup 2016-10-01 15:51:08 +02:00
Torkel Ödegaard aa78114440 fix(alerting): fixed icon for ok state in panel header, #6136 2016-09-30 17:39:05 +02:00
Torkel Ödegaard 7c339f0794 feat(alerting): show alertin state in panel header, closes #6136 2016-09-30 17:37:47 +02:00
bergquist 1226beba31 feat(opentsdb): add alerting support to plugin.json 2016-09-30 16:50:50 +02:00
Torkel Ödegaard 2c4524bbfd fix(logging): minor logging fix 2016-09-30 13:25:54 +02:00
Torkel Ödegaard 2908c6a80b fix(metricsegment): added min width for inputs for metric segment and value select components 2016-09-30 13:13:28 +02:00
Torkel Ödegaard fe4a0a98c1 fix(alerting): added confirm modal in UI, when deleting alert 2016-09-30 13:00:16 +02:00
Torkel Ödegaard 24a25453f6 fix(server): shutdown logging fixes 2016-09-30 10:18:19 +02:00
Torkel Ödegaard 5ec86a9ef4 fix(build): fixed broken build, unreachable code in migrator.go 2016-09-30 09:23:26 +02:00
Torkel Ödegaard 86b546c21d refactor(main): refactoring main grafana server / startup code 2016-09-30 08:36:20 +02:00
Torkel Ödegaard 2b8177e3e5 fix(migration): fix for sqlstore migration, the execution of the migration and recording of the success of it was not done in same transaction, fixes #5315 2016-09-30 07:49:40 +02:00
Torkel Ödegaard 0ab2113fab docs(config): added missing smtp config section, fixes #6155 2016-09-30 07:40:58 +02:00
bergquist b66d94343e tech(tsdb): add basic skeleton for alerting 2016-09-30 07:35:48 +02:00
Torkel Ödegaard 50d146e82c fix(docs): fixed influxdb docs and mention of InfluxDB version, #6027 2016-09-29 14:53:50 +02:00
Torkel Ödegaard 5a1a80bcdd feat(templating): adding missing label property to query variable defaults, fixes #6150 2016-09-29 14:46:59 +02:00
bergquist 1a062c52fa fix(notifications): handle none configured image uploader
ref #6152
2016-09-29 14:31:19 +02:00
Torkel Ödegaard 88ec307f3e fix(graph panel): fixed issue with graph axis labels 2016-09-28 21:39:51 +02:00
Alexander Zobnin c2856926aa fix(graph): fix X axis value selection. (#6145) 2016-09-28 21:29:51 +02:00
Torkel Ödegaard 75311e0626 feat(alerting): removed old init package 2016-09-28 21:27:24 +02:00
Torkel Ödegaard 5f5bbfbda5 Merge branch 'master' of github.com:grafana/grafana 2016-09-28 21:12:37 +02:00
Torkel Ödegaard 80eb82420e fix(cleanup): check if images dir exists 2016-09-28 21:12:25 +02:00
Torkel Ödegaard c28d004731 Merge branch 'go_routines' 2016-09-28 21:06:07 +02:00
Torkel Ödegaard 71e2c6f6ef refactor(backend): refactoring management of go routines in backend 2016-09-28 21:06:00 +02:00
Dan Cech 6d7061dcaf fix typo in config loader 2016-09-28 13:10:31 -04:00
Torkel Ödegaard 2750c8a801 feat(config): changed name of allow_user_login_pass to disable_login_form, changed the section of the config option to [auth], impacts merged PR #5423 2016-09-28 15:27:08 +02:00
Torkel Ödegaard 3e657357e5 Merge branch 'gnet-oauth' 2016-09-28 15:11:03 +02:00
Torkel Ödegaard e5fc4332cd feat(oauth): refactoring PR #6077 2016-09-28 15:10:50 +02:00
bergquist bc634f20d5 Merge branch 'master' into go_routines 2016-09-28 13:58:14 +02:00
bergquist 7a6501640f tech(log): fixes extra param logging 2016-09-28 13:57:19 +02:00
bergquist 991539e410 style(go_routines): improve variable naming 2016-09-28 13:35:24 +02:00
Torkel Ödegaard 5ccdbf01fd merge with master 2016-09-28 13:02:15 +02:00
Torkel Ödegaard 10e63e5dd2 Merge branch 'master' of github.com:grafana/grafana 2016-09-28 12:17:16 +02:00
Torkel Ödegaard 15299c2ac0 fix(govendor): added new null package 2016-09-28 12:15:47 +02:00
Torkel Ödegaard 599fe49944 fix(templating): fix to datasource variable, was not updated on dashboard load, added unit test for case as well 2016-09-28 12:12:38 +02:00
Mitsuhiro Tanda 593863fb9e (prometheus) check time range (#6137) 2016-09-28 11:54:25 +02:00
Torkel Ödegaard 68370ba2bc feat(testdata): added alert dashboard 2016-09-28 10:44:21 +02:00
Torkel Ödegaard a4648607bb feat(testdata): added csv test data scenario 2016-09-28 10:37:30 +02:00
Torkel Ödegaard 8d5857661e refactor(tsdb): changed tsdb time series model to use null.Float instead of pointers 2016-09-28 09:15:48 +02:00
Torkel Ödegaard 63caedb094 Merge branch 'master' of github.com:grafana/grafana 2016-09-28 08:09:51 +02:00
Torkel Ödegaard 460160cfa4 feat(testdata): added test case for ms resolution data 2016-09-28 08:08:46 +02:00
Torkel Ödegaard 22e8885690 feat(testdata): progress on test data stuff 2016-09-27 18:36:00 +02:00
Torkel Ödegaard 3ecd96e682 feat(testdata): lots of work on new test data data source and scenarios 2016-09-27 18:17:39 +02:00
bergquist 34b31aeef8 tech(goroutines): sync state between different go routines 2016-09-27 16:47:17 +02:00
bergquist 8e89173095 tech(log): fixes extra param logging 2016-09-27 16:06:06 +02:00
Torkel Ödegaard ade8aa5b92 feat(graph): refactorings 2016-09-27 14:47:04 +02:00
Torkel Ödegaard 34f15d92d0 feat(testdata): worked on testdata app 2016-09-27 14:39:51 +02:00
bergquist 262e7193a3 feat(alerting): keep proccessing results even if one response panics 2016-09-27 11:16:55 +02:00
bergquist 071f2205e1 tech(tsdb): ops <o> 2016-09-27 11:13:13 +02:00
bergquist 46d4f817e3 tech(graphite): return error if statuscode is not ok 2016-09-27 10:09:56 +02:00
Torkel Ödegaard 81cb4a740b refactor(graph): progress on graph panel work 2016-09-26 17:25:29 +02:00
bergquist 6a699d13c4 docs(configuration): add note about snapshot configuration 2016-09-26 14:46:03 +02:00
bergquist 7585e9a930 docs(changelog): add note about closing #4087 and #2172 2016-09-26 14:41:13 +02:00
bergquist dbb7852f21 feat: purge old files and snapshots
closes #4087
closes #2172
2016-09-26 14:33:40 +02:00
Torkel Ödegaard 40e6317b7b feat(graph): refactoring 2016-09-26 14:04:13 +02:00
Torkel Ödegaard acfde82c0a refactor(graph): js -> typescript refactoring 2016-09-26 13:55:42 +02:00
bergquist 1a32ab64b6 tech(renderer): improve renderOpts names 2016-09-26 11:07:36 +02:00
bergquist effd2098ee feat(alerting): fixes broken image renderer 2016-09-26 10:51:45 +02:00
bergquist 887e236bce fix(rule): fixes rule reading bug 2016-09-26 10:01:33 +02:00
bergquist 8cd9225eb6 feat(alerting): increase timeout to 15s 2016-09-26 08:45:55 +02:00
Torkel Ödegaard 5682520603 feat(graph): more work on graph panel and support for non time series 2016-09-24 13:08:58 +02:00
Torkel Ödegaard cd270f14a2 feat(graph): more work on graph panel and support for non time series 2016-09-23 17:12:10 +02:00
Dan Cech 501e67a657 use semver when comparing grafana and plugin versions (#6108) 2016-09-23 14:38:59 +02:00
Torkel Ödegaard 3bbc940b88 Merge branch 'master' into graph-panel-non-timeseries 2016-09-23 14:22:44 +02:00
Torkel Ödegaard 9a94072c1d Merge branch 'master' of github.com:grafana/grafana 2016-09-23 12:30:20 +02:00
Torkel Ödegaard 175c651e65 fix(server side rendering): Fixed issues with server side rendering for alerting & for auth proxy scenarios, fixes #6115, fixes #5906 2016-09-23 12:29:53 +02:00
bergquist 99c77e7df8 tech(plugins): increase timeout 2016-09-23 09:56:42 +02:00
bergquist e5c64732f1 fix(sql): Add boolstr to all dialects
closes #6116
2016-09-23 09:36:15 +02:00
bergquist 521b5cf014 tech(build): make sure build.go setup works fine
ref #6113
2016-09-23 06:51:37 +02:00
Carl Bergquist 696a5f6a80 Merge pull request #6113 from replay/fix_context_dependency
Fix context dependency
2016-09-23 06:43:32 +02:00
Carl Bergquist 66fe886755 Merge pull request #6112 from replay/fix_typo
fix typo
2016-09-23 06:42:59 +02:00
Mauro Stettler f7dfcb4401 Merge branch 'master' of github.com:grafana/grafana into fix_context_dependency 2016-09-22 21:13:53 +01:00
Mauro Stettler cb0f19f8d4 fix context dependency 2016-09-22 21:13:08 +01:00
Carl Bergquist 7bfef0ced8 Merge pull request #6111 from grafana/pluginreadme
allow non-admin users to view plugin readme
2016-09-22 21:12:44 +01:00
Torkel Ödegaard bb77caa369 Merge branch 'master' of github.com:grafana/grafana 2016-09-22 21:49:57 +02:00
Torkel Ödegaard e36cdac594 fix(templating): fixed issue with templating when initalizing variables without any existing value 2016-09-22 21:49:41 +02:00
Mauro Stettler b063cf0a6e fix typo 2016-09-22 20:44:57 +01:00
Carl Bergquist d6a0ec85c4 Merge pull request #6111 from grafana/pluginreadme
allow non-admin users to view plugin readme
2016-09-22 19:51:47 +02:00
Dan Cech 2c3dd84ebb allow non-admin users to view plugin readme 2016-09-22 13:46:11 -04:00
bergquist 5817948341 Merge branch 'alert_prometheus' 2016-09-22 19:27:35 +02:00
bergquist d711c0ed35 Merge branch 'master' into alert_prometheus 2016-09-22 19:27:24 +02:00
bergquist a49c21df3a fix(png-renderer): increase timeouts 2016-09-22 19:24:18 +02:00
Torkel Ödegaard f2f3115749 feat(graph panel): more progress on graph panel and non time series data support 2016-09-22 16:47:37 +02:00
Torkel Ödegaard 6cd4db12c7 feat(graph panel): refactoring axes tab options into it's own component 2016-09-22 16:19:44 +02:00
bergquist 76b8cff445 fix(gnet): remove trailing , 2016-09-22 16:17:22 +02:00
Torkel Ödegaard 23246605b0 feat(graph panel): working on adding non time series support to graph panel 2016-09-22 16:05:20 +02:00
Torkel Ödegaard f3d4a97f49 Merge branch 'master' into graph-panel-non-timeseries 2016-09-22 14:03:06 +02:00
Torkel Ödegaard 0fc7405b95 fix(elasticsearch): for query template variable when looking up terms without query, no longer relies on elasticsearch default field, fixes #3887 2016-09-22 12:05:03 +02:00
Torkel Ödegaard f79600b352 fix(internal metrics): removed local dev code 2016-09-22 11:54:47 +02:00
Torkel Ödegaard e336fb3d60 fix(smtp mailer): added timeout of 10 seconds to smpt mailer, fixes #2989 2016-09-22 11:51:39 +02:00
Torkel Ödegaard 936146768f fix(snapshots): fixed issue with viewing embedded/solo/png panel from snapshot without login, fixes #3769 2016-09-22 11:46:58 +02:00
Torkel Ödegaard 3ed7ab93c5 added small info text to plugins list page, #5176 2016-09-22 11:32:27 +02:00
Torkel Ödegaard 6574dfacfb feat(internal metrics): added some total stats to metrics reporting, closes #5865 2016-09-22 11:16:19 +02:00
Torkel Ödegaard 8c05a125dc fix(build): updated build.go setup 2016-09-22 10:33:43 +02:00
Torkel Ödegaard d8df421b43 fix(build): fixed issues with optimized build, fixes #6096 2016-09-22 10:22:16 +02:00
Torkel Ödegaard 39af588a94 fix(playlist): fixed sorting issue with playlist playback, fixes #5467 2016-09-22 10:06:03 +02:00
Torkel Ödegaard 598ac0e815 docs(http api): Clarified issue with admin http api docs, fixes #5834# 2016-09-22 09:09:12 +02:00
Torkel Ödegaard 2752dbd13a feat(templating): minor fixes to recent refactorings 2016-09-22 09:00:15 +02:00
Torkel Ödegaard 6257ae094c feat(sqlstore): added index for dashboard_id in dashboard_tag table, fixes #5868 2016-09-21 21:32:51 +02:00
Torkel Ödegaard d65fbcbb42 fix(graphite): fixed minor graphite lexer issue when nodes begin with octal syntax and end with dash identifier, fixes #6049# 2016-09-21 20:04:09 +02:00
Dan Cech 248ed2672f remove 'Github' from oauth login error messages 2016-09-21 09:42:06 -04:00
Dan Cech b387c1291d Merge branch 'master' into gnet-oauth
Conflicts:
	pkg/api/login_oauth.go
2016-09-21 09:39:35 -04:00
Torkel Ödegaard 9e26a4cfcb fix(templating): fixed unique filter after regex pass, fixes #6086 2016-09-21 15:30:11 +02:00
Torkel Ödegaard b4111d78e1 fix(security): fixed login issue that was a potential for social engineering, fixes #6014 2016-09-21 15:03:14 +02:00
Torkel Ödegaard 4a1693196c fix(mixed datasource): fixed issue when exporting dashboard using mixed data source, fixes #6032 2016-09-21 14:57:19 +02:00
Torkel Ödegaard 46ab09ed60 feat(links): fixed styling for dashboard links 2016-09-21 14:20:59 +02:00
bergquist b856d7e193 fix(prometheus): remove timerange from context 2016-09-21 13:55:42 +02:00
bergquist ae7345b04d style(prometheus): remove commented test 2016-09-21 13:46:26 +02:00
bergquist c084145cba refactor(prometheus): add timerange to alert context 2016-09-21 13:46:10 +02:00
Torkel Ödegaard dc3b614749 fix(submenu): fixed issue with submenu and annotation display, and annotation issue in table panel 2016-09-21 13:45:26 +02:00
bergquist af551b8825 refactor(tsdb): remove toUnix from timerange 2016-09-21 13:41:25 +02:00
bergquist 9534a04d3d fix(prometheus): only accept matrix result 2016-09-21 13:30:41 +02:00
bergquist ee0f1a0f36 feat(prometheus): handle more errors 2016-09-21 13:17:36 +02:00
Torkel Ödegaard d0b75cdb66 fix(templating): fixed issue with regex in query variable introduced by yesterdays big merged refactoring of template variable system 2016-09-21 11:38:59 +02:00
bergquist 3e73be8d2e feat(prometheus): improve error handling 2016-09-21 11:31:56 +02:00
Torkel Ödegaard 8b90eedb35 feat(table): table options tab form layout changes 2016-09-21 11:23:39 +02:00
bergquist 4c88db3e43 feat(prometheus): add support for legend formatting 2016-09-21 11:17:29 +02:00
Torkel Ödegaard 7c10af012e feat(singlestat): slight layout changes to options tab 2016-09-21 10:56:17 +02:00
Torkel Ödegaard 7b7ba46f12 fix(styleguide): fixed theme switching in style guide 2016-09-21 09:10:25 +02:00
Torkel Ödegaard 4f892ab9bf Merge branch 'master' of github.com:grafana/grafana 2016-09-21 09:03:57 +02:00
Torkel Ödegaard a01836e86d feat(adhoc filters): basic implementation for ad hoc filters for elasticsearch, #6038 2016-09-21 08:48:49 +02:00
Alexander Zobnin 392976981c fix(table panel): update Table Panel options tab styles. (#6087) 2016-09-21 07:40:12 +02:00
bergquist 43d8bd5a25 feat(prometheus): initial support for prometheus 2016-09-21 07:01:53 +02:00
Dan Cech 630a8ed8aa support setting default org role when adding user via grafana.net auth 2016-09-20 12:36:36 -04:00
Torkel Ödegaard 1b02632de8 fix(jslint): fixed lint issue 2016-09-20 17:36:20 +02:00
Dan Cech da95a23080 remove 'Github' from oauth login error messages 2016-09-20 11:36:13 -04:00
Torkel Ödegaard 0906312046 Merge branch 'adhoc-filters' 2016-09-20 17:34:57 +02:00
Torkel Ödegaard 15423e6e51 feat(adhoc filters): initial base mvp for adhoc filters are donecloses #6038 2016-09-20 17:34:38 +02:00
Torkel Ödegaard dfe0f91105 feat(adhoc): adhoc filters progress 2016-09-20 16:29:48 +02:00
Dan Cech dcd96c90e2 add grafana.net auth section to defaults.ini, normalize section heading line lengths 2016-09-20 10:09:20 -04:00
Alexander Zobnin 159a8bf734 fix(singlestat): update singlestat options tab styles. (#6084) 2016-09-20 15:29:10 +02:00
Torkel Ödegaard 6e429b8575 feat(adhoc filters): good progress on ad hoc filters and sync from to url, #6038 2016-09-20 11:57:43 +02:00
Alexander Zobnin 20f7eee8cc fix(graph): increase Y min and max range when series values are the same, (#6082)
fixes #6070, #6050.
2016-09-20 11:38:18 +02:00
Alexander Zobnin e926b01185 Bug fixes for flexible Y-Min and Y-Max settings (#6066)
* fix(flexible_y-min/max): fixed negative values support and added tests for this.

* fix(flexible_y-min/max): fixed issue with Y-Min and Y-Max values stored as numbers.
	Issue: panels with configured Y-Min and Y-Max don't display anything
		   after upgrade.
2016-09-20 11:23:31 +02:00
bergquist d2fb660557 fix(cli): remove unused logging 2016-09-20 10:10:27 +02:00
Carl Bergquist 630adfaf2b Merge pull request #6068 from fg2it/cross
Cross build support
2016-09-20 10:03:06 +02:00
bergquist ec452dd704 docs(conf): remove internal options since its not working atm 2016-09-20 08:18:15 +02:00
bergquist 21fcb2c643 Merge branch 'mtanda-cloudwatch_expand_template' 2016-09-20 08:14:01 +02:00
bergquist 46866add7e docs(changelog): add note about closing #5003 2016-09-20 08:13:53 +02:00
Mitsuhiro Tanda 71b5007ec7 refactor 2016-09-20 11:04:23 +09:00
Mitsuhiro Tanda 07cce5f6bd refactor 2016-09-20 11:04:23 +09:00
Mitsuhiro Tanda 481cc01242 (cloudwatch) add test for expand templater variables 2016-09-20 11:04:23 +09:00
Mitsuhiro Tanda 540436e9d5 inject templateSrv 2016-09-20 11:04:23 +09:00
Mitsuhiro Tanda 490141da82 (cloudwatch) expand multi select template variable 2016-09-20 11:03:35 +09:00
Dan Cech f5e2d61aef Merge branch 'master' into gnet-oauth 2016-09-19 16:48:40 -04:00
Dan Cech fc17ed351c support logging in with grafana.net credentials 2016-09-19 16:48:07 -04:00
Leandro Piccilli 128de86d49 Merge branch 'master' of github.com:grafana/grafana 2016-09-19 20:12:02 +02:00
Torkel Ödegaard cb522d58cd feat(templating): back to be able to continue work on ad hoc filters, #6048 2016-09-19 18:41:42 +02:00
Torkel Ödegaard 7a6fb70026 feat(templating): progress on variable system refactoring, #6048 2016-09-19 18:32:09 +02:00
Torkel Ödegaard 9d6ecc6361 feat(templating): progress on variable system refactoring, #6048 2016-09-19 18:06:36 +02:00
Steven Arnott 6e4ed4debd Altered DB for Prefix (#6062) 2016-09-19 17:12:43 +02:00
Torkel Ödegaard 945b5ee3cf feat(templating): progress on variable system refactoring, #6048 2016-09-19 17:03:36 +02:00
bergquist 87be56a4f0 fix: add goconvey to vendor 2016-09-19 16:22:39 +02:00
bergquist 3f00834f25 tech: remove unused dependencies 2016-09-19 15:21:53 +02:00
Torkel Ödegaard 8a796c5b4b feat(templating): progress on variable system refactoring, #6048 2016-09-19 15:15:15 +02:00
Torkel Ödegaard 5ded88fa4d feat(templating): progress on variable system refactoring, #6048 2016-09-19 11:34:08 +02:00
bergquist 1cb45c3416 fix(alertlist): better description 2016-09-19 10:11:33 +02:00
Torkel Ödegaard 524f505664 tech(templating): refactoring, updated dashboardSrv to typescript 2016-09-19 10:08:05 +02:00
bergquist 0bde2ae689 fix(alertlist): remove timerange checkbox option 2016-09-19 10:07:53 +02:00
fg2it 0984edd8b2 avoid copy of go dep. from vendor/ for release 2016-09-19 08:03:35 +02:00
fg2it 699c515369 enforce unconditional copy 2016-09-18 11:45:46 +00:00
fg2it c669de1169 add options to support cross build 2016-09-18 10:07:12 +00:00
fg2it 62a2f80f10 add option for grunt release 2016-09-18 09:13:00 +00:00
fg2it 174ea11b1c avoid copy of go dep. from vendor/ for release 2016-09-18 09:03:47 +00:00
Torkel Ödegaard 5ce3e40cc9 feat(templating): more work on new variable handling code, #6048 2016-09-17 15:27:53 +02:00
Torkel Ödegaard 4188c46f83 feat(templating): more work on new variable handling code, #6048 2016-09-17 11:28:45 +02:00
Torkel Ödegaard 46ebae7304 feat(templating): progress on template system rewrite #6048 2016-09-16 16:50:30 +02:00
bergquist 05d43999dc feat(alertlist): add support for time range lockdown
closes #5981
2016-09-16 15:55:38 +02:00
bergquist 77783c02cd fix(alerting): dont log null series
closes #6025
2016-09-16 14:59:54 +02:00
Torkel Ödegaard 7e8b279895 feat(templating): good progress on new variable update code, #6048 2016-09-16 10:48:03 +02:00
Torkel Ödegaard 852fd66c4c Update debian.md 2016-09-16 10:42:15 +02:00
Alexander Zobnin 4fa22e2158 Refactor: flexible Y-Min and Y-Max settings (#6051)
* Feature: Flexible Y-Min and Y-Max settings.

Y-Min and Y-Max is now string.
New usage for both Y-Min and Y-Max (Where X is a real number):
  >X Y-Max/Y-Max is auto if data is above X else X
  <X Y-Max/Y-Min is auto if data is below X else X
  =X Y-Max/Y-Min is scaled to current value +/- X
  ~X Y-Max/Y-Min is caled to average value +/- X

Example: Y-Min: <100 Y-Max: >200
If all points are within 100 and 200: Y-Min is 100 and Y-Max is 200
If some points are above 200: Y-Min is 100 and Y-Max is auto
If some points are below 100: Y-Min is auto and Y-Max is 200
if some points are below 100 and above 200: Y-Min and Y-Max is auto

Tests for new settings added

* Use parseFloat instead of implicit conversion

* feat(flexible_y-min/max): refactor.

* feat(flexible_y-min/max): added more tests.
2016-09-15 21:03:54 +02:00
bergquist a95808a7c3 docs(build): update required go version to 1.7 2016-09-15 16:29:25 +02:00
cmartin0077 f91f74be04 fix(influxdb) autocomplete measurement while typing, fixes #4278 (#5931) 2016-09-15 16:11:38 +02:00
bergquist 3c92f78ee7 feat(cli): add grafana version header to all request against grafana.net 2016-09-15 16:01:06 +02:00
Torkel Ödegaard 0f4a9f1ed1 feat(templating): began refactoring variables into rich behavioral classes 2016-09-15 14:53:36 +02:00
bergquist 3c966caa23 feat(cli): download all plugin dependencies 2016-09-15 14:38:11 +02:00
bergquist fc67ab1dce tech(build): add build grafana-server and cli to CI 2016-09-15 13:52:41 +02:00
bergquist dd70c535ed tech(build): upgrade ci build to 1.7.1 2016-09-15 13:43:37 +02:00
bergquist dede58915d Merge branch 'go_vendor' 2016-09-15 13:25:50 +02:00
bergquist 6be48269e2 tech(build): update build docs 2016-09-15 13:09:33 +02:00
bergquist d3a5d5c058 tech(build): update makefile 2016-09-15 13:02:16 +02:00
bergquist bda1f6493c tech(scripts): move benchmark script into /scripts 2016-09-15 13:00:26 +02:00
bergquist 283172e78c tech(build): remove unused file 2016-09-15 12:59:25 +02:00
bergquist 6489571179 move circle trigger to /scripts 2016-09-15 12:57:41 +02:00
bergquist 4afd7a5ef1 tech(build): update circle ci to build using vendor folder 2016-09-15 11:32:32 +02:00
Zihao Yu 6d843e3db5 update github oauth docs (#6042) 2016-09-15 11:29:03 +02:00
Torkel Ödegaard 94e5001c0e feat(templating): making progress on adhoc template variable, #6038 2016-09-15 09:18:28 +02:00
Alexander Zobnin 3be84b00d5 ES nested fields autocomplete (#6043)
* Re-create PR #4527 from @arcolife:
fixes #4526 - add nested support to fieldname autocomplete; Also:
    - update _mapping to first use given time range
      for deducting index mapping, then fallback to
      today's date based index name

* (elasticsearch): refactor getFields() method.

* (elasticsearch): add tests for getFields() method.

* (elasticsearch): fixed _get() method (tests was broken after @arcolife commit).
2016-09-15 07:30:08 +02:00
Torkel Ödegaard 83b9db51e3 feat(templating): great progress on adhoc filters, #6038 2016-09-14 17:36:28 +02:00
bergquist 6253476c73 tech(build): move dependencies to vendor folder 2016-09-14 16:14:27 +02:00
bergquist 4e567b5f02 feat(alert): order alerts by name.. instead of nothing. 2016-09-14 14:51:31 +02:00
bergquist a23b7f1371 fix(alerting): add missing evaldata field to set state command 2016-09-14 14:35:05 +02:00
bergquist 31892ed73c style(alertlist): remove unused code 2016-09-14 14:21:56 +02:00
bergquist 9dd8b3b408 wip 2016-09-14 14:12:19 +02:00
Torkel Ödegaard 0a44add6c9 feat(adhoc fiters): began work on ad-hoc filters, refactored submenu filters to use gf-form styles, #6038 2016-09-14 11:21:02 +02:00
bergquist d0f9623037 feat(alertlistpanel): support state filter
ref #5981
2016-09-14 10:49:05 +02:00
bergquist b49a642ca5 feat(alerting): extract method for join eval matches 2016-09-14 10:49:05 +02:00
bergquist d02f29fb02 feat(alertlist): basic alert list panel
ref #5981
2016-09-14 10:49:05 +02:00
Torkel Ödegaard babab7677c tech(lib upgrade): fixed issue with angular 1.5.8, so can revert revert of upgrade, that is we are no on latest angularjs, #6022 2016-09-14 10:45:56 +02:00
Torkel Ödegaard c594f9f2ad fix(lodash): corrected checked in lodash version 2016-09-14 10:13:33 +02:00
Torkel Ödegaard 649d9f9177 tech(lodash): upraded lodash to 4.15.0, closes #6021 2016-09-14 09:17:10 +02:00
Torkel Ödegaard 0fa0066cd9 tech(lodash): began migration work 2016-09-13 22:10:44 +02:00
Torkel Ödegaard 2146e69a11 revert angularjs upgrade 2016-09-13 21:26:28 +02:00
Torkel Ödegaard fffa26b876 tech(lib upgrade): updated jquery to 3.1, fixes #6034 2016-09-13 20:42:28 +02:00
Torkel Ödegaard 25139c77b9 tech(update angularjs): updated angularjs to 1.5.9 2016-09-13 20:33:49 +02:00
Torkel Ödegaard f5809c0209 fix(build): trying to fix build 2016-09-13 20:14:18 +02:00
Torkel Ödegaard 9cd517780f Merge branch 'master' of github.com:grafana/grafana 2016-09-13 16:25:48 +02:00
Torkel Ödegaard 8c30babdf1 feat(alerting): fixed build issues 2016-09-13 16:24:00 +02:00
Torkel Ödegaard 3af891d023 feat(alerting): restored alert history 2016-09-13 16:13:41 +02:00
Torkel Ödegaard b0c7e61ef8 feat(alerting): removed severity 2016-09-13 15:09:55 +02:00
wvl a73424d6af Secure Elasticsearch datasources a bit (#6031)
Instead of allowing users to access the
entire cluster, apply some sane restrictions.

Change-Id: Ib2e93722bf2e39d700d4afa713ff49ec556f2fdf
2016-09-13 15:04:21 +02:00
bergquist 6a723dff37 feat(notifications): set default value to false for new notifications 2016-09-13 14:25:48 +02:00
Torkel Ödegaard 6375418d8c Merge branch 'alerting' into grafana-annotations 2016-09-13 09:38:12 +02:00
Mitsuhiro Tanda 1264a1b3a6 (cloudwatch) add metrics/dimensions (#6020) 2016-09-13 09:08:33 +02:00
Jouni Kuusisto e53b815956 Enable "With Credentials" for InfluxDB datasource (#6018) 2016-09-13 08:57:39 +02:00
Carl Bergquist 52dc2db769 Merge pull request #6008 from rubycut/patch-1
Increase datasource limit to 1000 #3910
2016-09-13 08:38:07 +02:00
bergquist 3ba3d9d445 docs(changelog): add note about closing #2839 2016-09-13 08:14:43 +02:00
bergquist f7abf01efb Merge branch 'mtanda-template_sort' 2016-09-13 08:12:23 +02:00
bergquist 03fb152d4b tech(templates): extract sort method 2016-09-13 08:11:04 +02:00
bergquist 9c5436c648 feat(templating): set default sort order 2016-09-13 07:39:30 +02:00
bergquist e348822190 Merge branch 'template_sort' of https://github.com/mtanda/grafana into mtanda-template_sort 2016-09-13 07:16:34 +02:00
Carl Bergquist 1c7b76cb43 Merge pull request #6013 from mtanda/cloudwatch_kinesis_analytics
(cloudwatch) add metrics/dimensions
2016-09-12 17:03:25 +02:00
Mitsuhiro Tanda f998b86ade (cloudwatch) add metrics/dimensions 2016-09-12 23:47:31 +09:00
bergquist 157ab1ba36 fix(setting): broken code 2016-09-12 14:57:37 +02:00
bergquist 811b7188c4 docs(config): add docs for how to run grafana behind a reverse proxy 2016-09-12 14:47:21 +02:00
bergquist d7bf70a77b tech(tsdb): remove skip ssl setting. should be based on datasource settings 2016-09-12 13:37:00 +02:00
bergquist 6c5860d3e8 feat(metrics): measure proxy requests 2016-09-12 13:29:31 +02:00
Rubycut 501f89e829 Increase datasource limit to 1000 #3910 2016-09-12 10:45:17 +02:00
bergquist eb673fd16d fix(middleware): typo 2016-09-12 10:11:55 +02:00
Torkel Ödegaard 014b70ded9 fix(graph): fixed showing rendering error in inspector, fixes #5995 2016-09-10 12:00:33 +02:00
Torkel Ödegaard 7aab4a4a59 fix(table): fixed issue with using mixed data source in table panel, fixes #5999 2016-09-10 09:57:25 +02:00
Chen Chenglong 7b1c374f64 support connect ldap server with starttls (#5969)
* support connect ldap server with starttls

* add more doc for start_tls option
2016-09-10 09:40:56 +02:00
bergquist 4edb31723c fix(metrics): ignore datasource proxy requests 2016-09-09 13:53:50 +02:00
bergquist e7b56c6389 tech(metrics): move all request counters into one middleware 2016-09-09 13:28:19 +02:00
Torkel Ödegaard 4a2f2fba73 feat(alerting): show panel specific alert annotations, #5694 2016-09-09 11:30:55 +02:00
bergquist 583790e650 fix(alering): the crocdile turned on me > <
closes #5855
2016-09-09 07:42:07 +02:00
Carl Bergquist 51d2534f6a Merge pull request #5994 from mtanda/prometheus_fix_legend_template
(prometheus) fix template variable expansion in legend
2016-09-08 18:37:27 +02:00
Mitsuhiro Tanda 9d09e5bbd0 (prometheus) fix template variable expansion in legend 2016-09-09 00:46:04 +09:00
bergquist aa80b52c07 feat(alerting): make it possible to skip ssl verification for alerting https requests 2016-09-08 16:29:31 +02:00
bergquist 7b9099ef93 fix(query): requires all that all series are empty to set NoDataFound 2016-09-08 14:33:10 +02:00
Torkel Ödegaard 0ac4ece00d feat(annotations): refactoring annotations srv to typescript, #5990 2016-09-08 14:31:30 +02:00
bergquist 9511f89a22 fix(alerting): fixes bug in query conditions 2016-09-08 13:28:41 +02:00
Torkel Ödegaard 23de094a81 feat(alerting/annotations): fixed broken test 2016-09-08 13:22:30 +02:00
bergquist bec099cd84 tech: remove unused files 2016-09-08 11:41:56 +02:00
Torkel Ödegaard b8081b29fd Merge branch 'master' into grafana-annotations 2016-09-08 11:26:55 +02:00
Torkel Ödegaard d60bd77658 feat(annotations): added support to show grafana stored annotations in graphs, #5982 2016-09-08 11:25:45 +02:00
bergquist 3c9432b7e9 fix(metrics): default updateSince to ms 2016-09-08 10:48:11 +02:00
bergquist acf74cdacc fix(alerting): change execution time to ms 2016-09-08 10:45:10 +02:00
bergquist 5f934e0238 feat(emails): move bg color to main table 2016-09-08 09:59:51 +02:00
bergquist 21c5b543fb feat(profile): hide orgs list when it only contains one org 2016-09-08 09:03:29 +02:00
bergquist 592ae5a39a tests(alerting): fixes broken tests. pointers and stuff 🤷 2016-09-07 17:05:41 +02:00
bergquist 30f36fe2c4 docs(changelog): add note about merging #4718 2016-09-07 15:24:38 +02:00
bergquist f56d45ac56 feat(alerting): include default notifications in alert tab 2016-09-07 15:13:24 +02:00
bergquist c769148701 Merge branch 'emails' 2016-09-07 13:52:16 +02:00
bergquist 62372978e4 style: convert tabs to spaces 2016-09-07 13:51:17 +02:00
bergquist 59cb51dc6f test(emails): update fake data model 2016-09-07 13:47:57 +02:00
bergquist 9595916a5f feat: right align value metrics 2016-09-07 13:47:21 +02:00
bergquist 712061ab4f test(alerting): fixes broken unit tests 2016-09-07 11:45:38 +02:00
bergquist 166df66f66 docs(go): update go dep to 1.6 2016-09-07 11:28:22 +02:00
bergquist f26824049f Merge branch 'master' into emails 2016-09-07 11:19:52 +02:00
bergquist 374016b9b5 Merge branch 'kfitzpatrick-custom-github-style-oauth' 2016-09-07 11:07:30 +02:00
bergquist 10b3ee362c docs(oauth): add generic_auth to docs 2016-09-07 11:06:59 +02:00
bergquist 53dddf1a8f fix(oauth): remove github refs from generic auth 2016-09-07 10:55:46 +02:00
bergquist 3b6820ef03 feat(oauth): create struct for generic oauth and add config values 2016-09-07 10:34:56 +02:00
Torkel Ödegaard 0d083bad14 Merge branch 'master' of github.com:grafana/grafana
Conflicts:
	pkg/components/imguploader/s3uploader.go
2016-09-07 10:14:36 +02:00
Torkel Ödegaard 50b41130ca feat(alerting): fixed s3 upload issue, progress on alerting on null/missing data, updated ini package to get the support for line continuations 2016-09-07 10:11:00 +02:00
bergquist d1a7a23c84 test(imageupload): add more specific tests
torkels commit will fix this unit test :)
2016-09-07 10:05:01 +02:00
bergquist 4646723cbb Merge branch 'custom-github-style-oauth' of https://github.com/kfitzpatrick/grafana into kfitzpatrick-custom-github-style-oauth 2016-09-07 08:15:44 +02:00
Torkel Ödegaard fc8f0721cd Merge branch 'master' of github.com:grafana/grafana
Conflicts:
	pkg/services/alerting/eval_context.go
2016-09-06 20:40:49 +02:00
Torkel Ödegaard fbae6abb3c feat(alerting): progress on handling no data in alert query, #5860 2016-09-06 20:40:12 +02:00
bergquist 2e8d5ca519 docs(changelog): add note about updating systemd description 2016-09-06 17:32:18 +02:00
Carl Bergquist a02bef7d94 Merge pull request #5971 from cicku/master
Update systemd unit's description to be more understandable
2016-09-06 17:11:46 +02:00
Christopher Meng 6afb456bef Update systemd unit's description to be more understandable
Signed-off-by: Christopher Meng <i@cicku.me>
2016-09-06 16:29:15 +02:00
bergquist 04690ca920 feat(alerting): add support for retries
ref #5855
2016-09-06 15:09:49 +02:00
bergquist 0d7a871223 style(alerting): remove blank lines 2016-09-06 14:57:15 +02:00
bergquist 22805ce56b fix(alert_tab): fix broken alert history 2016-09-06 14:42:34 +02:00
bergquist 55b560a4a8 feat(alerting): filter notifications based on severity
closes #5851
2016-09-06 14:27:48 +02:00
Torkel Ödegaard b1ed641d73 fix(graph): fixed issue with duplicate metric calls when doing full page reload of graph in edit/view mode 2016-09-06 09:20:34 +02:00
Torkel Ödegaard 6b17cdbca6 feat(alerting): Save As removes alerts from panels, closes #5965 2016-09-06 09:14:11 +02:00
bergquist 2ca7284a56 tech(notifications): splitt into 3 queries
closes #5883
2016-09-06 08:43:15 +02:00
bergquist c893e5d241 feat(notifications): add support for default notifications
ref #5883
2016-09-05 21:35:37 +02:00
bergquist eb0396ad95 chore(tsdb): remove some logging 2016-09-05 21:35:24 +02:00
bergquist 015423b233 tech(gitignore): ignore vscode folder 2016-09-05 21:35:24 +02:00
Carl Bergquist b501590a75 fix(.editorconfig): correct spelling of indent_style
Unleash the fucking fury
2016-09-05 17:38:55 +02:00
bergquist d11bc57c37 feat(notifications): make it possible to send test alert notifications
closes #5847
2016-09-05 14:45:15 +02:00
Torkel Ödegaard 4c5461d4ba feat(alerting): alerting scheduling distribution, only distibutes it on seconds for now, not sub second distribution, #5854 2016-09-05 14:26:08 +02:00
Torkel Ödegaard e2f5bf1666 feat(alerting): fixed confirm delete dashboard issue 2016-09-05 13:38:25 +02:00
Torkel Ödegaard 395213abd7 feat(graph panel): more refactoring of #5917 2016-09-05 11:46:16 +02:00
Torkel Ödegaard 31642b472c refactoring(graph panel): #5917 2016-09-05 11:07:41 +02:00
Torkel Ödegaard 36252602af Merge branch 'master' into graph-panel-non-timeseries 2016-09-05 09:58:07 +02:00
bergquist daea38060f feat(notifications): redirect to notification list after creation. 2016-09-05 08:27:12 +02:00
Carl Bergquist 002cfb09cb Merge pull request #5953 from kobtea/fix/ng-ctrl
fix typo
2016-09-05 07:56:57 +02:00
Carl Bergquist ae2fe11166 Merge pull request #5957 from tdi/master
Changed EBS to ELB
2016-09-05 07:54:03 +02:00
Dariusz Dwornikowski 1b283d052b Changed EBS to ELB 2016-09-02 20:49:28 +02:00
Hiroaki Kobayashi 3645fb371c fix typo 2016-09-02 15:22:04 +09:00
bergquist 1955defc43 fix(api): add missing jsonData field to dto
The field is available on the dto so I guess is should be used.
Otherwise we should remove the field rather then not setting it.

ref #5944
2016-09-01 17:21:13 +02:00
bergquist 86aea89214 style(tsdb): extract some methods 2016-09-01 13:03:15 +02:00
bergquist d73547c0dc feat(tsdb): add missing content type and join url using path 2016-09-01 11:12:35 +02:00
bergquist 3d3365f242 tech(graphite): add more logging 2016-09-01 10:09:13 +02:00
bergquist 94389a3a44 tech(tsdb): improve logging for graphite client 2016-09-01 09:38:43 +02:00
bergquist 29b60329cc stupid stupid stupid me 2016-09-01 09:17:57 +02:00
bergquist 000eb669df tech(build): change min go version to 1.6 2016-09-01 08:13:48 +02:00
bergquist 7ddd625e9d feat(alerting): add slack/email support for execution errors 2016-08-31 15:55:01 +02:00
bergquist 4619a05f43 feat(alerting): save execution error message to annotations 2016-08-31 14:06:54 +02:00
bergquist c624f3d470 fix(alerting): measure state result instead of severity 2016-08-31 11:55:35 +02:00
bergquist e493015f54 fix(alerting): replace one hack with another hack 2016-08-31 10:10:39 +02:00
bergquist 53a9dec407 feat(alerting): move timestamp to new row
ref #5850
2016-08-31 09:48:58 +02:00
bergquist a5d49c9820 docs(config): add note about poodle vulnerabillity in <3.0
closes #3483
2016-08-31 08:34:15 +02:00
Trent White 00f82010f8 tweaked alert example to see if there were any visual changes 2016-08-30 12:11:00 -04:00
Trent White 852a8b77e4 table tweak 2016-08-30 12:04:26 -04:00
bergquist 1a70e69447 mark second td as last 2016-08-30 15:23:59 +02:00
bergquist ae428b9177 docs(changelog): add note about cli fix 2016-08-30 13:49:50 +02:00
bergquist 645293e590 fix(cli): improve error message for upgrade-all
closes #5885
2016-08-30 13:47:42 +02:00
bergquist b55b7cde4b fix(alerting): remove error message when model is valid again
closes #5921
2016-08-30 13:36:13 +02:00
bergquist 11a4ff0f8a feat(alerting): add basic UI for history in alert tab
ref #5850
2016-08-30 13:22:59 +02:00
bergquist 650a87dc05 feat(alerting): add alert history api endpoint
ref #5850
2016-08-30 09:32:56 +02:00
bergquist 1f1d232ea6 tech(githooks): remove symlink bash script 2016-08-30 07:48:15 +02:00
Trent White 90873cfe76 getting tables to behave on mobile 2016-08-29 16:55:19 -04:00
bergquist a2525f77d9 fix(config): comment sample value 2016-08-29 21:14:47 +02:00
bergquist ff9b95f4b3 docs(changelog): adds note about closing #5827 2016-08-29 16:24:23 +02:00
Carl Bergquist 47438ad9b9 Merge pull request #5926 from cmartin0077/5827-add-elapsed-influxdb
feat(influxdb) add elapsed(), fixes #5827
2016-08-29 16:21:59 +02:00
bergquist 9c92d8c4e9 fix(circle-ci): change to ubuntu 14 for CI 2016-08-29 16:12:42 +02:00
chrismartin0077 88ca695361 feat(influxdb) add elapsed(), fixes #5827 2016-08-29 07:05:10 -07:00
Carl Bergquist 7d4cc098a8 Merge pull request #5924 from cmartin0077/master
feat(api) HEAD response, fixes #3854
2016-08-29 15:54:21 +02:00
bergquist c0697b99d6 fix(alerting): adds support for basic auth
closes #5897
2016-08-29 15:50:11 +02:00
chrismartin0077 0050707134 feat(api) HEAD response, fixes #3854 2016-08-29 06:07:44 -07:00
cmartin0077 9c08d7aef5 fix(influxdb) fix tag value autocomplete with upper case values, fixes #5399 (#5919) 2016-08-29 13:03:54 +02:00
Torkel Ödegaard 9d69eaf07b Merge branch 'issue-5812-x-axis' of https://github.com/alexanderzobnin/grafana into graph-panel-non-timeseries 2016-08-27 09:53:10 +02:00
paulroche 5ba6bab237 redact provider_config (#5915) 2016-08-27 09:50:35 +02:00
Trent White ab4f06bc54 redesign email template 2016-08-26 14:25:39 -04:00
Alexander Zobnin 1bdd24ab9e Graph panel: fix merge conflicts introduced by alerting branch, issue #5812. 2016-08-26 21:22:46 +03:00
Alexander Zobnin 7a6d32138b Graph panel: refactor, issue #5812. 2016-08-26 20:47:12 +03:00
Alexander Zobnin 06af566f3f Graph panel: initial elastic raw document format support, issue #5812. 2016-08-25 22:03:42 +03:00
Trent White 35b90afdd0 initial styling 2016-08-24 17:41:29 -04:00
bergquist 5d821d3492 style(cli): minor fix 2016-08-24 20:27:41 +02:00
bergquist c087445d51 feat(cli): add db command to cli. 2016-08-24 15:46:26 +02:00
Alexander Zobnin d23e9fa3c3 Graph panel: table format support improvements, issue #5812. 2016-08-23 20:44:58 +03:00
Carl Bergquist 5b9366a9c3 tech(docker): update prometheus config 2016-08-23 11:50:17 +02:00
bergquist d0ca4ca3cd chore(alerting): remove unused files 2016-08-22 17:01:23 +02:00
bergquist 0cbedb4473 chore(api): remove commented endpoints 2016-08-22 16:56:28 +02:00
bergquist b8ccb82382 Merge branch 'alerting' 2016-08-22 16:10:36 +02:00
bergquist 7095a9d7e1 Merge branch 'master' into alerting 2016-08-22 15:31:33 +02:00
bergquist 3b8bba3e9f feat(alerting): add more fields to webhook 2016-08-22 15:11:27 +02:00
bergquist 1ff21b3ee8 docs(example): remove old properties 2016-08-22 14:55:16 +02:00
bergquist f3d6035c59 feat(alerting): add alerts for notification edits 2016-08-22 14:49:40 +02:00
Carl Bergquist 90388710af Merge pull request #5874 from mtanda/cw_api_gateway
(cloudwatch) add api gateway metrics/dimensions
2016-08-22 14:36:40 +02:00
Carl Bergquist 1c25d22f9e Merge pull request #5875 from mtanda/prometheus_time
(prometheus) refactor time calculation
2016-08-22 14:25:52 +02:00
bergquist 457eb91c2f docs(alerting): example dashboards 2016-08-22 13:30:57 +02:00
bergquist 77f9c24050 feat(alerting): add support for count reducer 2016-08-22 13:25:31 +02:00
bergquist 26c6437846 Merge branch 'master' into alerting 2016-08-22 12:27:08 +02:00
bergquist 69de3bcfc7 chore(example): remove example file and add links 2016-08-22 12:26:26 +02:00
bergquist 5a33679470 fix(alerting): remove has no value condition 2016-08-22 12:20:07 +02:00
Mitsuhiro Tanda d9fe41cc8d (prometheus) refactor time calculation 2016-08-20 22:51:33 +09:00
Mitsuhiro Tanda 6bd2bb04a7 (cloudwatch) add api gateway metrics/dimensions 2016-08-20 21:57:20 +09:00
bergquist 3077f992bb docs(changelog): add note about closing #5613 2016-08-19 15:19:08 +02:00
Carl Bergquist 9fdda0e269 Merge pull request #5613 from ctrochalakis/group_by_nodes
feat(graphite): added groupByNodes func def, closes #5612
2016-08-19 15:16:40 +02:00
bergquist 8d49b66dae Merge branch 'Scalingo-database_url' 2016-08-19 14:53:38 +02:00
bergquist aeb1b99648 docs(changelog): add note about closing #5456 2016-08-19 14:51:09 +02:00
bergquist 92a52ccdf7 docs(conf): add more info about using database.url 2016-08-19 14:48:40 +02:00
bergquist c663e32ea8 Merge branch 'database_url' of https://github.com/Scalingo/grafana into Scalingo-database_url 2016-08-19 13:15:44 +02:00
Alexander Zobnin c683c7a448 Graph panel: initial support for table format, issue #5812. 2016-08-18 21:59:28 +03:00
bergquist e415412691 feat(alerting): add image for howto popup
closes #5784
2016-08-18 18:36:58 +02:00
bergquist d3421c671c fix(alerting): make sure xorm can reset execution_error 2016-08-18 17:25:32 +02:00
bergquist 28ac05b1d1 docs(changelog): add filter for org switcher
closes #2609
2016-08-18 15:52:14 +02:00
bergquist 6d60d125d3 Merge branch 'Othyus-filter_orgs' 2016-08-18 15:48:47 +02:00
bergquist e3bbf96b37 Merge branch 'filter_orgs' of https://github.com/Othyus/grafana into Othyus-filter_orgs 2016-08-18 15:48:01 +02:00
Alexander Zobnin 284a6ee629 Graph panel: rename X axis modes, issue #5812. 2016-08-18 15:34:32 +03:00
bergquist def4632f08 test(alerting): add falsification test 2016-08-18 14:13:39 +02:00
bergquist cbe7f8b697 feat(config): add ascii dragon to sample.ini 2016-08-18 14:13:02 +02:00
bergquist d28df71c3b feat(alerting): add support for "no_value" evaluator 2016-08-18 11:44:25 +02:00
Torkel Ödegaard 09cdf3e9e1 feat(alerting): show execution errors in alert list 2016-08-18 11:37:35 +02:00
Torkel Ödegaard 5cf9711862 feat(alerting): added eval match to test results 2016-08-18 11:22:24 +02:00
Torkel Ödegaard 2f953d75a6 Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-18 10:07:45 +02:00
Torkel Ödegaard 9028d4899f feat(alerting): alert list fixes 2016-08-18 10:07:31 +02:00
bergquist 631acc2bf9 feat(alerting): only show available queries in alert query 2016-08-18 10:02:17 +02:00
Torkel Ödegaard 9b5a7b5ef6 feat(alerting): added alert howto text, closes #5784 2016-08-18 09:58:20 +02:00
Torkel Ödegaard 902314d3a1 Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-18 09:04:00 +02:00
Torkel Ödegaard 75a6c2b612 feat(alerting): added validation that checks valid data source and checks for template variables in graphite query, #5841 2016-08-18 09:03:46 +02:00
beejeebus 998ed097d3 Update aws-sdk from v1.0.0 to v1.4.1, fixes #5763. (#5813) 2016-08-18 08:19:53 +02:00
Roman Vynar d086f5d398 Align step with interval passed to Prometheus query using rate() (#5839) 2016-08-18 08:19:32 +02:00
bergquist 6d080904fa tech(alerting): empty string does not update database 2016-08-17 22:13:27 +02:00
bergquist 4154a4066f feat(alerting): handle all results, even due they have errors
DON'T SWALLOW THE ERR CARL
2016-08-17 22:12:08 +02:00
bergquist 158ce06167 fix(alerting): cleanup alerting example dashboard 2016-08-17 17:21:57 +02:00
Torkel Ödegaard eabba50bbf Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-17 15:49:18 +02:00
Torkel Ödegaard 2e7cb04490 feat(alerting): some final changes to alert list #5784 2016-08-17 15:48:58 +02:00
Torkel Ödegaard 63a283b4bc feat(alerting): working on alert state filters for alert list 2016-08-17 11:00:00 +02:00
bergquist 7d1e5b6374 tech(alerting): remove old crit/warn properties from dashboard 2016-08-17 10:53:24 +02:00
bergquist d8cfe22318 tech(alerting): add example dashboard with many alerts 2016-08-17 10:35:48 +02:00
Torkel Ödegaard da59d6547f Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-17 10:03:57 +02:00
Torkel Ödegaard 05697d5ecd Merge branch 'master' into alerting
Conflicts:
	conf/sample.ini
2016-08-17 10:03:33 +02:00
Torkel Ödegaard 6fae5a3b4e Merge branch 'v3.1.x' 2016-08-17 10:02:08 +02:00
Torkel Ödegaard 093563ac37 fix(metrics): restored prefix default to prod.grafana.. 2016-08-17 10:01:55 +02:00
Torkel Ödegaard f9b628ad0e Merge branch 'v3.1.x'
Conflicts:
	conf/defaults.ini
	conf/sample.ini
	pkg/metrics/graphite.go
	pkg/metrics/graphite_test.go
2016-08-17 09:53:46 +02:00
Torkel Ödegaard 2b2b64865b Merge branch 'master' of github.com:grafana/grafana 2016-08-17 09:42:52 +02:00
Torkel Ödegaard 159ea69e5d fix(OpenTSDB): correct content-type, fixes #4965 2016-08-17 09:42:40 +02:00
bergquist 6497b307c4 feat(alerting): save execution error upon state changed 2016-08-17 09:27:29 +02:00
bergquist 9915f15ed0 feat(alerting): adds sql layer for saving execution errors 2016-08-17 07:49:14 +02:00
Nozomi Anzai 157435a61c Fix to check white list when the frontend tries to connect DB 2016-08-17 14:33:59 +09:00
Torkel Ödegaard 0951da9c89 Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x 2016-08-16 22:31:51 +02:00
Torkel Ödegaard a5f0f508ea feat(inspector): fixed error handling, showing response body when data proxy returns text/html body 2016-08-16 22:31:26 +02:00
Torkel Ödegaard 434332f02d feat(alerting): changed fontsize in alert list 2016-08-16 21:26:54 +02:00
Alexander Zobnin 93515d0ffc Graph panel: display only bars in histogram mode, issue #5812. 2016-08-16 21:53:53 +03:00
Alexander Zobnin 113173be3d Graph panel: preserve series options (colors and other), issue #5812. 2016-08-16 21:12:35 +03:00
Alexander Zobnin 63886598e9 Graph panel: add value option (min, max, avg, etc), issue #5812. 2016-08-16 19:43:14 +03:00
Alexander Zobnin e39e5f9a9b Graph-panel: Add initial histogram option, issue #5812. 2016-08-16 18:45:57 +03:00
Torkel Ödegaard 15c11fdb54 Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-16 16:51:24 +02:00
Torkel Ödegaard 0b7fa3c19d feat(alerting): minor progress on alert list, #5784 2016-08-16 16:50:36 +02:00
bergquist de714e3398 tech(docker): add default db for postgres 2016-08-16 15:54:13 +02:00
bergquist c7cb93a33a style(alerting): improve codestyle for evaluators 2016-08-16 12:44:31 +02:00
bergquist fb7f2ae2e2 feat(alerting): adds within_range and outside_range evaluators
closes #5829
2016-08-16 12:37:07 +02:00
bergquist b5d92b6191 test(alerting): fix broken tests 2016-08-16 12:37:07 +02:00
Torkel Ödegaard 6b90587d27 feat(alerting): fixing failing go unit test 2016-08-16 10:22:16 +02:00
Torkel Ödegaard 65ce01fbff feat(alerting): fixing failing typescript build 2016-08-16 10:09:07 +02:00
Torkel Ödegaard fe9d591b28 Merge branch 'alerting' of github.com:grafana/grafana into alerting
Conflicts:
	pkg/services/sqlstore/migrations/alert_mig.go
2016-08-16 09:54:06 +02:00
Torkel Ödegaard f934081bcb feat(alerting): making progress on alerting list, #5784 2016-08-16 09:52:45 +02:00
Alexander Zobnin 7588ee974d Working on non time series X-axis feature. 2016-08-15 22:46:34 +03:00
bergquist aaabdbe33b feat(alerting): make post execution fields nullable 2016-08-15 20:26:36 +02:00
bergquist 2c2157f3b0 fix(alerting): rename events to evalMatches 2016-08-15 20:17:32 +02:00
Claudius Zingerli 08932b8ebc InfluxDB data source: Removed 'required' attribute from User/Password (#5820) 2016-08-15 17:56:46 +02:00
Torkel Ödegaard 9f29c54170 Merge branch 'query_part_refactor' into alerting
Conflicts:
	pkg/services/sqlstore/migrations/alert_mig.go
	pkg/services/sqlstore/migrations/heartbeat_mig.go
2016-08-15 17:54:42 +02:00
Torkel Ödegaard d8d951c810 feat(alerting): can now change reducer 2016-08-15 17:53:44 +02:00
Torkel Ödegaard 1418cbbd8b feat(query_part): refactoring query part 2016-08-15 17:20:45 +02:00
Torkel Ödegaard 0392fde34e feat(alerting): doing schema changes 2016-08-15 15:12:43 +02:00
bergquist 3195209878 tech(circle): rearrange build order 2016-08-15 14:01:20 +02:00
Torkel Ödegaard befca9bb2f feat(query parts): refactoring query part component to support actions 2016-08-15 13:51:55 +02:00
bergquist f7a9102523 feat(metrics): improve graphite settings
Fixes the broken support for overriding settings with ENV variables.
closes #5769
2016-08-15 09:59:55 +02:00
bergquist cf6736d480 fix(metrics): add ending dot for graphite prefix 2016-08-15 09:58:32 +02:00
bergquist 41790c6709 fix(metrics): hide none existing metrics settings 2016-08-15 09:58:23 +02:00
bergquist ebecc5e5a0 fix(metrics): make metrics cfg backwards compatible 2016-08-15 09:57:49 +02:00
Torkel Ödegaard 2c1b893c55 feat(metrics): minor fix for internal metrics fix PR #5758 2016-08-15 09:57:23 +02:00
bergquist 0524d0c625 fix(metrics): replaces . with _ in instance name
closes #5739
2016-08-15 09:57:00 +02:00
bergquist 2b2e015d62 feat(cli): add default plugin folder for MAC OS
closes #5806
2016-08-15 09:18:56 +02:00
Torkel Ödegaard cd9bd5be17 Update CHANGELOG.md 2016-08-15 09:15:20 +02:00
bergquist 7ce13ef075 docs(changelog): add note about fixing #5806 2016-08-15 09:13:49 +02:00
bergquist 7a913f77d3 feat(cli): add default plugin folder for MAC OS
closes #5806
2016-08-15 08:54:35 +02:00
bergquist 4d0982a21c Merge branch 'master' into alerting 2016-08-15 07:58:30 +02:00
Torkel Ödegaard 0ea3458f69 Merge branch 'v3.1.x'
Conflicts:
	public/app/features/dashboard/dynamic_dashboard_srv.ts
2016-08-14 14:47:14 +02:00
Torkel Ödegaard 58df60f670 fix(templating): another fix for repeating panels and having old panels/scoped vars stuck after switching repeat variable, fixes #5795 2016-08-14 14:45:49 +02:00
Julian Einwag cbf0e77add fix repeat panels (#5796) 2016-08-14 13:59:16 +02:00
Torkel Ödegaard 1eca0d7c53 docs(): updated docs 2016-08-14 13:58:04 +02:00
Torkel Ödegaard 76e4b7ce3b Merge branch 'master' of github.com:grafana/grafana 2016-08-14 13:51:09 +02:00
Julian Einwag deb245f526 fix repeat panels (#5796) 2016-08-14 13:50:49 +02:00
Mitsuhiro Tanda 7a1011ac39 (cloudwatch) support ApplicationELB (#5802) 2016-08-14 13:21:17 +02:00
Torkel Ödegaard 8499d32d0f Merge branch 'master' of github.com:grafana/grafana 2016-08-14 13:18:55 +02:00
Torkel Ödegaard d894c13718 fix(graph): fixed issue with tooltip introduced in recent commit 2016-08-14 13:18:23 +02:00
Torkel Ödegaard 46ea3ed971 fix(godep): fixed godep dependency 2016-08-13 13:07:55 +02:00
bergquist fb7a6c0764 feat(alerting): list all series in alert email 2016-08-13 12:50:51 +02:00
Carl Bergquist a530df8449 Merge pull request #5809 from kou/patch-1
Update the number of ways
2016-08-13 12:18:01 +02:00
bergquist c4e905474a feat(alerting): improve email notifications layout 2016-08-13 11:24:03 +02:00
Kouhei Sutou 46630df88d Update the number of ways 2016-08-13 14:12:29 +09:00
Torkel Ödegaard 74dbd7fb36 feat(alerting): disable visual thresholds while alert is enabled 2016-08-12 13:19:06 +02:00
Torkel Ödegaard 7242dc2ebe feat(thresholds): hide threshold handles when second y axis is shown 2016-08-12 10:50:31 +02:00
Torkel Ödegaard 597103a1f2 Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-12 10:32:58 +02:00
Torkel Ödegaard 06210a4a22 feat(thresholds): refactoring and adding many unit tests 2016-08-12 10:32:46 +02:00
bergquist 1dcae464fe chore(notifications): remove commented test 2016-08-12 10:17:21 +02:00
bergquist 16e75a3036 feat(alerting): add alert message to slack integration 2016-08-12 10:12:04 +02:00
bergquist e7613b8bc0 fix(metrics): typo 2016-08-12 08:15:53 +02:00
bergquist 2fa97427eb fix(metrics): add ending dot for graphite prefix 2016-08-12 08:06:54 +02:00
Leandro Piccilli f844cd844b Fix for annotations query on ES 5.x 2016-08-11 22:24:58 +02:00
Torkel Ödegaard 895cff78b6 feat(thresholds): more work on thresholds, within and outside types no work 2016-08-11 22:22:15 +02:00
Torkel Ödegaard 7a5dda9e7c Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-08-11 21:33:29 +02:00
Torkel Ödegaard 6793eed6c5 feat(thresholds): dragging thresholds works again 2016-08-11 21:32:59 +02:00
Torkel Ödegaard 224ceb0ae5 feat(thresholds): updated design for grab handles 2016-08-11 21:22:40 +02:00
bergquist 937726499f feat(alerting): add global usage metrics for alerting
closes #5786
2016-08-11 21:12:46 +02:00
Torkel Ödegaard 89ca15f3a1 feat(thresholds): lots of progress on thresholds 2016-08-11 18:25:41 +02:00
bergquist ae15de119f Merge branch 'master' into alerting 2016-08-11 17:01:35 +02:00
bergquist f07b2ac446 fix(metrics): hide none existing metrics settings 2016-08-11 17:00:09 +02:00
bergquist cb6fd4ca78 test(alerting): fixes broken unit test 2016-08-11 16:55:08 +02:00
bergquist 99e99922b4 feat(alerting): add support for uploading images to webdav.
closes #5770
2016-08-11 16:48:54 +02:00
Torkel Ödegaard 72a67b39f1 feat(thresholds): more work thresholds 2016-08-11 15:18:21 +02:00
Torkel Ödegaard 6881db87bb Merge branch 'alerting' into thresholds_v3 2016-08-11 10:31:39 +02:00
Torkel Ödegaard 8878a55dc6 Merge branch 'master' into alerting 2016-08-11 10:31:15 +02:00
Torkel Ödegaard da6ac07b1d Merge branch 'v3.1.x' 2016-08-11 10:29:48 +02:00
Torkel Ödegaard 0d26bc63ae fix(graphite): minor fix/improvement to graphite error handling when doing metric exploration in query editor, fixes #5778 2016-08-11 10:29:28 +02:00
Torkel Ödegaard 780ec92dd8 fix(docs): fixed plugins docs, fixes #5777 2016-08-11 07:39:34 +02:00
Jeremy Bingham 7150571e60 Mac grafana wrapper script (#5779)
* One of the homebrew folks first asked for a wrapper script to make launching grafana easier. Later I was asked to remove it and submit it upstream, so here it is.

* add instructions for installing grafana HEAD from git with homebrew back to the docs
2016-08-11 07:37:35 +02:00
Jeremy Bingham 2c4ab4af02 Mac grafana wrapper script (#5779)
* One of the homebrew folks first asked for a wrapper script to make launching grafana easier. Later I was asked to remove it and submit it upstream, so here it is.

* add instructions for installing grafana HEAD from git with homebrew back to the docs
2016-08-11 07:36:14 +02:00
Torkel Ödegaard fbb8f8e691 feat(alerting): making progress on alert handles 2016-08-10 21:37:10 +02:00
Torkel Ödegaard 2639c38912 fix(threshold): remove old threshold properties 2016-08-10 20:44:39 +02:00
Torkel Ödegaard bdb8d77562 feat(thresholds): migration from previous threshold schema 2016-08-10 20:41:21 +02:00
Alexander Zobnin 124961a9e3 Explicitly set charset to utf-8 in viewJson(), fixes #5719. (#5774) 2016-08-10 20:23:58 +02:00
Torkel Ödegaard 7c0675798e feat(thresholds): new thresholds options are looking ok 2016-08-10 17:32:34 +02:00
Torkel Ödegaard 0f8c8517e3 feat(thresholds): adding a new form of thresholds options 2016-08-10 15:27:33 +02:00
bergquist 95c1a4a936 feat(alerting): implement more simple reducers 2016-08-10 14:06:17 +02:00
bergquist f2436fc7cd test(alerting): add tests for simple reducer 2016-08-10 13:52:15 +02:00
Torkel Ödegaard 4fd8b2ace4 Merge branch 'master' into alerting 2016-08-10 12:53:41 +02:00
Torkel Ödegaard a56cf9d6fd Merge branch 'v3.1.x' 2016-08-10 12:44:43 +02:00
Torkel Ödegaard 9a7e0eaf42 fix(dashboard): fixed drag and drop issue in chrome, fixes #5767 2016-08-10 12:43:36 +02:00
bergquist 03f0bc46a1 fix(metrics): make metrics cfg backwards compatible 2016-08-10 11:15:49 +02:00
Torkel Ödegaard c5d0c9f088 Merge branch 'v3.1.x' 2016-08-10 08:42:30 +02:00
Torkel Ödegaard c0301349fb docs(): update mac docs 2016-08-10 08:39:57 +02:00
Torkel Ödegaard 624e30e743 fix(docs): minor doc fixes, fixes #5751 2016-08-10 08:38:08 +02:00
Torkel Ödegaard d95545b5d3 feat(graph tooltip): refactoring PR #3063 2016-08-10 08:31:53 +02:00
Torkel Ödegaard 34804bda6d Merge branch 'issue-3063' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-issue-3063 2016-08-10 08:08:57 +02:00
Torkel Ödegaard d49f0569f2 feat(metrics): minor fix for internal metrics fix PR #5758 2016-08-10 08:06:10 +02:00
Torkel Ödegaard 61756d2ae6 feat(alerting): removed delete button 2016-08-10 07:58:40 +02:00
bergquist de47710f1e tech(circle): rearrange build order 2016-08-09 14:28:44 +02:00
bergquist 5b57210aeb fix(metrics): replaces . with _ in instance name
closes #5739
2016-08-09 14:06:03 +02:00
bergquist d6fdb598b0 fix(alerting): gofmt 2016-08-08 14:46:47 +02:00
Alexander Zobnin f8f7543d4a Fix Elastic datasource tests - use moment.utc() instead moment() to prevent timezone-related issues, fixes #5733. (#5746) 2016-08-07 12:01:53 +02:00
bmundt 6d1dd95ab3 adds check for making datasource template variables children of other template variables (#5717) 2016-08-05 10:03:46 +02:00
hc4 4d40326706 Add refresh query parameter parsing (#5729) 2016-08-04 18:58:59 +02:00
Torkel Ödegaard 34ea7312bc docs(): added missing snapshot config options, fixes #5708 2016-08-02 09:35:15 +02:00
Torkel Ödegaard 01e5fd623b Update latest.json 2016-08-02 09:31:02 +02:00
Torkel Ödegaard e044a65d08 feat(alerting): updated 2016-08-01 22:15:28 +02:00
Alexander Zobnin 2c283ddd77 Fixed shared tooltip time calculation. Fixes #3063. 2016-08-01 20:41:15 +03:00
Torkel Ödegaard 1edd224168 feat(alerting): fixing failing unit tests 2016-08-01 14:34:58 +02:00
Torkel Ödegaard e6c4e47849 updated dependencies 2016-08-01 14:15:41 +02:00
Torkel Ödegaard 2bfccd77d4 docs(): updated release links 2016-08-01 12:47:55 +02:00
Torkel Ödegaard 84d7305d37 docs(): updated release links 2016-08-01 12:45:31 +02:00
Torkel Ödegaard fbad17d3a1 docs(): updated changelog 2016-08-01 12:27:03 +02:00
Torkel Ödegaard 317ffd1b68 Merge branch 'master' of github.com:grafana/grafana 2016-08-01 12:24:01 +02:00
Torkel Ödegaard 49abb205a0 Merge branch 'v3.1.x'
Conflicts:
	public/sass/_variables.light.scss
2016-08-01 12:23:36 +02:00
Torkel Ödegaard a4d27083d0 fix(tests): fixed unit test broken in recent dynamic dashboard fix 2016-08-01 12:20:16 +02:00
Torkel Ödegaard a9cf7cd4f0 fix(light theme): fixes issue with hidden queries in light theme, fixes #5697 2016-08-01 11:58:12 +02:00
Torkel Ödegaard 44d1393480 fix(templating): fixed issue with panel/row repeat when saving dashboard, fixes #5591 2016-08-01 10:50:33 +02:00
Torkel Ödegaard b46af0069e fix(footer): fixed link in footer, #5690 2016-08-01 10:09:43 +02:00
Torkel Ödegaard 357358898d feat(annotations): working on alert annotations, #5694 2016-08-01 10:07:00 +02:00
Torkel Ödegaard c5e90b1801 feat(alerting): more polish on alerting tab UI 2016-07-31 21:58:12 +02:00
Torkel Ödegaard 3b69c8f687 feat(alerting): new design for alert tab with sidemenu 2016-07-31 09:31:32 +02:00
Torkel Ödegaard 2b276d5cd1 feat(alerting): working on alert notification and image rendering 2016-07-30 13:36:21 +02:00
slqgsm e17b1548e8 Release there were some issues with the way removing columns was being implemented.
So I decided to scrap that, and go for just having a hidden column style. This is what
@madshall did in his enhanced table pull request, so this is basically the hidden
column style feature form his pull request.
2016-07-29 20:21:59 +00:00
slqgsm 93cb08d9d0 fixed typo and issue of not being able to add fields in table transformation 2016-07-29 16:30:38 +00:00
Torkel Ödegaard f9ddfb4337 Merge branch 'master' into alerting 2016-07-29 15:07:47 +02:00
Torkel Ödegaard 79138e211f Merge branch 'v3.1.x' 2016-07-29 15:07:17 +02:00
Torkel Ödegaard 741b7353c1 Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x 2016-07-29 15:06:09 +02:00
Torkel Ödegaard c4e7a3ae89 fix(png rendering): another fix for #5606 2016-07-29 15:04:51 +02:00
Torkel Ödegaard 4fc50742a0 feat(alerting): working on image rendering with alert notifications 2016-07-29 14:55:02 +02:00
slqgsm afb55fb3bd fixed to allow adding columns back in 2016-07-29 12:25:36 +00:00
Torkel Ödegaard f9a28d3306 feat(alerting): slack notification improvements, #5679 2016-07-29 13:41:42 +02:00
slqgsm e420bee2ab First commit for this branch, to allow removing of columns in table transformation 2016-07-28 21:44:07 +00:00
Torkel Ödegaard 01da3f6cb2 feat(alerting): worked on improving slack alerts 2016-07-28 17:03:53 +02:00
Torkel Ödegaard 717cce014b feat(alerting): refactoring 2016-07-27 17:07:44 +02:00
Torkel Ödegaard 6aaf4c97a2 feat(alerting): refactoring conditions out to seperate package 2016-07-27 16:18:10 +02:00
Torkel Ödegaard ae5f8a76d9 feat(alerting): lots of progress on notifications, refactored them out to their own package, restored webhook notitication and added slack notification 2016-07-27 12:09:55 +02:00
Torkel Ödegaard 77c66a88d9 Merge branch 'master' into alerting 2016-07-27 10:22:00 +02:00
Torkel Ödegaard c997923b17 Merge branch 'master' of github.com:grafana/grafana 2016-07-27 10:21:38 +02:00
Torkel Ödegaard e789d0df63 Merge branch 'v3.1.x' 2016-07-27 10:21:16 +02:00
Torkel Ödegaard 89dc3b88d1 fix(test): fixed failing test caused by recent change 2016-07-27 10:20:48 +02:00
Torkel Ödegaard c2eeb6dda0 fix(alerting): minor notification fix 2016-07-27 10:15:21 +02:00
Thib17 732c84c230 Enable scaling down seconds unit s > ms > µs > ns (#5642) 2016-07-27 10:10:01 +02:00
Torkel Ödegaard cde1bbff78 Merge branch 'alert_conditions' into alerting 2016-07-27 09:52:42 +02:00
Torkel Ödegaard c675ffc682 Merge branch 'master' into alerting 2016-07-27 09:45:16 +02:00
Mark Henderson 39be7cf7d7 Added grafana-cli command. Added public documentation for specifying plugin version when installing. (#5665) 2016-07-27 09:41:33 +02:00
Torkel Ödegaard e8e8463828 docs(): updated changelog 2016-07-27 09:39:46 +02:00
Torkel Ödegaard e4592c8d53 Merge branch 'v3.1.x' 2016-07-27 09:36:46 +02:00
Torkel Ödegaard 971e2d62f1 fix(zoom): fixed zoom in and out issues when graph is embedded, fixes #5666, fixes #4489 2016-07-27 09:36:35 +02:00
Leandro Piccilli 3057c9747c Change size on terms aggregation for ES 5.x 2016-07-26 22:05:49 +02:00
Torkel Ödegaard 5155c8a753 feat(templating): set default min span to 4, fixes #5662 2016-07-26 17:20:27 +02:00
Torkel Ödegaard 0b0f6b0848 feat(alerting): made very basic threshold viz work again 2016-07-26 14:35:42 +02:00
Torkel Ödegaard 0d9b98da6d feat(alerting): progress on email notifications 2016-07-26 12:29:52 +02:00
Torkel Ödegaard 6cb1dafb1d feat(alerting): progress on notifications 2016-07-25 16:26:28 +02:00
Torkel Ödegaard 8df558dece feat(notifications): refactoring notification handling 2016-07-25 13:52:17 +02:00
Torkel Ödegaard 9f14b209bd fix(html): moved body tag, fixes #5648 2016-07-25 12:21:51 +02:00
Torkel Ödegaard d4e2bb70e9 Merge branch 'v3.1.x'
Conflicts:
	package.json
2016-07-25 12:20:59 +02:00
Torkel Ödegaard 66a72e9ece changed version to 3.1.1 2016-07-25 12:20:21 +02:00
Torkel Ödegaard ee0d6ecfe6 Merge branch 'master' of github.com:grafana/grafana 2016-07-25 12:04:58 +02:00
Torkel Ödegaard def4d8f8dc docs(): updated changelog 2016-07-25 12:04:43 +02:00
Torkel Ödegaard 9fd7676846 Merge branch 'v3.1.x' 2016-07-25 12:03:40 +02:00
Torkel Ödegaard 0de0f4d014 feat(templating): fixed issue with template variables set to reload on dashboard load being issued multiple times, fixes #5637 2016-07-25 12:02:59 +02:00
bmundt f6b1d5a84a Added '!=' option for where clause in the influx query builder (#5646) 2016-07-25 10:36:38 +02:00
Torkel Ödegaard 9f777a535b fix(): removed dashboard version to schema version migration 2016-07-23 13:29:48 +02:00
Torkel Ödegaard 6d28365e84 docs(): updated changelog 2016-07-23 12:59:07 +02:00
Torkel Ödegaard 7a2e8324b9 Merge branch 'v3.1.x' 2016-07-23 12:54:23 +02:00
Torkel Ödegaard ddf579f204 fix(mixed data sources): fix when using two graphite data sources in mixed mode, fixes #5617 2016-07-23 12:54:11 +02:00
Torkel Ödegaard b943e41434 Merge branch 'master' of github.com:grafana/grafana 2016-07-23 12:01:48 +02:00
Torkel Ödegaard 4a33e2023f Merge branch 'v3.1.x' 2016-07-23 12:01:27 +02:00
Torkel Ödegaard 3abbf08a17 tech(): upgrade jquery to 2.2.4, closes #5627 2016-07-23 12:00:45 +02:00
Torkel Ödegaard 474a821767 fix(elasticsearch): fix json escape logic when doing terms template value lookup, fixes #5485 2016-07-23 11:52:49 +02:00
Torkel Ödegaard 14eba30f63 feat(alerting): more work on notifications 2016-07-23 11:50:48 +02:00
Peter Bonney 62e162c44c Update dashboard.md (#5640)
The key returned by `GET /api/dashboards/db/:slug` is "dashboard" (not "model").
2016-07-23 11:46:20 +02:00
Torkel Ödegaard a6c6094775 feat(alerting): started reworking notifications 2016-07-22 16:45:17 +02:00
Mitsuhiro Tanda 490ea18638 (cloudwatch) fix, don't block by white list (#5632) 2016-07-22 13:15:18 +02:00
Torkel Ödegaard 7eb2d2cf47 feat(alerting): working on state management 2016-07-22 13:14:09 +02:00
Torkel Ödegaard 783d697529 feat(alerting): more output when testing alert 2016-07-21 21:54:12 +02:00
Torkel Ödegaard b073fe0eba feat(alerting): more work on handling result and saving state 2016-07-21 17:31:46 +02:00
Torkel Ödegaard f0fc336e88 feat(alerting): worked on alert condition eval tests 2016-07-21 16:19:28 +02:00
Torkel Ödegaard 3ad38eefd2 feat(alerting): test results look better 2016-07-21 13:57:19 +02:00
Torkel Ödegaard f6a160b270 feat(alerting): testing alert is starting to work 2016-07-21 13:09:12 +02:00
Torkel Ödegaard 9e91aacd34 feat(alerting): progress on testing alerts 2016-07-21 10:29:11 +02:00
Leandro Piccilli df9ace8ac2 Change annotations query for ES 5.x 2016-07-21 00:42:36 +02:00
Torkel Ödegaard fb636344a6 feat(alerting): began work on testing alert rule from UI without having to save it 2016-07-20 16:13:36 +02:00
Torkel Ödegaard 0ce55600bb feat(alerting): progress on alerting backend 2016-07-20 14:28:02 +02:00
Torkel Ödegaard 3219d98a92 feat(alerting): starting work on condition evaluation 2016-07-20 09:30:31 +02:00
Torkel Ödegaard f872d5cfa3 feat(alerting): more refactoring work in backend code 2016-07-19 22:36:59 +02:00
Torkel Ödegaard 2a30baef05 feat(alerting): progress on updating extractor to work with new alert model 2016-07-19 21:00:41 +02:00
Torkel Ödegaard f60efed5d8 feat(alerting): progress on refactoring backend alert rule model 2016-07-19 17:45:37 +02:00
Torkel Ödegaard 20fcffb71e feat(alerting): working on alerting conditions model 2016-07-19 16:15:26 +02:00
Christos Trochalakis 824bf9f029 feat(graphite): added groupByNodes func def, closes #5612 2016-07-19 14:23:13 +03:00
Torkel Ödegaard f38c954639 feat(alerting): more work on alert conditions 2016-07-19 11:54:41 +02:00
Torkel Ödegaard 29d308e447 feat(alerting): refactoring alert model to use conditions concept 2016-07-19 11:24:27 +02:00
Torkel Ödegaard 0f555d6ab5 fix(alerting): minor fix 2016-07-19 09:28:49 +02:00
Torkel Ödegaard b0fe69822a Merge branch 'master' into alerting
Conflicts:
	public/app/core/services/alert_srv.ts
	public/app/partials/confirm_modal.html
2016-07-18 18:22:35 +02:00
Torkel Ödegaard 3f861dd039 Merge branch 'v3.1.x' 2016-07-18 16:27:27 +02:00
Torkel Ödegaard 3ae327320a fix(prometheus): fixed svg link in prometheus dashboard, fixes #5604 2016-07-18 16:27:02 +02:00
Torkel Ödegaard 78d0badffe Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x 2016-07-18 16:22:31 +02:00
Torkel Ödegaard 575b015fe0 fix(panel rendering): Fixed png panel rendering timing issue, #5606 2016-07-18 16:18:00 +02:00
Torkel Ödegaard b9a2546a10 fix(iframe): fixed issue with using full height of iframe, fixes #5605 2016-07-18 16:17:46 +02:00
Torkel Ödegaard 7ad0904fdb :Merge branch 'master' of github.com:grafana/grafana 2016-07-18 16:16:44 +02:00
Torkel Ödegaard b9c4107361 docs(): updated changelog 2016-07-18 16:16:35 +02:00
Torkel Ödegaard ffd865c7ca fix(panel rendering): Fixed png panel rendering timing issue, #5606 2016-07-18 16:13:50 +02:00
Torkel Ödegaard e507bb6dd7 fix(iframe): fixed issue with using full height of iframe, fixes #5605 2016-07-18 15:41:06 +02:00
Torkel Ödegaard 8f8ee28e64 docs(): updated changelog 2016-07-18 14:06:31 +02:00
Torkel Ödegaard 6c6dae1c92 Merge branch 'elasticsearch_precision_threshold' of https://github.com/lucasrodcosta/grafana into lucasrodcosta-elasticsearch_precision_threshold 2016-07-18 13:56:34 +02:00
Torkel Ödegaard c82d5f86ac fix(singlestat): fixed minor editor blur issue on decimal option that did not cause update of rendered value, fixes #5004 2016-07-18 11:24:41 +02:00
Leandro Piccilli 2a501d6cdb Merge branch 'master' of https://github.com/grafana/grafana 2016-07-18 10:34:11 +02:00
Loren West 51940fa209 Tooltip detatch too soon on mobile click (#5598)
* Tooltip detatch too soon on mobile click

* Fixed syntax error
2016-07-18 09:04:06 +02:00
Torkel Ödegaard f13b869aa4 feat(alerting): work on alerting 2016-07-14 13:32:16 +02:00
Jack Meagher 2c77f2231e Do not substitute #[A-Z] in graphite target when invalid ref (#5581)
* Do not substitute #[A-Z] in graphite target when invalid ref

In the case where #[A-Z] does not reference another query, such as #J when there
are only 2 queries, do not perform the substitution. This prevents the situation
target name without a query labelled J (10th query).

* Do not substitute #[A-Z] in graphite target when invalid ref

In the case where #[A-Z] does not reference another query, such as #J when there
are only 2 queries, do not perform the substitution. This prevents the situation
target name without a query labelled J (10th query).
2016-07-14 10:29:22 +02:00
Torkel Ödegaard 624cd6fc0a feat(alerting): cleanup, removed alert changes table and code 2016-07-13 11:58:55 +02:00
Torkel Ödegaard 82eebf64b6 fix(graph): Fix so that zoom works even when no data exists, fixes #5570 2016-07-13 10:02:53 +02:00
Torkel Ödegaard cc5c45112a Merge branch 'master' of github.com:grafana/grafana 2016-07-12 15:55:10 +02:00
Torkel Ödegaard 4bb4d7f7d3 Merge branch 'v3.1.x' 2016-07-12 15:54:31 +02:00
Torkel Ödegaard 383b313027 Update CHANGELOG.md 2016-07-12 15:17:04 +02:00
Torkel Ödegaard 0f9f903e09 Update latest.json 2016-07-12 15:16:46 +02:00
Torkel Ödegaard 6c2a61001a docs(): updated download links 2016-07-12 13:19:20 +02:00
Torkel Ödegaard d007363e7c bumbped version from beta1 to stable 2016-07-12 08:42:28 +02:00
Torkel Ödegaard b2acac3a41 feat(apps): more polish on app dashboard save warning, #5529 2016-07-12 08:41:56 +02:00
Torkel Ödegaard f3db2fa262 feat(plugins): hide link on small screens 2016-07-11 19:16:35 +02:00
Torkel Ödegaard 5b4fd8e9c8 Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x 2016-07-11 19:07:32 +02:00
Torkel Ödegaard 81af8f072c feat(links): updated links to grafana.net 2016-07-11 19:07:16 +02:00
Torkel Ödegaard d9096110f8 Merge branch 'master' into alerting
Conflicts:
	pkg/api/dashboard.go
	pkg/models/dashboards.go
	pkg/services/sqlstore/dashboard.go
2016-07-11 18:28:07 +02:00
Torkel Ödegaard 817f24e6fb Merge remote-tracking branch 'origin/development' 2016-07-11 15:24:24 +02:00
Bryan Irvine eafb0f3248 get rid of weird line breaks and use action (#4926)
* get rid of weird line breaks and use action

When using restarts/stops/starts you'd get weird output sometimes, Strange line breaks 'OK' status overlapping the next lines etc...
This fixes those moves OK to the right place and colorizes them correctly.

* added : for more uniformity

when doing a restart the output looked like:
Stopping Grafana Server ...                                [  OK  ]
Starting Grafana Server: ...                               [  OK  ]

The Stopping line did not have a colon. I added it just to make it look better.
2016-07-11 15:23:39 +02:00
stuart nelson eb35f8cb89 [prometheus] Use panelId and target.refId for requestId
Using these two values ties requests to a
particular query position within a panel, ensuring
that requests are canceled if:

- Duplicate requests with the same query are sent
- Requests from the same query position (but a
different query) are sent

The last point is important as it identifies
queries by a physical location in the dashboard
instead of with the query expression.  If a
different query from the same position in a panel
is sent, the previous request should be canceled.
2016-07-11 14:47:14 +02:00
Torkel Ödegaard 9055beff1a fix(table): fixed merge issue 2016-07-11 11:09:20 +02:00
Torkel Ödegaard e518f50248 docs(): updated changelog 2016-07-11 10:09:49 +02:00
Torkel Ödegaard 08202dcb83 Merge branch 'v3.1.x' 2016-07-11 09:39:17 +02:00
Torkel Ödegaard 65683ab241 feat(table): added sanitize html option to column styles for table panel, fixes #4596 2016-07-11 09:38:06 +02:00
Torkel Ödegaard 4c4cb20bde tech(sass): changed sass lint version to 1.7.0 2016-07-08 22:12:10 +02:00
Torkel Ödegaard 4133526d8d feat(build): updated sass lint 2016-07-08 21:04:58 +02:00
Alexander Akulov 010dbddf59 Fix double slashes in POST request to ES (#5536) 2016-07-08 18:24:08 +02:00
Torkel Ödegaard 12d455f3c3 Merge branch 'v3.1.x' of github.com:grafana/grafana into v3.1.x 2016-07-08 18:23:15 +02:00
Torkel Ödegaard 615b692442 feat(apps): fixed unit tests 2016-07-08 18:21:25 +02:00
Torkel Ödegaard ebdf0564eb feat(apps): plugin dashboard sync is starting to work 2016-07-08 17:44:57 +02:00
Torkel Ödegaard 68a8d9bc91 feat(apps): more work on plugin dashboard sync 2016-07-08 13:41:46 +02:00
Torkel Ödegaard 85be7dd902 feat(apps): progress on app dashboard sync 2016-07-08 12:26:51 +02:00
Torkel Ödegaard d44325affd feat(apps): progress on app dashboard imports 2016-07-08 09:35:06 +02:00
Fraser Savage 5a8efa9a52 Update configuration.md (#5527)
Insert missing backtick.
2016-07-08 07:12:26 +02:00
Torkel Ödegaard b62f1f00cd feat(apps): auto update dashboard dashboards, #5529 2016-07-07 18:11:03 +02:00
Torkel Ödegaard 3f83bf6e47 Merge branch 'v3.1.x' 2016-07-07 14:48:41 +02:00
Torkel Ödegaard 4545b4d323 fix(login): minor fix redirect on login change 2016-07-07 14:48:22 +02:00
bmundt e58ccc5a83 Hex units (#5530)
* added hex units

* deleted blank line, to fix style error

* added unit tests

* updated unit tests and changed the way it handles negative hex0x
2016-07-07 08:54:51 +02:00
Leandro Piccilli 0ebf469f5f Merge branch 'master' of https://github.com/grafana/grafana 2016-07-07 00:58:26 +02:00
Torkel Ödegaard 60abe75615 Merge branch 'v3.1.x' 2016-07-06 10:10:25 +02:00
Torkel Ödegaard d74eb8c188 fix(login): fixed so that you get redirect back to the page or dashboard you where on when you clicked on sign in link, fixes #3312 2016-07-06 10:09:53 +02:00
Torkel Ödegaard 89c3880a59 Merge branch 'master' of github.com:grafana/grafana 2016-07-06 08:26:24 +02:00
Torkel Ödegaard 7c7e26bc18 feat(templating): refactoring template variable handling for variables that change on time refresh, closes #5021 2016-07-06 08:25:46 +02:00
Torkel Ödegaard 069100099d Merge branch 'reflect_panel_repeat_when_time_range_changed' of https://github.com/mtanda/grafana 2016-07-06 07:40:51 +02:00
Adrián López 65aa6df45c Warn user if there are no mappings (#5246) 2016-07-06 07:31:42 +02:00
Torkel Ödegaard aad76d9220 Merge branch 'master' of github.com:grafana/grafana 2016-07-06 07:23:20 +02:00
Torkel Ödegaard 9088023116 fix(error handling): improved dashboard init error handling and notifications 2016-07-06 07:23:09 +02:00
Torkel Ödegaard ad1d7f0ffb Update package.json 2016-07-06 07:22:29 +02:00
Torkel Ödegaard 41bffd503d Update CHANGELOG.md 2016-07-06 07:22:03 +02:00
Torkel Ödegaard b4493155fc fix(error handling): improved dashboard init error handling and notifications 2016-07-06 07:18:58 +02:00
Torkel Ödegaard c1b7bd0f1b Merge branch 'notify_migration_error' of https://github.com/mtanda/grafana 2016-07-06 06:34:17 +02:00
Torkel Ödegaard 6a8c774dcc fix(graph): show graph panel render errors as panel errors, fixes #5414 2016-07-06 06:31:32 +02:00
Torkel Ödegaard 435aa88c05 Merge branch 'issue_5372' of https://github.com/kipe/grafana into kipe-issue_5372 2016-07-06 06:05:50 +02:00
Torkel Ödegaard 782427b5f2 Update latest.json 2016-07-06 05:28:49 +02:00
herver 9c73b2fa1c Support data units for both IEC (Binary) and Metric (Decimal) variants (#5473) 2016-07-06 05:27:35 +02:00
Torkel Ödegaard 53f110c942 Merge branch 'master' of github.com:grafana/grafana 2016-07-05 18:02:23 +02:00
Torkel Ödegaard fd5f7c2e34 fix(): updated changelog 2016-07-05 18:02:10 +02:00
Torkel Ödegaard 5595fc2683 refactor(): refactored date handling and locale handling in #5517 2016-07-05 17:59:43 +02:00
Torkel Ödegaard f31960d325 Update latest.json 2016-07-05 16:39:36 +02:00
Torkel Ödegaard c029e47a12 Merge branch 'moment-locale' of https://github.com/gofore/grafana into gofore-moment-locale 2016-07-05 16:22:33 +02:00
Joona Romppanen 438a73c58a Added moment.js locales. Set locale from window.navigator at app init(). Use firstDayOfWeek on time picker 2016-07-05 17:08:44 +03:00
Torkel Ödegaard 460820a117 conf(): updated sample config and root_url to better explain it 2016-07-05 14:10:23 +02:00
Carl Bergquist 9312a13e6e Merge pull request #5496 from joemiller/doc-update
grammar fix in docs
2016-07-03 09:44:00 -07:00
Torkel Ödegaard 8bd6b953b8 fix(elasticsearch): fix json escape logic when doing terms template value lookup, fixes #5485 2016-07-02 12:01:04 -04:00
joe miller a6554a85c0 grammar fix in docs 2016-07-02 08:27:31 -07:00
Carl Bergquist c047dacf18 Merge pull request #5442 from mtanda/snapshot_orig_url
(snapshot) save original url
2016-07-01 13:09:34 -07:00
Mitsuhiro Tanda 630d0d0793 (snapshot) add open original dashboard button 2016-07-02 02:26:27 +09:00
Kimmo Huoman 522a3408e9 Export CSV in the same format as presented in Table panel. Fixes issue #5372.
The data is exported in the same exact format as presented in the table panel.
This is achieved by using the same renderer as the UI uses.
2016-07-01 20:21:53 +03:00
Mitsuhiro Tanda cc519adcfc (snapshot) restrict saving original url for local snapshot 2016-07-02 02:16:23 +09:00
Mitsuhiro Tanda 7aaa15ad95 (snapshot) save original url 2016-07-02 02:16:23 +09:00
bergquist 07e522bb64 Merge branch 'influxdb_stop_hidden_queries' 2016-07-01 02:09:40 +02:00
bergquist 22ba51a631 Merge branch 'master' into influxdb_stop_hidden_queries 2016-07-01 02:09:10 +02:00
bergquist b47a307106 Merge branch 'master' into influxdb_stop_hidden_queries 2016-07-01 02:06:19 +02:00
Andris Raugulis 1c293781e3 Log to default log directory, only if custom configuration failed. (#5393) 2016-06-30 16:37:06 -07:00
Kevin Fitzpatrick f2baa5b210 Make Generic OAuth Configs ENV VARS-friendly
Use underscores instead of dashes.
2016-06-30 15:07:55 -07:00
Kevin Fitzpatrick b4646b6c3a Allow users to use a generic oauth that conforms to the github style.
Enables users to set their own link text.
2016-06-30 15:07:55 -07:00
Carl Bergquist 603e5fe0bf Merge pull request #5469 from stuartnelson3/create-unique-prometheus-req-id
[prometheus] Use `panelId` and `target.refId` for requestId
2016-06-30 13:13:01 -07:00
stuart nelson 0590c51524 [prometheus] Use panelId and target.refId for requestId
Using these two values ties requests to a
particular query position within a panel, ensuring
that requests are canceled if:

- Duplicate requests with the same query are sent
- Requests from the same query position (but a
different query) are sent

The last point is important as it identifies
queries by a physical location in the dashboard
instead of with the query expression.  If a
different query from the same position in a panel
is sent, the previous request should be canceled.
2016-06-30 11:29:02 +02:00
Nozomi Anzai bdf68b2183 Fix wrong overwrite of commit:711992c8e2e811abd450cb665008bb0a1b3e29a9 2016-06-30 10:48:39 +09:00
Torkel Ödegaard 5676a35d9a fix(css): added responsive media query for phones that fix header wrap 2016-06-29 14:35:58 -07:00
Torkel Ödegaard ae8fabdad3 fix(modal): fixed duplicate confirm modal issue 2016-06-29 14:26:21 -07:00
Carl Bergquist b289497db6 Merge pull request #5455 from rakotomandimby/patch-1
Update debian.md to Debian Jessie
2016-06-29 12:35:32 -07:00
Carl Bergquist fe7438c7ff Merge pull request #5461 from mtanda/pr_cloudwatch_add_metrics
(cloudwatch) add metrics
2016-06-29 12:08:44 -07:00
Carl Bergquist 7b84c4b4dc Merge pull request #5465 from tmc/patch-1
properly quote font-family on singlestat
2016-06-29 12:07:53 -07:00
Travis Cline bca6101609 properly quote font-family on singlestat 2016-06-29 11:03:07 -07:00
Soulou aa064b18e8 Test environment override for secret and url with credentials 2016-06-29 13:49:41 +02:00
Mitsuhiro Tanda 9ca5ba96be reorder metrics/dimensions 2016-06-29 14:11:01 +09:00
Mitsuhiro Tanda 511f8d3213 add cloudwatch metrics and dimensions 2016-06-29 13:55:16 +09:00
bergquist 4fc16c36ed feat(alerting): saves new state when alert updates 2016-06-29 00:05:48 +02:00
Torkel Ödegaard 5a65dc5d23 Merge branch 'alerting' of github.com:grafana/grafana into alerting 2016-06-28 14:04:38 -07:00
Torkel Ödegaard 9b4c0cca07 fix(flot): fixed flot issue introduced in alerting branch 2016-06-28 14:04:29 -07:00
Carl Bergquist 3460c12491 Merge pull request #5454 from Scalingo/node_version_package_json
Fix node version in package.json
2016-06-28 14:26:30 -04:00
Soulou e2c5fac9df Predefine url to let the environment variable overrider do its job 2016-06-28 17:45:55 +02:00
Soulou 03d0f11407 Accept URL parameter [database] config 2016-06-28 15:31:34 +02:00
Rakotomandimby Mihamina 16e2c660ac Update debian.md 2016-06-28 15:58:00 +03:00
Soulou 122b0d20a9 Fix node version in package.json
Value was incoherent since
https://github.com/grafana/grafana/commit/1900c81d9f9507ed4dbd18e95569480dfd0922f7
2016-06-28 14:36:15 +02:00
Othyus f3a6848710 feat(sidemenu): add style(margin and witdh) for the input and label filter 2016-06-28 08:30:36 +02:00
Othyus 31317abbeb feat(sidemenu): add limit for shown organizations 2016-06-28 08:11:37 +02:00
bergquist 6bf42dde18 tech(alerting): remove some logging 2016-06-27 01:27:30 +02:00
Mitsuhiro Tanda 8af3bb739c refactor 2016-06-26 22:39:34 +09:00
bergquist 4ed6b99d9a Merge branch 'alerting_notifications' into alerting 2016-06-26 04:05:56 +02:00
bergquist af216ecf83 tech(cli): remove loop and head straight for plugindir 2016-06-26 03:47:15 +02:00
bergquist 07be2c89a3 tech(cli): lets use the fact that we have a compiler 2016-06-26 03:47:15 +02:00
bergquist 88e208bddf feat(gf-form): add support for small input fields 2016-06-25 23:30:51 +02:00
Carl Bergquist 92835f0a04 Merge pull request #5434 from saboorian/master
Escape html chararcters in singlestat renderer
2016-06-25 20:49:16 +02:00
bergquist aecd487775 Merge branch 'f1yegor-master' 2016-06-25 20:42:38 +02:00
bergquist 241b9ee329 fix(kbn): add calculator for opn,rpm and wpm 2016-06-25 20:42:24 +02:00
bergquist 4cbde7e747 Merge branch 'master' of https://github.com/f1yegor/grafana into f1yegor-master 2016-06-25 20:38:43 +02:00
bergquist 12570bb959 feat(singlestat): add serie name as an value option
closes #4740
2016-06-25 20:17:23 +02:00
bergquist 8b8bfa8a17 fix(singlestat): rename seriename scoped var 2016-06-25 20:17:05 +02:00
Torkel Ödegaard b31fccb889 Merge branch 'master' of github.com:grafana/grafana 2016-06-25 17:53:42 +02:00
Carl Bergquist ab104bcfd7 Merge pull request #5401 from alexanderzobnin/issue-4740
Issue #4740 - able to use $SeriesName variable in prefix of postfix.
2016-06-25 17:49:44 +02:00
Torkel Ödegaard 35f135f6c2 Merge branch 'master' of github.com:grafana/grafana 2016-06-25 17:46:07 +02:00
Torkel Ödegaard 6dad6241ed docs(): updated changelog 2016-06-25 17:45:39 +02:00
Carl Bergquist 2d4cb50490 Merge pull request #5394 from hailthemelody/master
fix z-index order in Series Overrides
2016-06-25 17:43:47 +02:00
Torkel Ödegaard 0d6222c803 Merge branch 'master' of github.com:grafana/grafana 2016-06-25 17:43:22 +02:00
Torkel Ödegaard b275fa8109 fix(alerts): fixed login and other alert popups not showing, fixes #5435 2016-06-25 17:42:08 +02:00
Carl Bergquist c223994155 Merge pull request #5411 from mtanda/pr_dynamodb_add_metrics
add cloudwatch metrics
2016-06-25 17:36:50 +02:00
bergquist ff15a90e6d fix(login): fixes broken validation for login 2016-06-25 17:34:47 +02:00
bergquist 638a8a1528 docs(changelog): add note about closing #4674
closes #4674
2016-06-25 16:37:28 +02:00
bergquist 16fa631ea0 tech(tests): remove unused code that breaks gorename 2016-06-25 16:34:42 +02:00
bergquist c2689b0c2b Merge branch 'kfitzpatrick-recreate-4675' 2016-06-25 16:31:11 +02:00
bergquist 690a74c6b7 feat(login): invert naming for dissallow user pass login 2016-06-25 16:30:41 +02:00
Torkel Ödegaard 346ca3fc89 Merge branch 'master' into alerting 2016-06-25 09:56:57 -04:00
bergquist 092b6517dc Merge branch 'recreate-4675' of https://github.com/kfitzpatrick/grafana into kfitzpatrick-recreate-4675 2016-06-25 15:53:42 +02:00
Mohammad Mehdi Saboorian 1e486398cc Escape html chararcters in singlestat renderer 2016-06-25 13:43:58 +04:30
Torkel Ödegaard 23345c563c changed version in master to 3.2-pre 2016-06-24 16:51:55 +02:00
Torkel Ödegaard 60f45c965c Merge branch 'master' of github.com:grafana/grafana 2016-06-24 10:25:44 +02:00
Mitsuhiro Tanda 6ef27a87e4 fix catch clause 2016-06-24 13:44:10 +09:00
Kevin Fitzpatrick 040586604b Allow configuration to disable the username and password login interface.
Used for when admins only want users to login via OAuth.
2016-06-23 10:09:13 -07:00
Alexander Zobnin e593cc3e9f Issue #4740 - change variable $SeriesName to $seriesName. 2016-06-23 19:35:50 +03:00
Torkel Ödegaard efad4bcb56 docs(): updated changelog 2016-06-23 17:45:29 +02:00
Torkel Ödegaard 9435e70b37 docs(): spelling fix 2016-06-23 17:31:22 +02:00
bergquist 48e1a17ac2 feat(alerting): remove dummie values from email notifier 2016-06-23 16:30:12 +02:00
bergquist 6121d15ba7 feat(alerting): more aggressive requirements for parsing alertrules 2016-06-23 16:08:18 +02:00
bergquist 8b05af2f90 feat(alerting): add exeuction time to alertResult 2016-06-23 15:52:45 +02:00
bergquist 2063fee4fe docs(changelog): add note about cli fix #5410 2016-06-23 15:16:26 +02:00
Torkel Ödegaard c3e1955792 docs(): updated export docs 2016-06-23 13:21:30 +02:00
bergquist 6af2d99862 style(light-theme): make text-color-weak a little bit darker
otherwise its not possible to see which queries are disabled
in the query editor
2016-06-23 13:17:53 +02:00
Emmanuel Quentin 6487814007 Avoid to request influxdb when query is hidden 2016-06-23 13:11:16 +02:00
bergquist f95be63c43 feat(alerting): move response handling to seperate file 2016-06-23 12:57:10 +02:00
bergquist 67197d54f9 feat(alerting): add triggeredAlerts as json to alert_state 2016-06-23 11:14:40 +02:00
bergquist 488b42377b feat(alerting): update state if not been updated for 15min 2016-06-23 11:03:27 +02:00
Torkel Ödegaard 838284c09f docs(): updated changelog 2016-06-23 10:38:11 +02:00
Torkel Ödegaard 1d35b90484 docs(): updated download links 2016-06-23 10:35:47 +02:00
Mitsuhiro Tanda 44b2a292eb notify dashboard migration fail 2016-06-23 16:56:18 +09:00
Torkel Ödegaard f3c1a894de changed version to 3.1-beta1 2016-06-23 09:12:17 +02:00
bergquist eb54fbaef5 docs(changelog): add note about cli fix #5410 2016-06-23 08:41:25 +02:00
bergquist af1c8dc5d9 feat(cli): adds support for dist/plugin.json location for plugins
ref #5410
2016-06-23 08:35:40 +02:00
bergquist 2123fbdf9b feat(cli): make remove command an alias for uninstall 2016-06-23 08:21:55 +02:00
Mitsuhiro Tanda 16dc095329 (templating) support asc/desc sort 2016-06-23 11:26:41 +09:00
Mitsuhiro Tanda 8987cfe0a2 (templating) add sort order option 2016-06-23 11:26:41 +09:00
Mitsuhiro Tanda 09f7222e79 add cloudwatch metrics 2016-06-23 11:24:21 +09:00
bergquist 14169c5092 tech(docker): add memcached exporter target for prom 2016-06-22 17:36:22 +02:00
bergquist 925806df87 tech(alerting): add recovery logging 2016-06-22 13:43:11 +02:00
Othyus e204c308bf feat(sidemenu): filtering organizations by an input, issue #2609 2016-06-22 13:04:38 +02:00
Torkel Ödegaard 0555525f97 tech(): updated list of docker stuff 2016-06-22 11:01:11 +02:00
bergquist 7952723b71 feat(alerting): add warn/crit filter 2016-06-22 08:09:45 +02:00
bergquist b5a29b6246 test(alerting): add tests for when to send notifcations 2016-06-22 07:58:30 +02:00
bergquist 6edae37ac9 feat(alerting): rename state response method 2016-06-22 07:23:31 +02:00
Torkel Ödegaard 24a54cd95b feat(units): refactoring #5404 2016-06-21 21:08:07 +02:00
Torkel Ödegaard a7a5f36b49 Merge branch 'issue-2971' of https://github.com/alexanderzobnin/grafana into alexanderzobnin-issue-2971 2016-06-21 21:00:00 +02:00
Alexander Zobnin ab0155c861 Issue #2971 - add time units for use in singlestat panel. 2016-06-21 20:56:34 +03:00
Torkel Ödegaard 53c424caf8 docs(): title change 2016-06-21 18:25:24 +02:00
Torkel Ödegaard 23cfbac4ec feat(docs): updated import / export docs 2016-06-21 18:24:25 +02:00
Torkel Ödegaard f23d72001d fix(dashboard): fixed issue triggering refresh after leaving fullscreen/edit mode with time range change 2016-06-21 17:21:45 +02:00
Torkel Ödegaard 302ad5f1f9 Merge branch 'master' of github.com:grafana/grafana 2016-06-21 17:08:16 +02:00
Torkel Ödegaard 257e6c469e feat(collectd): updated collectd config 2016-06-21 17:07:01 +02:00
bergquist ef9766eb96 docs(3.1): initial post about whats new in 3.1 2016-06-21 16:29:17 +02:00
Alexander Zobnin cc433c1fbd Issue #4740 - able to use $SeriesName variable in prefix of postfix. 2016-06-21 15:48:18 +03:00
bergquist aa9e524e73 tech(docker): add node exporter to prometheus 2016-06-21 11:46:08 +02:00
Carl Bergquist 3b1ae3f7d2 Merge pull request #5396 from hailthemelody/fix_issue_template_typos
fix typos in GitHub Issue Template
2016-06-21 10:27:41 +02:00
hailthemelody cccfe47bf0 fix typos in GitHub Issue Template 2016-06-20 21:39:11 -04:00
hailthemelody 13d1fec2cb fix z-index order in Series Overrides 2016-06-20 20:54:01 -04:00
Carl Bergquist 87ab97b5ed Merge pull request #5391 from wkruse/prometheus-annotations-doc
Add Prometheus annotations doc
2016-06-20 18:49:00 +02:00
Wadim Kruse 3b47b1ecbd Add Prometheus annotations doc 2016-06-20 18:36:05 +02:00
bergquist 403fdebca3 docs(alerting): rewrite alert docs 2016-06-20 17:05:16 +02:00
bergquist 5d62c84a19 feat(alerting): adds default checkbox to ui 2016-06-20 16:19:15 +02:00
bergquist f5297db8f3 tech(alerting): remove console log that spams tests 2016-06-20 15:30:00 +02:00
bergquist fa309ec925 feat(alerting): add default notification group 2016-06-20 15:24:48 +02:00
bergquist 0a85efbf18 feat(alerting): add datasource type to settings 2016-06-20 11:44:06 +02:00
bergquist a18506e2e4 feat(alerting): changing notifications should require org admin 2016-06-20 11:32:55 +02:00
bergquist 0c5da9155f feat(alerting): only expose DTO info when requesting all notifications 2016-06-20 11:31:20 +02:00
bergquist 12706fd6db Revert "docs(changelog): add note about singlestat to datetime func"
This reverts commit 8efa94e42a.
2016-06-20 11:04:01 +02:00
Carl Bergquist d8be2f1ecc Merge pull request #5389 from grafana/revert-5383-issue-4747
Revert "issue #4747 - add date and time units to singlestat panel."
2016-06-20 11:02:43 +02:00
Carl Bergquist b6f9d9feb0 Revert "issue #4747 - add date and time units to singlestat panel." 2016-06-20 11:02:29 +02:00
bergquist 8efa94e42a docs(changelog): add note about singlestat to datetime func 2016-06-20 10:59:47 +02:00
Carl Bergquist b94527f661 Merge pull request #5383 from alexanderzobnin/issue-4747
issue #4747 - add date and time units to singlestat panel.
2016-06-20 10:57:08 +02:00
bergquist 96e5ad3f5c Merge branch 'alerting' into alerting_notifications 2016-06-20 10:45:05 +02:00
bergquist dd8c3d0355 Merge branch 'master' into alerting 2016-06-20 10:44:48 +02:00
bergquist 3adee1eda0 tech(sass): sasslint fixes for css3
Pseudo-elements must start with double colons pseudo-element
2016-06-20 10:37:47 +02:00
bergquist 7c09a140c7 test(alerting): fixes broken tests for alerting thresholds 2016-06-20 10:06:18 +02:00
bergquist 4c4164bb40 test(alerting): adds test email creater 2016-06-20 07:49:08 +02:00
Leandro Piccilli 2205ce5354 Add some tests for ES 5.x 2016-06-20 00:40:16 +02:00
Alexander Zobnin 398e9f5195 issue #4747 - add date and time units to singlestat panel. 2016-06-17 22:51:08 +03:00
bergquist adea539b8d feat(alerting): add link to panel png 2016-06-17 16:43:14 +02:00
bergquist ea4b14ac22 feat(alerting): rename critical -> crit 2016-06-17 16:40:48 +02:00
bergquist 212fd27252 feat(alerting): add support for email notifications 2016-06-17 15:30:17 +02:00
bergquist 774add94c1 feat(alerting): skip warn check if crit is triggered 2016-06-17 15:24:17 +02:00
Torkel Ödegaard 90c063060a fix(png): fixed phantomjs rendering issue with graph and y-axis label rotation, fixes #5220 2016-06-17 14:36:10 +02:00
Torkel Ödegaard 3bcda9268a feat(styleguide): removed unused/empty tabs 2016-06-17 14:18:24 +02:00
Torkel Ödegaard e2b398a6bf Merge branch 'master' of github.com:grafana/grafana 2016-06-17 14:16:25 +02:00
Torkel Ödegaard fa10fc994a fix(graph): remove panel width cache, causing issues, does not handle window resize and fullscreen to dashboard, #5297 2016-06-17 14:16:01 +02:00
Drew Farris cb2b8dea96 OpenTSDB: consistent options for http requests (#5233)
* OpenTSDB: consistent options for http requests

 . the get function wasn't using the same request options wrt to credentials/auth as
   the timeseries http request

* OpenTSDB: `_get` `_performTimeSeriesQuery` refactor copied code
2016-06-17 14:04:40 +02:00
Torkel Ödegaard 9bcd5de8ff fix(share): fixed PNG render link generated from share modal when opened from edit mode, fixes #5295 2016-06-17 14:03:59 +02:00
Torkel Ödegaard 9f9fca1e76 feat(datasource): added suggest urls for each data source, #4577 2016-06-17 13:35:29 +02:00
Alexander Zobnin fdf46c6a10 Issue 4577 (#5379)
* Add default-url property for datasource-http-settings directive.
This will allow to set default url for datasource.

* Fixed spelling.

* Use typeahead for url suggestion.
2016-06-17 13:18:00 +02:00
Torkel Ödegaard 305a6ae110 feat(dashboards): dashboard sharing fixes 2016-06-17 11:36:35 +02:00
Torkel Ödegaard 10daf1d63a Revert "Enable the "limit" param in /api/search"
This reverts commit 3d77685108.
2016-06-17 11:22:39 +02:00
bergquist 90e3d8afda Merge branch 'alerting' into alerting_notifications 2016-06-17 09:55:58 +02:00
bergquist c96108226c fix(alerting): use alert frequency 2016-06-17 09:55:42 +02:00
bergquist 764c58ba8d Merge branch 'alerting' into alerting_notifications 2016-06-17 09:54:38 +02:00
bergquist 9481fcb830 fix(alerting): use alert frequency 2016-06-17 09:54:11 +02:00
Torkel Ödegaard 23aa614baf feat(rendering): fixed issue with png rendering, recently introduced by profiler refactoring 2016-06-17 08:49:11 +02:00
bergquist ebada26b85 Merge branch 'alerting' into alerting_notifications 2016-06-17 08:27:58 +02:00
bergquist e8a324c7f5 feat(alerting): add frequency back to alert model 2016-06-17 08:27:38 +02:00
Torkel Ödegaard 5c35fac8fe fix(dataproxy): removed accidental debug code 2016-06-17 08:11:37 +02:00
bergquist 946dc0ecf3 Merge branch 'alerting' into alerting_notifications 2016-06-17 07:44:39 +02:00
bergquist 1771ab032e Merge branch 'master' into alerting 2016-06-17 07:44:21 +02:00
bergquist 8b2f6fffc9 test(dashboards): comment code in broken tests 2016-06-17 07:43:57 +02:00
Torkel Ödegaard 32479503bd fix(build): another windows build issue 2016-06-16 21:10:30 +02:00
Torkel Ödegaard b06ec734f1 fix(build): windows, another windows build fix, #5370 2016-06-16 18:21:12 +02:00
bergquist b035074613 tech(alerting): disable update state api 2016-06-16 17:02:45 +02:00
bergquist a0418da160 Merge branch 'alerting' into alerting_notifications 2016-06-16 16:49:16 +02:00
bergquist 8ec311ade4 Merge branch 'master' into alerting 2016-06-16 16:29:41 +02:00
bergquist 3c4d2b8ca1 feat(alerting): add basic body for webhooks 2016-06-16 16:25:23 +02:00
bergquist 6705efef6f feat(alerting): make some settings properties required 2016-06-16 16:18:40 +02:00
bergquist f3009dc23b fix(alerting): broken link 2016-06-16 16:06:40 +02:00
bergquist b907ce341c feat(alerting): enables deletes for alert notifications 2016-06-16 15:21:44 +02:00
bergquist 149c2ae913 feat(alerting): add submenu for alerting 2016-06-16 15:21:23 +02:00
Torkel Ödegaard b039a81375 feat(build): fixing windows build issue, #5370 2016-06-16 14:36:19 +02:00
bergquist 7f767224af feat(alerting): basic support for creating and updating notifications 2016-06-16 14:29:20 +02:00
Joel Smith 46fe9a167e Update file_export.ts (#5325)
Prepended first line to export file containing
`sep=;\n`
which I believe should be all that is required for Excel to interpret the CSV file as semicolon delimited.
2016-06-16 14:27:00 +02:00
Torkel Ödegaard 79eb971fad docs(): updated changelog 2016-06-16 10:49:40 +02:00
Torkel Ödegaard 81e9aa4de4 feat(datasource): cancel in flight data source requests, refeatoring #5321 2016-06-16 10:48:26 +02:00
bergquist c51facfaef style(alerting): move filter below HR 2016-06-16 09:23:53 +02:00
bergquist 00fc2e2593 test(alerting): fixes broken unittest 2016-06-16 09:09:09 +02:00
Torkel Ödegaard 6d3521c240 Merge branch 'cancel-in-flight-repeats' of https://github.com/stuartnelson3/grafana into stuartnelson3-cancel-in-flight-repeats 2016-06-16 08:57:31 +02:00
bergquist 72e23bca5f tech(alerting): improve/cleanup logging 2016-06-16 08:56:19 +02:00
Torkel Ödegaard 23e0240410 fix(build): removed logging call that caused wrong dependency to be used 2016-06-16 08:55:36 +02:00
bergquist 4d03e04172 feat(alerting): enable email notifiter 2016-06-16 08:29:49 +02:00
Torkel Ödegaard 1ae24b366f feat(profiler): fixed issues with frontend perf profiler 2016-06-16 08:28:50 +02:00
bergquist 2e809cae05 tech(alerting): enforce POST for webhooks 2016-06-16 08:16:16 +02:00
bergquist efea3bc9cb feat(alerting): skeleton commit for webhook 2016-06-16 08:16:16 +02:00
bergquist a3b7ea7704 feat(alerting): skeleton for alert notification configuration page 2016-06-16 08:16:16 +02:00
bergquist 4c5d2d6079 style(alerting): remove unused code 2016-06-16 08:16:16 +02:00
bergquist b9b65cf2d4 tech(alerting): add logging about failed notifications 2016-06-16 08:16:16 +02:00
bergquist 9a8416416d feat(alerting): converter for db model to notification 2016-06-16 08:16:16 +02:00
bergquist 6eca26e8ec style(alerting): improve formating 2016-06-16 08:16:16 +02:00
bergquist dbf3795aaf feat(alerting): add sql layer for alert notifications 2016-06-16 08:16:16 +02:00
bergquist 8b91e57ef6 feat(alerting): notification query 2016-06-16 08:16:16 +02:00
Torkel Ödegaard 2ceb58d0c4 feat(elasticsearch): removed dashboard import migration 2016-06-16 08:11:40 +02:00
Torkel Ödegaard e1f63a3346 docs(): updated changelog 2016-06-16 08:10:15 +02:00
Torkel Ödegaard ec0b09450c Merge branch 'export-dashboard'
Conflicts:
	conf/defaults.ini
	pkg/setting/setting.go
	public/app/core/components/grafana_app.ts
	public/app/core/core.ts
	public/app/features/dashboard/dashboardCtrl.js
2016-06-16 08:06:43 +02:00
Torkel Ödegaard 4b78ab5bcd feat(graph): graph tooltip sort order PR refactored/changed #4944, changed the layout graph display options, #4944 2016-06-15 17:20:55 +02:00
Torkel Ödegaard ae554a736b change(graphite): removed graphite png option in graph panel, closes #5367 2016-06-15 14:20:44 +02:00
bergquist 779ea55ee0 style(alerting): rename executor -> handler 2016-06-15 11:49:20 +02:00
bergquist 777ca4cd7d style(alerting): rename level.level to level.value 2016-06-15 11:39:25 +02:00
Torkel Ödegaard a893152141 feat(alerting): thesholds unification 2016-06-15 10:41:21 +02:00
Torkel Ödegaard f03e8292a2 feat(alerting): progress on threshold unification 2016-06-14 17:00:51 +02:00
Torkel Ödegaard ed7a539ddb feat(alerting): thresholds rethink 2016-06-14 16:45:51 +02:00
Carl Bergquist f842e28b85 Merge pull request #5343 from utkarshcmu/opentsdb-template
Implemented nested template variables functionality for Opentsdb
2016-06-14 07:43:41 +02:00
utkarshcmu 33aa3f0fc5 Made tag_values query more robust 2016-06-13 14:21:46 -07:00
Torkel Ödegaard dac8b35a1a feat(alerting): renamed scheduler to handler 2016-06-13 15:58:22 +02:00
bergquist 7f22b9eb6e tech(alerting): expression -> settings 2016-06-13 15:18:19 +02:00
bergquist bb6888885e fix(alerting): makes valid to save more explicit 2016-06-13 15:01:07 +02:00
bergquist 0d60b042c8 style(alerting): revemo commented code 2016-06-13 14:57:24 +02:00
bergquist ca33622698 style(alerting): rename max retries 2016-06-13 14:54:06 +02:00
bergquist 3ad90c389c style(alerting): improve naming 2016-06-13 14:01:57 +02:00
utkarshcmu e4e042e389 CHANGELOG entry 2016-06-13 04:53:21 -07:00
bergquist 04436c8a52 test(alerting): make sure the worst state is captured 2016-06-13 13:45:26 +02:00
utkarshcmu f3003a97ef Added required documentation 2016-06-13 04:34:23 -07:00
utkarshcmu 6550bc97ba Added unit tests 2016-06-13 04:24:27 -07:00
utkarshcmu 862de3a9dc Added templated dependency in Opentsdb 2016-06-13 03:59:12 -07:00
bergquist 6cb4bdd6cb feat(alerting): adds a result list to alertresult
Since one query can return multiple series we might be
interested in getting the result for each serie
2016-06-13 11:44:47 +02:00
Nozomi Anzai 6586cc4029 Add the datasource of RDBMS (PostgreSQL and MySQL) 2016-06-13 18:24:18 +09:00
bergquist a77824939f chore(alerting): remove alerting model.json 2016-06-13 11:10:28 +02:00
bergquist 1e41eb8c97 tech(alerting): remove frequency from alert model 2016-06-13 10:42:36 +02:00
bergquist 94f059838c feat(alerting): implemention duration parser 2016-06-13 10:40:46 +02:00
bergquist 2cf72715fb test(alerting): fixes broken unit tests 2016-06-13 09:33:14 +02:00
bergquist d52fc8d0ad Merge branch 'alert_ui_take2' into alerting 2016-06-13 09:20:00 +02:00
Torkel Ödegaard 9216492d55 Merge branch 'alert_handles' into alert_ui_take2
Conflicts:
	pkg/services/alerting/commands.go
2016-06-13 07:53:13 +02:00
bergquist 77746f277d chore(alerting): move transformers to seperate package 2016-06-13 07:46:54 +02:00
bergquist 22407fc897 fix(metrics): 64bit aligns standardcounter
Due to a bug in golang the 64bit variable i
need to come first to be 64bit aligned.
https://golang.org/pkg/sync/atomic/#pkg-note-BUG

closes #5341
2016-06-13 06:56:16 +02:00
Carl Bergquist dba6fe8af3 Merge pull request #5340 from hailthemelody/master
update pricing to include 1 million free API requests per month
2016-06-13 06:54:00 +02:00
hailthemelody ef9500a8f0 update pricing to include 1 million free API requests per month 2016-06-12 11:41:43 -04:00
Torkel Ödegaard e3b281dbac feat(alerting): more work on alerting thresholds 2016-06-12 11:43:18 +02:00
Torkel Ödegaard 5b6fb3b124 feat(alerting): level handle progress 2016-06-11 23:52:25 +02:00
Torkel Ödegaard ec640bd5da feat(alerting): more work on alerting ui 2016-06-11 23:31:49 +02:00
Torkel Ödegaard 1500c0e954 feat(alerting): alert threshold handles progress 2016-06-11 22:33:02 +02:00
Torkel Ödegaard f387e39b67 mend 2016-06-11 14:37:52 +02:00
Torkel Ödegaard 0b919c752b feat(alerting): poc of dragable alert handles 2016-06-11 14:37:33 +02:00
Torkel Ödegaard 66c2594262 feat(alerting): sql update fixes 2016-06-11 14:08:55 +02:00
Torkel Ödegaard 71c1c0ab65 feat(alerting): trying to get things to work with new model 2016-06-11 13:49:11 +02:00
Torkel Ödegaard 0ef6801117 Merge branch 'master' into alert_ui_take2 2016-06-11 12:17:14 +02:00
Torkel Ödegaard bf1ea560e9 feat(logging): error logging improvements 2016-06-11 12:16:33 +02:00
Torkel Ödegaard 77a5e3f14d feat(alerting): minor fixes 2016-06-11 11:54:46 +02:00
Torkel Ödegaard 086b59483e feat(loggin): disable logging by default so unit tests are not full of logging 2016-06-11 11:38:25 +02:00
Torkel Ödegaard 382f396247 feat(alerting): more model changes 2016-06-11 10:54:24 +02:00
Torkel Ödegaard a362984c57 feat(alerting): renamed AlertRuleModel to just Alert, think making a distinction between an Alert and an Alert Rule is just confusing and was a mistake on my part 2016-06-11 10:26:48 +02:00
Torkel Ödegaard 2b4a9954b1 feat(alerting): progress on alerting UI and model, refactoring of dashboard parser and tests into extractor component, moved tests from sqlstore to alerting package 2016-06-11 10:13:33 +02:00
bergquist 1fa9ae810b test(alerting): enable disabled tests 2016-06-10 15:49:23 +02:00
bergquist 83c422e6ef feat(alerting): implement transform objects 2016-06-10 15:31:17 +02:00
Torkel Ödegaard c18017381b Merge branch 'alert_ui_take2' of github.com:grafana/grafana into alert_ui_take2
Conflicts:
	public/app/plugins/panel/graph/alert_tab_ctrl.ts
2016-06-10 14:52:17 +02:00
Torkel Ödegaard 48cbeb96bf feat(alerting): updated rule model and UI 2016-06-10 14:49:54 +02:00
bergquist ea8fb66f73 test(alerting): fixes broken unittests 2016-06-10 13:47:54 +02:00
bergquist 3c0b5fe78e tech(alerting): add graphite dateformat replacer 2016-06-10 13:26:19 +02:00
bergquist 8cd1d17916 feat(alerting): new alerting model\ 2016-06-10 13:15:16 +02:00
bergquist 0c69c5afb1 test(alerting): fixes broken unittests 2016-06-10 11:37:03 +02:00
bergquist ef35184a80 feat(alerting): rename alertrule model to alertruleDAO 2016-06-10 10:00:00 +02:00
bergquist b17298c97c test(alerting): remove unused code to enable gorename 2016-06-10 07:11:14 +02:00
bergquist fdf051ad5a feat(alerting): begin alert rule storage refactoring 2016-06-09 22:21:28 +02:00
stuart nelson 048bcf19f6 Use panel+ref for unique id
Previously, if a user changed the query between
requests, the previous query would not be
canceled. This handles that edge-case.
2016-06-09 15:17:17 +02:00
stuart nelson 8797be9f89 Add existence check for canceler. 2016-06-09 15:16:53 +02:00
bergquist 3898f427f5 feat(alerting): update the ux model 2016-06-09 15:10:50 +02:00
bergquist 1e4761854e Merge branch 'alerting_definitions' into alert_ui_take2 2016-06-09 13:03:40 +02:00
stuart nelson cc64d65c2f Rename cacheKey to exprID/requestID
Depending on context in the code, rename cacheKey
to exprID when it identifies a unique expression,
and rename cacheKey to requestID when it is
identifying a request.
2016-06-09 12:57:55 +02:00
Torkel Ödegaard 55af988e02 feat(alerting): mocking with new alert rule model 2016-06-09 12:14:50 +02:00
stuart nelson efdb990e56 Return an error for a canceled request.
Allow the datasource to decide how to handle a
canceled request.
2016-06-09 12:13:17 +02:00
stuart nelson bc7c2cd3f5 Create cacheKey at top-level
Responsibility is now to pass the cacheKey through
to `datasourceRequest` in each datasources'
implementation of `query`.
2016-06-09 11:36:46 +02:00
bergquist 66d47a9303 tech(alerting): go vet fix 2016-06-09 10:49:25 +02:00
Torkel Ödegaard c85bb47675 Merge branch 'alerting_definitions' into alert_ui_take2 2016-06-09 10:46:03 +02:00
Torkel Ödegaard dee5f582d7 Merge branch 'master' into alerting_definitions 2016-06-09 10:45:16 +02:00
Torkel Ödegaard 1584dac00a Merge branch 'master' of github.com:grafana/grafana 2016-06-09 10:43:46 +02:00
Torkel Ödegaard 79986e5593 Merge branch 'query-part-refactor'
Conflicts:
	public/app/plugins/datasource/influxdb/query_part.ts
2016-06-09 10:43:07 +02:00
Torkel Ödegaard b8aa8b3079 feat(prometheus): restore old prometheus query editor, revert this commit in prometheus query editor v2 branch 2016-06-09 10:37:33 +02:00
bergquist 544073b7e1 feat(alerting): make sure saved alerts are valid 2016-06-09 10:27:23 +02:00
Torkel Ödegaard 071c16b73c feat(alerting): start on new ui 2016-06-09 10:13:34 +02:00
bergquist a1f97e0b77 feat(alerting): add heartbeat writer 2016-06-09 10:00:34 +02:00
Mark Baas ced3bafa99 returns correct index (#5275) 2016-06-09 08:13:31 +02:00
Mukesh 755ec552de Bugfix: org select btn was not working on profile (#5317) 2016-06-09 00:43:38 +02:00
stuart nelson 18f9f6c159 Add in-flight identifier for Prometheus requests
Repeat Prometheus requests with the same query
will cancel preceding requests.
2016-06-08 18:05:46 +02:00
stuart nelson 6da7ed9706 Add support for canceling in-flight requests
Repeat requests, if they already exist in the
in-flight request map, will cause the previous
request to cancel.

The implementation of the unique key is the
responsibility of individual datasources.
2016-06-08 18:04:31 +02:00
Torkel Ödegaard a66027830b Merge branch 'alerting_definitions' of github.com:grafana/grafana into alerting_definitions 2016-06-08 09:42:31 +02:00
Torkel Ödegaard 26d93d7130 Merge branch 'master' into alerting_definitions 2016-06-08 09:36:50 +02:00
bergquist ffac5c1299 docs(changelog): add note about changelog 2016-06-08 09:35:34 +02:00
Carl Bergquist fe5673134f Merge pull request #5292 from Thib17/master
Enable the "limit" param in /api/search
2016-06-08 09:19:58 +02:00
bergquist 366fb11416 style(alerting): add fmt fixes 2016-06-08 08:50:11 +02:00
Torkel Ödegaard 1d8fdc09e7 feat(logging): added log format option, #4590 2016-06-08 08:48:46 +02:00
Torkel Ödegaard 7d6cda4916 Merge branch 'master' of github.com:grafana/grafana 2016-06-08 08:10:22 +02:00
Torkel Ödegaard b25cb60259 Merge branch 'new-logger'
Conflicts:
	CHANGELOG.md
2016-06-08 08:09:59 +02:00
Torkel Ödegaard 87e98f01cd feat(logging): updated syslog writer to work with log15 log interface, closes #4590 2016-06-08 08:09:29 +02:00
Karl 22cda198ae Apply EscapeFilter to username to address grafana/grafana#5121 (#5279) 2016-06-08 07:28:16 +02:00
Tom Hukins d1c06a93df Fix a typo (#5306) 2016-06-08 07:27:52 +02:00
Torkel Ödegaard eed0d9c8d2 feat(graph performance): graph performance tweaks, refactoring #5297 2016-06-08 07:23:44 +02:00
Torkel Ödegaard bf82fdb678 Merge branch 'perf_graph_js' of https://github.com/mtanda/grafana into mtanda-perf_graph_js 2016-06-08 06:53:28 +02:00
Torkel Ödegaard e1e7fbf83d Merge branch 'master' of github.com:grafana/grafana 2016-06-08 06:51:43 +02:00
Torkel Ödegaard c739428c30 feat(profiling): refactorign profiling code, #5286 2016-06-08 06:51:10 +02:00
Torkel Ödegaard 2a7d2ffccb Merge branch 'profiling_in_dev' of https://github.com/mtanda/grafana into mtanda-profiling_in_dev 2016-06-08 05:47:30 +02:00
Zdenek Styblik 5eceabf810 fix(): Check Organization exists before User is added (#5302)
Commit adds a check whether Organization exists before User is added to
the organization.

Fixes #3151.
2016-06-08 05:46:21 +02:00
Torkel Ödegaard 67ad903556 feat(test metrics): fixed issue with built in Grafana test data source, fixes #5299 2016-06-08 05:45:13 +02:00
Torkel Ödegaard 36b0802789 fix(png): fixed issue with png rendering, fixes #5274 2016-06-08 05:29:38 +02:00
Torkel Ödegaard 93fdc18fd4 feat(logging): fixed dependencies 2016-06-07 15:59:50 +02:00
bergquist 8d4aa5d114 test(alerting): update dashboard json 2016-06-07 15:52:33 +02:00
Torkel Ödegaard e4ea24dfc4 Merge branch 'new-logger' into alerting_definitions
Conflicts:
	pkg/services/sqlstore/migrations/migrations_test.go
2016-06-07 15:51:22 +02:00
Torkel Ödegaard 73b0e6c37b feat(logging): disable migrator logging during test 2016-06-07 15:50:16 +02:00
Torkel Ödegaard d7c03359ea feat(alerting): fixed test issues 2016-06-07 14:54:30 +02:00
Torkel Ödegaard 3289225b77 feat(alerting): fixed test issues 2016-06-07 14:51:53 +02:00
Torkel Ödegaard 8105ec4660 feat(alerting): fixed test issues 2016-06-07 14:27:56 +02:00
Torkel Ödegaard 461e6ae4ac feat(alerting): added missing godep libs 2016-06-07 13:50:55 +02:00
Torkel Ödegaard 0d9c9526b9 feat(alerting): fixed graphite log issue 2016-06-07 13:47:22 +02:00
Torkel Ödegaard 0667d73660 Merge branch 'new-logger' into alerting_definitions
Conflicts:
	pkg/api/api.go
	pkg/setting/setting.go
2016-06-07 13:31:56 +02:00
Torkel Ödegaard 65aad44464 feat(logging): added uname to context logger 2016-06-07 12:20:46 +02:00
Torkel Ödegaard a02cf5beb7 feat(logging): added loging filters 2016-06-07 12:11:41 +02:00
bergquist b76b42f209 docs(changelog): add note about deb post install script 2016-06-07 12:09:56 +02:00
Carl Bergquist ee88b0dc35 Merge pull request #5282 from nazco/patch-1
restart grafana after upgrade
2016-06-07 12:03:42 +02:00
Torkel Ödegaard 3dc7706c45 feat(loggin): improved http request panic handling 2016-06-07 10:05:10 +02:00
Torkel Ödegaard 9741af2031 feat(logging): progress on new logging #4590 2016-06-07 09:29:47 +02:00
Mitsuhiro Tanda 487b2089a9 cache label width 2016-06-07 14:28:08 +09:00
Mitsuhiro Tanda b28368c859 cache panel width 2016-06-07 14:04:06 +09:00
Torkel Ödegaard 22778e6efd feat(logging): a lot of progress on moving to new logging lib, #4590 2016-06-06 23:06:44 +02:00
Thibault Chataigner 3d77685108 Enable the "limit" param in /api/search 2016-06-06 16:15:20 +00:00
Mitsuhiro Tanda 25899b72d2 use applyAsync for compile (#5287) 2016-06-06 17:18:18 +02:00
Mitsuhiro Tanda f877afb74d use async apply (#5258) 2016-06-06 17:18:10 +02:00
Torkel Ödegaard 34e17f7282 feat(alerting): requests looks to be working again 2016-06-06 17:11:46 +02:00
Torkel Ödegaard d1acfb4494 feat(alerting): minor progress 2016-06-06 14:24:14 +02:00
Torkel Ödegaard 7a34c129fe feat(alerting): things are compiling and tests pass 2016-06-06 13:50:47 +02:00
Torkel Ödegaard 0cbf4ae773 feat(alerting): began work on splitting scheduler into scheduler and engine 2016-06-06 11:56:58 +02:00
Mitsuhiro Tanda 83c76981b2 fix profiling code 2016-06-06 17:42:11 +09:00
Mitsuhiro Tanda 975b53b318 enable profiling in development mode 2016-06-06 17:42:11 +09:00
bigbenhur ef623846c1 further tests for log-autoscale and log-fixedscale; only generate visible ticks; minor changes to prevent crashes due to bad user input 2016-06-06 10:33:35 +02:00
Torkel Ödegaard a191b9b1cf feat(alerting): moved alerting models back to alerting package, models is more for storage dtos 2016-06-06 10:31:21 +02:00
Torkel Ödegaard 70cb8400c3 feat(alerting): changed name of root Alerts nav item and page from Alerts to Alerting 2016-06-06 09:17:29 +02:00
Torkel Ödegaard f36a44c49a Merge branch 'master' into alerting_definitions
Conflicts:
	conf/defaults.ini
	pkg/api/dashboard.go
2016-06-06 08:43:01 +02:00
Karl 2f5ae85d33 Initial patch for grafana/grafana#4267 (#5280) 2016-06-06 07:15:37 +02:00
Ben Oswald 51878aeca8 change start to restart also for systemctl
I've forgotten to update the systemctl start to restart in my first commit
2016-06-05 16:27:57 +02:00
Ben Oswald 1d2eb0f903 restart grafana after upgrade
The current script only tries to start the already running grafana process after an upgrade. This leads to errors due to changed js and css hashes while grafana is delivering the old ones. To load the new sources we need to restart grafana after an upgrade.
2016-06-05 16:19:53 +02:00
f1 d002cab28f add reads/min and etc to unitFormats 2016-06-05 00:57:04 +02:00
bigbenhur 29b9d17faa fix crash due to zero or negative data values in graph with log scale 2016-06-03 22:30:38 +02:00
Torkel Ödegaard 7cbaf06097 feat(instrumentation): check if enabled in http api metrics route 2016-06-03 21:22:34 +02:00
Torkel Ödegaard 1059a35bbc feat(instrumentation): documented instrumentation options, closes #4696 2016-06-03 18:38:19 +02:00
Torkel Ödegaard 064e474b0a Merge branch 'metrics_reporting' 2016-06-03 18:06:41 +02:00
Torkel Ödegaard aef2b6b45f feat(instrumentation): finial polish 2016-06-03 17:15:17 +02:00
Torkel Ödegaard 35a7a3a52b feat(instrumentation): added some more timers 2016-06-03 17:00:39 +02:00
Torkel Ödegaard e0c6048820 feat(instrumentation): added gauge and http endpoint 2016-06-03 16:15:36 +02:00
bigbenhur 1e4eb01059 Support auto grid min/max when using log scale, Issue #3090 2016-06-03 15:54:14 +02:00
Torkel Ödegaard ffb12d122f Update ISSUE_TEMPLATE.md 2016-06-03 15:34:08 +02:00
bergquist 6a49d4ed6b feat(alerting): remove orgid from alertrule query 2016-06-03 15:24:53 +02:00
bergquist b08f8bab71 Merge branch 'dakerfp-patch-3' 2016-06-03 15:09:18 +02:00
Torkel Ödegaard 1a05ae2eaa feat(instrumentation): more work 2016-06-03 15:06:57 +02:00
bergquist 961c31a747 test(util): add unit test for string util 2016-06-03 15:06:54 +02:00
bergquist d1a345bb03 Merge branch 'patch-3' of https://github.com/dakerfp/grafana into dakerfp-patch-3 2016-06-03 15:02:46 +02:00
bergquist 2cf797b567 tech(alerting): minor refactoring and code style 2016-06-03 15:01:42 +02:00
Carl Bergquist 236aed112f Merge pull request #5255 from dakerfp/patch-1
Unify signal registration in a single syscall.
2016-06-03 14:59:42 +02:00
bergquist 65eb373808 Merge branch 'master' into alerting_definitions 2016-06-03 13:48:36 +02:00
bergquist 3d7facf6ee fix(cli): fixes broken import 2016-06-03 13:40:48 +02:00
Torkel Ödegaard eee49a4995 feat(instrumentation): added meter, histogram and new timer, timer now send p25, p75, p90, p99 percentiles in 1000 sample exp decaying sample 2016-06-03 12:50:51 +02:00
bergquist 6de1399cf0 fix(cli): fixes broken import 2016-06-03 12:35:17 +02:00
bergquist d0ac258474 Merge branch 'master' into alerting_definitions 2016-06-03 12:22:46 +02:00
bergquist 15aeb4aec2 tech(cli): rename log to logger to separate from server logger 2016-06-03 12:22:30 +02:00
bergquist 5bbfe39f84 tech(alerting): replace goreq with native http 2016-06-03 11:38:56 +02:00
bergquist 9c7e6a2133 feat(alerting): add basic auth support for graphite 2016-06-03 11:07:55 +02:00
Torkel Ödegaard 86f0007768 feat(instrumentation): added influxdb client 2016-06-03 09:18:21 +02:00
Torkel Ödegaard 3065d10931 feat(timing): timing is now working with graphite and influxdb 2016-06-03 09:17:36 +02:00
bergquist eab81a7781 style(alerting): go lint fixes 2016-06-03 09:11:20 +02:00
bergquist 50d98b161c feat(alerting): adds support for retries 2016-06-03 09:04:20 +02:00
bergquist 68f01d57d3 tech(alerting): use range in loops when possible 2016-06-03 08:44:22 +02:00
Torkel Ödegaard 4c4189d631 Update ISSUE_TEMPLATE.md 2016-06-03 08:38:48 +02:00
Torkel Ödegaard 015b409f2f Update ISSUE_TEMPLATE.md 2016-06-03 08:38:07 +02:00
bergquist cc65dd8bcf tech(alerting): use pointers for updating alertjobs 2016-06-03 08:33:53 +02:00
bergquist 910253bc42 tech(alerting): remove datasource ref from alertjob 2016-06-03 07:40:47 +02:00
Torkel Ödegaard e2c794ff31 feat(instrumentation): lots of refactoring to support tag based backend, #4696 2016-06-02 21:06:49 +02:00
Torkel Ödegaard 2a9b51d836 feat(instrumentation): influxdb is working, now need to find a way to better support tags, #4696 2016-06-02 16:56:07 +02:00
bergquist 0bea0cc5b9 feat(alerting): add interface for alert backend 2016-06-02 16:34:25 +02:00
bergquist 510360a509 docs(elastic): updates readme 2016-06-02 14:56:31 +02:00
Torkel Ödegaard 6b2a4fe8e8 feat(instrumentation): work on settings model for internal metrics publishing, #4696 2016-06-02 14:32:17 +02:00
Torkel Ödegaard 49fe90874a Merge branch 'v3.0.x' 2016-06-02 12:09:10 +02:00
Torkel Ödegaard acbaef1907 fix(influxdb): fixed issue with backslash escaping in tag filter, fixes #5249 2016-06-02 12:08:13 +02:00
Torkel Ödegaard 74101eaf7c feat(instrumentation): changed name to senders 2016-06-02 12:04:50 +02:00
Torkel Ödegaard 8ab324988c Merge branch 'v3.0.x' 2016-06-02 09:57:20 +02:00
Torkel Ödegaard 1283461b89 fix(gzip): add plugin proxy to gzip exclusion, fixes #5237 2016-06-02 09:56:53 +02:00
Torkel Ödegaard 38790e2c4b fix(elasticsearch): fixed templating lucene / json escaping issue, fixes #5228, fixes #5227 2016-06-02 09:54:28 +02:00
Carl Bergquist aa718b4dce Merge pull request #5253 from minkikim89/fix_seperate_typo
fixed separate typo
2016-06-02 07:42:04 +02:00
Daker Fernandes Pinheiro 2d09dfd34f Using variadic argument to StringFallback implementation 2016-06-02 01:46:18 -03:00
Daker Fernandes Pinheiro 48e4de823a Unify signal registration in a single syscall. 2016-06-02 01:34:37 -03:00
bergquist 65d8403a04 fix(metrics_reporting): adds missing formating varialbe 2016-06-01 15:16:17 +02:00
bergquist a8ac37f517 feat(usage_metrics): add timer metrics 2016-06-01 15:04:58 +02:00
bergquist b2c0679a7f feat(metrics): initial graphite metrics writer for internal stats 2016-06-01 13:31:11 +02:00
bergquist 69229211b2 fix(alerting): move backend to seperate file 2016-06-01 11:25:29 +02:00
bergquist 4e1f801f6c feat(alerting): add serie name to failed alert description 2016-05-31 21:02:26 +02:00
bergquist 76758d270f feat(alerting): set basic description text of status ok 2016-05-31 20:03:15 +02:00
Carl Bergquist 8db00073b4 Merge pull request #5232 from peggyl/peggyl/fix-tags-popover-text
Fix wording of the dashboard tags popover text
2016-05-31 19:47:24 +02:00
Peggy Li d36c1769e0 Fix wording of the dashboard tags popover text 2016-05-31 17:29:31 +00:00
bergquist 68f148880d feat(alerting): add alert info at log page 2016-05-31 16:26:06 +02:00
bergquist 7c3dbe2a38 chore(alerting): move aggregations into alerting package 2016-05-31 15:29:56 +02:00
bergquist 7224ea5229 chore(alerting): convert alert levels to float 2016-05-31 14:18:12 +02:00
bergquist 338fdcb576 feat(alerting): add copy of AlertRule to AlertResult 2016-05-31 13:27:12 +02:00
bergquist 1ded0b30c2 fix(alerting): fix broken model bind in alerting tab 2016-05-31 13:12:05 +02:00
Carl Bergquist 53ecb4c1ae Merge pull request #5222 from akiomik/patch-1
Fixed assets urls in 500.html
2016-05-31 07:59:24 +02:00
Akiomi KAMAKURA 616dd5c4a5 Fixed assets urls in 500.html 2016-05-31 14:26:13 +09:00
bergquist d1daa2c817 style(alerting): give better info about actual value 2016-05-30 19:21:28 +02:00
bergquist b75631e021 chore(alerting): move alert result to models 2016-05-30 19:08:04 +02:00
bergquist 1498db11a9 feat(alerting): extracts alert rule reading 2016-05-30 18:52:38 +02:00
bergquist c5c261e955 feat(alerting): improve spacing in alerting tab 2016-05-30 17:50:35 +02:00
bergquist 3d5c27df91 test(alerting): add tests for multi serie checks 2016-05-30 14:58:32 +02:00
bergquist 411568351d feat(alerting): revert operand positions 2016-05-30 14:47:59 +02:00
bergquist 2edb0ad94d feat(influxdb): adds spread functionallity
closes #5211
2016-05-30 14:23:24 +02:00
bergquist 077be210da tech(alerting): change interval -> frequency 2016-05-30 09:31:05 +02:00
bergquist 16a9e56eca tech(alerting): change queryrange to int from str 2016-05-30 09:18:22 +02:00
bergquist 51511dd654 feat(alerting): save alert state 2016-05-30 09:03:14 +02:00
bergquist 1686d86c3b Merge branch 'master' into alerting_definitions 2016-05-30 08:26:08 +02:00
Carl Bergquist f8a535c6e8 Merge pull request #5195 from matschaffer/cloudwatch_metric_update_elasticbeanstalk
Add metrics for AWS/ElasticBeanstalk
2016-05-30 08:05:09 +02:00
Carl Bergquist f1bd614770 Merge pull request #5183 from nfnty/master
package.json: Upgrade grunt-contrib-compress, Fixes #5071
2016-05-30 08:02:00 +02:00
Torkel Ödegaard c8965d0f9a feat(export): export will add templatize constant variables 2016-05-28 20:27:44 +02:00
Torkel Ödegaard 53bb264375 Merge branch 'master' into export-dashboard 2016-05-28 17:17:51 +02:00
Torkel Ödegaard 1ea54049d0 feat(templating): added new template variable type constant 2016-05-28 16:59:29 +02:00
Torkel Ödegaard ca8543348b docker(): added collectd system metrics collector that writes to graphite, just for testing 2016-05-28 10:13:51 +02:00
hc4 cf87e8ecf5 Fix parsing of intervals. defined in ms (#5151)
* Fix parsing of intervals. defined in ms

Fix parsing of intervals. defined in ms.
Increase accuracy for sub-second inrevals.
Closes #5008

* Tests for sub-ms intervals

Unit test for https://github.com/grafana/grafana/commit/2034d4b9710b0cb9fd0cdf14aa9981cd0417eda4
2016-05-27 17:26:20 +02:00
Carl Bergquist a6afd85526 Merge pull request #5197 from minkikim89/fixtypo
Fixed type
2016-05-27 16:57:07 +02:00
Torkel Ödegaard 0d4c76a029 feat(import): save gnetId for dashbards imported from grafana.net 2016-05-27 16:42:32 +02:00
Torkel Ödegaard c3708b3096 feat(import): import directly from grafana.net id/url now works 2016-05-27 16:11:05 +02:00
bergquist e80000ce94 tech(alerting): skip if operator does not exist 2016-05-27 15:53:18 +02:00
bergquist 1f990da5c3 tech(alerting): use the timeseries ctor function 2016-05-27 15:51:34 +02:00
bergquist 5f2447976c style(alerting): add note about making timeseries model safer 2016-05-27 15:28:47 +02:00
bergquist 22d8723c1d feat(alerting): generelize aggregator functions 2016-05-27 15:17:48 +02:00
bergquist abc1ae3956 feat(alerting): add timeserie aggregation functions 2016-05-27 14:59:13 +02:00
Torkel Ödegaard 22a7eaf2e7 Merge branch 'master' into export-dashboard 2016-05-27 13:52:53 +02:00
Torkel Ödegaard 540def2c39 feat(import): working on unit tests for import ctrl 2016-05-27 13:52:19 +02:00
bergquist 205afd7212 style(alerting): remove some logging 2016-05-27 12:13:09 +02:00
bergquist 422234d03a feat(alerting): abstract graphite from executor 2016-05-27 12:06:41 +02:00
bergquist 3d66ec816d chore(alerting): minor refactoring 2016-05-27 10:34:44 +02:00
Torkel Ödegaard bf90fbc678 fix(templating): fixed failing templating unit test 2016-05-27 09:23:08 +02:00
Tim Bielawa 2b9d260686 docs(rebuild): Include new http api preferences docs in menus (#5194)
This updates the mkdocs.yml source file such that the HTTP Preferences
API is included in the website navigation bar and in the HTTP API
overview page.

This commit also refreshes the docs/README.md file with more verbose
instructions for building and viewing the documentation locally.

* Original issue: #5069 Document org & user preferences HTTP docs
* Original PR: #5087

Closes #5193
2016-05-27 08:58:42 +02:00
Torkel Ödegaard f6633c8189 feat(export): minor dupe fix 2016-05-27 08:34:12 +02:00
Mat Schaffer 18f704533f Add enhanced elasticbeanstalk metrics 2016-05-27 11:47:53 +09:00
Mat Schaffer aedba5411c Add basic metrics for AWS/ElasticBeanstalk 2016-05-27 11:30:16 +09:00
Torkel Ödegaard e83d13848e Merge branch 'master' into export-dashboard
Conflicts:
	public/app/features/dashboard/submenu/submenu.ts
2016-05-26 14:22:22 +02:00
Torkel Ödegaard 696fad702f Merge branch 'v3.0.x'
Conflicts:
	public/app/features/templating/templateValuesSrv.js
2016-05-26 14:21:17 +02:00
Torkel Ödegaard 724a511995 fix(templating): fixed issue with value being shown instead of it's text representation, fixes #5172 2016-05-26 13:18:02 +02:00
Torkel Ödegaard 90c9c70416 fix(): another fix for panel image rendering 2016-05-26 08:49:55 +02:00
Torkel Ödegaard f8a4661d05 Merge branch 'master' of github.com:grafana/grafana 2016-05-26 08:37:19 +02:00
Torkel Ödegaard dd494e648a fix(rendering): fixed issue with phantomjs panel rendering 2016-05-26 07:45:53 +02:00
bergquist 8ac635b631 style(alerting): change const names 2016-05-26 07:41:23 +02:00
Jared Wiltshire c9d6321f38 Allow for proxying Authorization header and automatically convert (#4832)
Authorization header to X-DS-Authorization in backend_srv.js
2016-05-26 07:13:29 +02:00
Mukesh 4038b4d17e Set active org through admin api (#5179) 2016-05-26 06:51:23 +02:00
nfnty 46551e9d65 package.json: Upgrade grunt-contrib-compress, Fixes #5071 2016-05-26 01:03:22 +02:00
bergquist 957cb407c5 feat(alerting): naiv graphite executor 2016-05-25 17:21:20 +02:00
Torkel Ödegaard 1060eeb197 feat(dashboard): include org id query parameter in dashboard url, #1613 2016-05-25 17:06:41 +02:00
Torkel Ödegaard 201d30a944 fix(export): style fixes and markup fixes for share modal 2016-05-25 13:01:40 +02:00
bergquist b2a4d8083e feat(alerting): add datasource ref to alert rule 2016-05-25 12:57:49 +02:00
Torkel Ödegaard fc2a069180 feat(export): fixed refactoring issue with dynamic dashbord srv 2016-05-25 12:45:52 +02:00
Torkel Ödegaard 392407136d Merge branch 'export-dashboard' of github.com:grafana/grafana into export-dashboard 2016-05-25 12:33:30 +02:00
Torkel Ödegaard ba6573af61 Merge branch 'master' into export-dashboard
Conflicts:
	public/app/features/dashboard/submenu/submenu.ts
2016-05-25 12:32:56 +02:00
Matt Toback 8d988f9582 Export dashboard bulletfactory (#5160)
* create descriptions and styles for share dropdown

* Updating actual modal layout for Sharing

* Updated the modals to follow the new styles, fixed the wrapping issue on the main menu. Standardized buttons.
2016-05-25 12:30:27 +02:00
Torkel Ödegaard f923edc424 Merge branch 'v3.0.x' 2016-05-25 12:29:35 +02:00
Torkel Ödegaard 2712d9ae8b Update latest.json 2016-05-25 12:23:32 +02:00
Torkel Ödegaard 3312a042dd docs(): updated download links 2016-05-25 11:50:00 +02:00
Torkel Ödegaard 5040570ea9 docs(): updated changelog 2016-05-25 11:07:29 +02:00
Torkel Ödegaard f5c5d1b1da Merge branch 'master' of github.com:grafana/grafana 2016-05-25 11:04:27 +02:00
Torkel Ödegaard 2cd6c2e7e0 Merge branch 'v3.0.x' 2016-05-25 11:04:12 +02:00
Torkel Ödegaard 0daadc954c fix(templating): fixed issue with detecting data source variable in other template variable definition, fixes #5165 2016-05-25 10:46:55 +02:00
bergquist ec98b7d672 docs(changelog): add note about fix for 5167 2016-05-25 10:01:49 +02:00
bergquist 8c2b6b532d fix(preferences): fixes broken default home dashboard
closes #5167
2016-05-25 09:56:45 +02:00
Torkel Ödegaard 71d62012e1 fix(panel): fixed issue with fullscreen panel view and switching to another dashboard, fixes #5163 2016-05-25 09:46:15 +02:00
Torkel Ödegaard 41deea90ee feat(dashboard): template variable changes updates url, closes #5002 2016-05-24 16:34:17 +02:00
Torkel Ödegaard a81806d3d0 feat(dashboard): sync time range with url, closes #458 2016-05-24 16:32:28 +02:00
bergquist 0f58f8a679 feat(alerting): add timeout handler for check execution 2016-05-24 10:30:39 +02:00
Torkel Ödegaard 5607a114f9 updated changelog 2016-05-24 09:53:28 +02:00
Torkel Ödegaard e81614b9e9 Merge branch 'v3.0.x' 2016-05-24 09:50:41 +02:00
Torkel Ödegaard 6f094ef215 fix(templating): fixed issue with nested template variables and multi select, the child variable selection state is now updated like single select variables, so if none matches the first option is selected, fixes #4861 2016-05-24 09:50:23 +02:00
Torkel Ödegaard 366baea099 docs(): updated changelog 2016-05-24 08:14:40 +02:00
Torkel Ödegaard dc9dcd045d Merge branch 'master' of github.com:grafana/grafana 2016-05-24 08:11:52 +02:00
Torkel Ödegaard 10c47ee27c feat(footer): some minor changes to footer to make it look good in light theme, closes #4889 2016-05-24 08:11:28 +02:00
Torkel Ödegaard 8f0240a295 Merge branch 'footer' 2016-05-24 07:53:13 +02:00
Torkel Ödegaard fd08c821f9 Merge branch 'v3.0.x'
Conflicts:
	package.json
2016-05-24 07:52:27 +02:00
Torkel Ödegaard c41c771e9a fix(home dashboard): fixed handling error when default dashboard is not found, fixes #5141 2016-05-24 07:39:58 +02:00
bergquist 448ee5812c feat(alerting): make sure the map contains the responding alert 2016-05-24 07:24:45 +02:00
Zdenek Styblik fff5aa3020 Add missing option Read-Only Editor to auto_assign_org_role description (#5139)
Commit adds missing option `Read-Only Editor` to `auto_assign_org_role` description.
2016-05-23 21:24:23 +02:00
Torkel Ödegaard f1ec270e3e bumped version to 3.0.4 2016-05-23 21:24:02 +02:00
Torkel Ödegaard a3f2f574c6 fix(singlestat): fixed Gauge positioning issue, fixes #5143 2016-05-23 21:23:31 +02:00
Utkarsh Bhatnagar ec19a97156 [Bug Fix] #5136 (#5142) 2016-05-23 21:00:06 +02:00
Torkel Ödegaard 9a7817a271 Merge branch 'master' into footer
Conflicts:
	pkg/api/frontendsettings.go
2016-05-23 20:59:23 +02:00
Utkarsh Bhatnagar 8a0d5aa38d [Bug Fix] #5136 (#5142) 2016-05-23 20:58:21 +02:00
Trent White a52869507e hide footer on non-dashboard pages 2016-05-23 12:46:13 -04:00
Torkel Ödegaard c77d72b29f feat(prometheus): progress on new prometheus query editor, #5117 2016-05-23 18:03:17 +02:00
Trent White 76d18e7156 remove height: 100% on .main-view 2016-05-23 11:45:54 -04:00
bergquist 7229fb7a76 tech(alerting): change from array to map 2016-05-23 17:04:57 +02:00
bergquist 77ec575b46 tech(alerting): fixes broken unit-tests 2016-05-23 14:51:41 +02:00
bergquist 9d500df2bb chore(alerting): remove redundant code 2016-05-23 14:36:24 +02:00
bergquist 9f8c67e352 feat(alerting): only start unfinnished jobs 2016-05-23 14:14:02 +02:00
Torkel Ödegaard 9e6056551d docs(): updated download links 2016-05-23 14:13:30 +02:00
Torkel Ödegaard bbea698af3 Update latest.json 2016-05-23 12:30:46 +02:00
bergquist cb21bf41b0 tech(alerting): split code into different files 2016-05-23 12:15:36 +02:00
bergquist b496b6a252 test(alerting): add test for alertjob selection 2016-05-23 12:04:34 +02:00
Torkel Ödegaard 9eec68985d docs(): updated download links 2016-05-23 11:49:07 +02:00
bergquist 4fce82344e feat(alerting): async exeuction on a shoestring 2016-05-23 11:47:41 +02:00
bergquist f95fa51322 feat(alerting): make rule execution async 2016-05-23 11:17:07 +02:00
Torkel Ödegaard cd82f579bd docs(): updated changelog 2016-05-23 11:08:08 +02:00
Torkel Ödegaard 93665f49b1 Merge branch 'v3.0.x' 2016-05-23 11:06:53 +02:00
bergquist a7fcb3a2cc feat(alerting): add dummie executor 2016-05-23 10:59:28 +02:00
Torkel Ödegaard dc77d555f9 fix(elasticsearch): fixed templating issue with elasticsearch, fixes #5135 2016-05-23 10:58:31 +02:00
Torkel Ödegaard dfe3806d01 fix(elasticsearch): fixed query editor issue with elasticsearch 2016-05-23 10:14:40 +02:00
bergquist f05cae23d2 feat(alerting): alert rule selector 2016-05-23 10:07:04 +02:00
Torkel Ödegaard cfc7710205 docs(): changelog updated 2016-05-23 09:31:52 +02:00
Torkel Ödegaard c60d737928 Merge branch 'v3.0.x'
Conflicts:
	package.json
2016-05-23 09:29:14 +02:00
Torkel Ödegaard 1da149d9e1 feat(annotations): annotations can now use a template variable as data source, closes #5054 2016-05-23 09:28:14 +02:00
bergquist 411178d384 tech(alerting): disable feature toggle
this feature toggle caused migration tests to fail
2016-05-23 08:24:10 +02:00
bergquist 45b2b4bc52 feat(alerting): add feature toggles for alerting functions 2016-05-23 08:00:42 +02:00
Torkel Ödegaard 43ba563a1c fix(logging): change log level to trace for plugin proxy logging call, fixes #5126 2016-05-23 07:55:55 +02:00
minki 05cb6048ae fixed separate typo 2016-05-23 09:32:18 +09:00
minki 70d6b32e14 Fixed type 2016-05-22 05:38:57 +09:00
Trent White 75940c1f5d turn watch all back on 2016-05-21 13:21:31 -04:00
Mitsuhiro Tanda 1d27a7f93d (cloudwatch) fix wrong cache key of credentials (#5124) 2016-05-21 09:02:04 +02:00
Trent White cffcc4c7a5 make footer unordered list. add new icons. 2016-05-20 16:44:19 -04:00
Trent White c727c3c441 resize and color of links 2016-05-20 15:58:14 -04:00
Torkel Ödegaard fb4dc77f36 docs(): updated changelog with 3.0.3 fixes 2016-05-20 15:26:19 +02:00
Torkel Ödegaard 9eb7b192b8 Merge branch 'master' of github.com:grafana/grafana 2016-05-20 15:16:05 +02:00
Torkel Ödegaard 06d63dda6e Merge branch 'v3.0.x' 2016-05-20 15:15:30 +02:00
Torkel Ödegaard e6f251011f fix(panel span): fixed issue setting panel span while in fullscren and also an issue when changing repeat variable while in fullscreen view, fixes #4957 2016-05-20 15:15:02 +02:00
Torkel Ödegaard 6a813aa33d fix(export): better error handling 2016-05-20 14:45:22 +02:00
bergquist 9d016a2756 feat(alerting): add migration for create and update 2016-05-20 14:23:24 +02:00
David J. Felix 441682b598 Fix linking for /dashboard-solo/ proxy prefix (#5116)
Fixes #5109
2016-05-20 14:01:12 +02:00
Mitsuhiro Tanda 9c672f6ec1 (prometheus) support new legend format (with backward compatibility) (#5096)
* (prometheus) support new legend format (with backward compatibility)

* (prometheus) use regex replace for legend format

* (prometheus) allow white space
2016-05-20 12:29:10 +02:00
Torkel Ödegaard 35c05463e7 Merge branch 'v3.0.x' 2016-05-20 12:23:50 +02:00
Torkel Ödegaard f00cbc0aeb fix(panel height): fixed issue with singlestat height, fixes #4679, fixes #4894, fixes #5113 2016-05-20 12:23:26 +02:00
Torkel Ödegaard ee86d24797 fix(elasticsearch): minor editor layout fix 2016-05-20 10:31:22 +02:00
Torkel Ödegaard 58a9324db0 Merge branch 'v3.0.x' 2016-05-20 10:24:54 +02:00
Torkel Ödegaard e0e8fd6637 fix(templating): fixed handling of numeric values in tempalting query results, fixes #5097 2016-05-20 10:24:24 +02:00
Torkel Ödegaard 2416ee04c8 fix(templating): fixed detection of nested template variables, fixes #5103 2016-05-20 09:58:07 +02:00
Torkel Ödegaard 91c6ebb06c Merge branch 'v3.0.x' 2016-05-20 09:06:39 +02:00
Torkel Ödegaard df0ddc0b50 fix(prometheus): fixed bug in prometheus query editor, fixes #5107 2016-05-20 09:03:52 +02:00
Torkel Ödegaard 2e02abffc0 fix(render): fixed issue with image renderer caused by disabling angular debug info 2016-05-20 08:34:35 +02:00
Torkel Ödegaard e47957ce6d Merge branch 'master' of github.com:grafana/grafana 2016-05-20 08:32:40 +02:00
Torkel Ödegaard c54e688272 Merge branch 'v3.0.x' 2016-05-20 08:31:51 +02:00
Torkel Ödegaard 37821e6d63 fix(share modal): fixed link in share modal when sub app url is /dashboard/, fixes #5109 2016-05-20 08:31:27 +02:00
Torkel Ödegaard a3ee388b66 Merge branch 'master' into query-part-refactor 2016-05-19 14:52:18 +02:00
Torkel Ödegaard 855e913bbd feat(dashboards): began work on dashboard list 2016-05-19 11:03:10 +02:00
Richard Hartmann 78360ece8a ISSUE_TEMPLATE.md: Improve wording and fix typos (#5101) 2016-05-19 10:59:38 +02:00
Richard Hartmann 7c46423727 ISSUE_TEMPLATE.md: Fix typo (#5099) 2016-05-19 10:34:12 +02:00
Torkel Ödegaard fb74d10573 feat(export): added grafana version to requires array, #5084 2016-05-19 10:21:16 +02:00
Torkel Ödegaard 430bcf192f feat(export): templetize annotations and template vars, #5084 2016-05-19 10:01:31 +02:00
Torkel Ödegaard cac723dab3 Merge branch 'master' into export-dashboard 2016-05-19 08:48:24 +02:00
bergquist 402499c071 Merge branch 'master' into alerting_definitions 2016-05-19 08:47:34 +02:00
bergquist 617d18e587 feat(panel): active tab is now placed in querystring aswell 2016-05-19 08:42:21 +02:00
bergquist a379b0057a feat(alerting): link to dashboard goes directly to alerting tab 2016-05-19 08:13:20 +02:00
bergquist ef4f5147be Merge branch 'master' into alerting_definitions 2016-05-19 08:05:35 +02:00
bergquist 2b06ceda71 feat(panels): adds queryparameter for choose active tab in edit mode 2016-05-19 08:00:48 +02:00
Torkel Ödegaard 1bb4ca22e7 fix(test): fixed failing unsaved changes test 2016-05-19 07:58:44 +02:00
Tim Bielawa 24a410ae8f docs(preferences): Document user and org preferences (#5087)
closes #5069
2016-05-18 18:31:59 +02:00
Torkel Ödegaard 673984a7db feat(export): more export stuff 2016-05-18 15:53:13 +02:00
Torkel Ödegaard 10339090b8 fix(annotations): fixed annotation error handling, fixes #5077 2016-05-18 15:22:40 +02:00
Torkel Ödegaard b6dcf6bd02 Merge branch 'v3.0.x' 2016-05-18 14:23:59 +02:00
Torkel Ödegaard 280e7bb04d Merge branch 'master' of github.com:grafana/grafana 2016-05-18 14:23:41 +02:00
Torkel Ödegaard 03551a5961 Merge remote-tracking branch 'origin/development' 2016-05-18 14:23:21 +02:00
Torkel Ödegaard d474eba53a fix(logging): fixed reading config level from config file, fixes #5079 2016-05-18 14:18:08 +02:00
Mitsuhiro Tanda 392cb2a714 (cloudwatch) update changelog (#5080)
* update cloudwatch.md

* update changelog
2016-05-18 13:27:19 +02:00
bergquist 92ac370415 tech(docker): rename fake data writers 2016-05-18 12:29:37 +02:00
Torkel Ödegaard c41e3dcb91 updated changelog 2016-05-18 12:04:37 +02:00
Torkel Ödegaard 602d1a5fbc Merge branch 'v3.0.x' 2016-05-18 12:02:53 +02:00
Torkel Ödegaard cd80884b76 fix(dashboard timepicker): fixed issue with time picker and UTC when reading time from url, fixes #5078 2016-05-18 12:01:11 +02:00
Torkel Ödegaard bfadc932d7 Merge branch 'master' of github.com:grafana/grafana 2016-05-18 11:50:56 +02:00
Torkel Ödegaard 0cd2e150d5 feat(snapshots): performance improvements to deep clone, makes snapshot's a lot quicker for big dashboards with a lot of panels and data 2016-05-18 11:50:40 +02:00
Carl Bergquist 5aaaeb05a0 Merge pull request #5075 from mtanda/prometheus_templating_fix
(prometheus) fix metric find query
2016-05-18 11:40:33 +02:00
Torkel Ödegaard 26ea0bc360 feat(export): work on export 2016-05-18 11:11:53 +02:00
Mitsuhiro Tanda a86d218891 (prometheus) fix metric find query 2016-05-18 16:36:57 +09:00
Torkel Ödegaard 6632f883c0 Merge branch 'master' into export-dashboard
Conflicts:
	.floo
	.flooignore
2016-05-18 08:08:15 +02:00
Mitsuhiro Tanda 66bcae353c (prometheus) pass dashboard time range to template query (#5007)
* (prometheus) pass dashboard time range to template query

* (prometheus) add passing time test of templating
2016-05-18 07:56:23 +02:00
Mitsuhiro Tanda 07d355851e (cloudwatch) assume role support (#5065)
* (cloudwatch) assume role support

* save godep

* (cloudwatch) add assumeRoleArn field

* (cloudwatch) set cred provider for sts

* (cloudwatch) fix test
2016-05-18 07:54:24 +02:00
Mitsuhiro Tanda 8d2f350ad1 (prometheus) fix prometheus link 2016-05-18 07:50:30 +02:00
Mitsuhiro Tanda fc1891320e (prometheus) fix prometheus link (#5074) 2016-05-18 07:49:32 +02:00
Utkarsh Bhatnagar 8a9455d901 Fixed singlestat mapping typo (#5070) 2016-05-18 07:44:01 +02:00
Torkel Ödegaard 46b6ab7db7 Merge branch 'master' of github.com:grafana/grafana 2016-05-17 21:51:31 +02:00
Torkel Ödegaard 958f97232f fix(pluginlist): fixed issue with plugin list, fixes #5068 2016-05-17 21:51:19 +02:00
Torkel Ödegaard 05d064ca8d export(): moved to share modal 2016-05-17 21:18:47 +02:00
Carl Bergquist 47f88346d2 Merge pull request #5058 from hijklmno/master
Add dBm as an option in energy units
2016-05-17 15:57:05 +02:00
bergquist b5fc12fb80 docs(opentsdb): add working image of add datasource for opentsdb
closes #4984
2016-05-17 15:32:33 +02:00
Torkel Ödegaard 83f5080274 feat(angular): disable debug in production for angular compiler 2016-05-17 15:00:48 +02:00
Torkel Ödegaard c133a00125 feat(alerting): minor progress on scheduler 2016-05-17 14:31:52 +02:00
Torkel Ödegaard df50fa2332 feat(export): export dashboard modal 2016-05-17 11:17:11 +02:00
Torkel Ödegaard ad7a1e15b4 feat(export): began working on export modal 2016-05-17 10:29:57 +02:00
bergquist efe6fd154b tech(docker): add default writer for influxdb 2016-05-17 09:03:52 +02:00
bergquist fb8296524e tech(docker): add default fake-data-gen for prometheus 2016-05-17 09:03:52 +02:00
Torkel Ödegaard 00957a42d4 Merge branch 'v3.0.x' 2016-05-17 08:40:28 +02:00
Torkel Ödegaard 99db89067e fix(): reverted RESTART_ON_UPGRADE change 2016-05-17 08:34:34 +02:00
hijklmno f1b5a265ab fix trailing whitespace in kbn.js 2016-05-16 15:35:42 -07:00
hijklmno 451e917e7d Add dBm as an option in energy units 2016-05-16 15:24:31 -07:00
Torkel Ödegaard d443079cf6 fix(): fixed sass issue 2016-05-16 18:48:13 +02:00
Torkel Ödegaard 163e55c0eb Update latest.json 2016-05-16 18:07:42 +02:00
bergquist fa19e0d9c6 style(modal): use standard valid styles 2016-05-16 17:03:01 +02:00
bergquist 6435fa6b99 fix(modal): add undefined check 2016-05-16 16:48:28 +02:00
bergquist 8dbb5bad4b test(alerting): fix broken unit tests 2016-05-16 16:20:28 +02:00
Torkel Ödegaard 77b7cdfadb feat(alerting): added few fields to alert rule 2016-05-16 15:39:09 +02:00
bergquist 2ce9d4571c fix(alerting): fix spacing 2016-05-16 14:29:54 +02:00
Torkel Ödegaard 495404ef73 Merge branch 'master' into alerting_definitions 2016-05-16 14:12:56 +02:00
Torkel Ödegaard 09f11cf66e updated 2016-05-16 14:11:55 +02:00
Torkel Ödegaard 4ea3002572 added floobits stuff 2016-05-16 14:02:34 +02:00
Torkel Ödegaard 840cd7b2e1 doc(): updated changelog 2016-05-16 13:58:38 +02:00
Torkel Ödegaard 0760528f4a Merge branch 'v3.0.x' 2016-05-16 13:57:44 +02:00
Torkel Ödegaard 7f0fe31881 docs(): updated download links 2016-05-16 13:41:50 +02:00
Mitsuhiro Tanda f585d22ce7 (templating) update dynamic dashboard only if variable is changed 2016-05-16 19:26:24 +09:00
bergquist 80f7fe8646 feat(alerting): add confirm text dialog when deleting dashboards with alerts 2016-05-16 11:54:28 +02:00
Torkel Ödegaard 2be8658034 Merge remote-tracking branch 'origin/development' 2016-05-16 11:40:12 +02:00
Torkel Ödegaard 494bee1d6b bumped version 2016-05-16 11:39:16 +02:00
bergquist 31698a1c55 Merge branch 'master' into alerting_definitions 2016-05-16 09:28:14 +02:00
bergquist 0c345e2b09 docs(changelog): remove invalid chars 2016-05-16 09:06:39 +02:00
Carl Bergquist adce8c15bb Merge pull request #5041 from LindsayHill/patch-1
Fixed minor typo s/seperate/separate/
2016-05-15 22:25:15 +02:00
Torkel Ödegaard 7cd663bbe8 feat(import): more import work 2016-05-14 10:00:43 +02:00
Lindsay Hill 85758a2dd2 Fixed minor typo s/seperate/separate/
Fixed small typo in help text
2016-05-14 17:51:08 +12:00
Utkarsh Bhatnagar 7bc15ec6c1 [Bug Fix] Opentsdb Alias issue (#4910)
* Fixed Opentsdb Alias issue

* Fixed Opentsdb query editor
2016-05-13 22:22:56 +02:00
Torkel Ödegaard d9d46096dd feat(import): lots of work on dashboard import 2016-05-13 17:39:22 +02:00
bergquist da68f7d31a feat(docker): fake data writer for opentsdb 2016-05-13 16:53:28 +02:00
bergquist 41ed0e670a feat(docker): fake data writer for graphite 2016-05-13 16:25:03 +02:00
bergquist 579b36754a Merge branch 'master' into development 2016-05-13 14:30:47 +02:00
bergquist e50211572f docs(changelog): add note about fix for graph panel 2016-05-13 13:54:39 +02:00
bergquist 6849bfae16 fix(graph): fixes broken hide xaxis option
closes #5024
2016-05-13 13:52:57 +02:00
bergquist c3f1d1a647 fix(influxdb): fixes extra semi colon due to hidden series
closes #5005
2016-05-13 13:36:57 +02:00
bergquist ac674bd405 docs(changelog): add note about graph fix 2016-05-13 12:23:58 +02:00
bergquist d5899aacfb fix(graph-panel): fixes broken PNG rendering
When refactoring y-axies for graph panel these
was forgotten and which caused the graphite datasource
to send invalid data.

closes #5025
2016-05-13 12:20:39 +02:00
bergquist 9e5a8c3fc8 docs(changelog): add info about configurable theme 2016-05-13 11:38:54 +02:00
Carl Bergquist 83707f7b35 Merge pull request #5011 from acmnu/default_theme
Add new parameter to config: default_theme.
2016-05-13 11:36:32 +02:00
Torkel Ödegaard ca8df67947 feat(import): things are starting to work 2016-05-13 11:26:02 +02:00
Mitsuhiro Tanda 3b85901b95 reflect panel repeat status when variable updated 2016-05-13 16:29:11 +09:00
Prajwal Rao 3feb6492e6 fixed datasources icon (#5015) 2016-05-12 21:49:58 +02:00
Anton Chevychalov c6744925c4 Add new parameter to config: default_theme. 2016-05-12 18:21:11 +03:00
bergquist 88b2f48493 Merge branch 'master' into development 2016-05-12 16:22:18 +02:00
Torkel Ödegaard 0d3e06e68a feat(wizard): merged wizard poc 2016-05-12 14:45:32 +02:00
Torkel Ödegaard bf890719ff Merge remote-tracking branch 'origin/wizard' into export-dashboard2 2016-05-12 10:52:24 +02:00
Torkel Ödegaard 28eae1e7ff Merge branch 'master' into export-dashboard
Conflicts:
	packaging/publish/publish.sh
	public/app/features/dashboard/dynamicDashboardSrv.js
	public/test/specs/dynamicDashboardSrv-specs.js
2016-05-12 10:50:37 +02:00
Dan Cech 9f9f4e7fef use new plugin-specific repo route when installing or updating a single plugin (#4992) 2016-05-12 10:43:31 +02:00
Denny Schäfer 2f6b00b6f7 Add What's New in Grafana 3.0 link into the readme (#5001) 2016-05-12 10:41:36 +02:00
Torkel Ödegaard 35f55cabf0 fix(templating): improved detection of nested template variables, fixes #4986, fixes #4987 2016-05-12 10:41:15 +02:00
Torkel Ödegaard 0201ac24e7 fix(templating): fixed issue with mixing repeated row and repeated panel, fixes #4988 2016-05-12 10:31:36 +02:00
Torkel Ödegaard 731c35540f packaging(): default RESTART_ON_UPGRADE to true, closes #4993 2016-05-12 07:29:33 +02:00
Dan Cech dac62ec560 fix rpm download link 2016-05-11 14:09:03 -04:00
Torkel Ödegaard 2c7447eaca feat(): started work on new import system 2016-05-11 16:18:52 +02:00
Torkel Ödegaard b170b6ec8b feat(query part): moved query part editor from influxdb to core 2016-05-11 14:52:44 +02:00
bergquist e69658128c docs(alerting): change api url layout 2016-05-11 14:08:45 +02:00
Torkel Ödegaard 8a3bdb3685 fix(typo): corrected spelling in error message, fixes #4982 2016-05-11 13:21:25 +02:00
Torkel Ödegaard 85e8cba7a1 Merge branch 'master' of github.com:grafana/grafana 2016-05-11 13:20:14 +02:00
Torkel Ödegaard 56bf9c5612 fix(): changed how package iteration/build is generated 2016-05-11 13:20:01 +02:00
bergquist c76c2f30a8 tech(alerting): add default values for alerts 2016-05-11 13:04:03 +02:00
bergquist b58be91e71 feat(alerting): add delete button for removing alerts 2016-05-11 11:11:45 +02:00
bergquist 18bf2b2391 docs(alerting): add syles for optional params 2016-05-11 10:47:51 +02:00
Torkel Ödegaard 549eb15c32 Update latest.json 2016-05-11 10:37:21 +02:00
Torkel Ödegaard 03663c5b28 docs(): updated download links 2016-05-11 10:23:17 +02:00
Torkel Ödegaard 5b42753b8b feat(export): progress on dashboard export 2016-05-10 21:09:15 +02:00
Torkel Ödegaard 79a8017fe9 feat(export): more progress on dashboard export 2016-05-10 20:31:47 +02:00
Leandro Piccilli 0d34740a62 Add support to ElasticSearch 5.0 2016-05-10 19:38:22 +02:00
Torkel Ödegaard db664c61a4 Merge branch 'master' into export-dashboard 2016-05-10 16:46:58 +02:00
bergquist dd47f7382a docs(alerting): initial info 2016-05-10 16:40:46 +02:00
bergquist 33108df13f docs(conf): add warning about alerting in conf file 2016-05-10 16:32:20 +02:00
Torkel Ödegaard cca37caf33 feat(prometheus): began work on prometheus query model 2016-05-10 15:48:07 +02:00
bergquist 1fe2055743 tech(alerting): disable DEL for alert rules in the api 2016-05-10 15:02:11 +02:00
Torkel Ödegaard 4358687bfa Merge branch 'master' into query-part-refactor 2016-05-10 14:38:49 +02:00
Torkel Ödegaard d3bbc245c9 feat(query_part): began query part refactor to be able to reuse it in prometheus query editor 2016-05-10 14:32:25 +02:00
bergquist 5ee1b6ca97 docs(changelog): add note about merged PR 2016-05-10 12:54:25 +02:00
Carl Bergquist c522341136 Merge pull request #4944 from Gueust/optional_tooltip_ordering
Add optional tooltip ordering (against the development branch)
2016-05-10 12:51:44 +02:00
bergquist 2cebe151f2 Merge branch 'master' into development 2016-05-10 12:40:17 +02:00
bergquist 1bb8bc58b8 feat(alerting): add parameteters for filtering alerts 2016-05-10 09:45:56 +02:00
bergquist b8421a478f feat(alerting): move state filter to the right 2016-05-10 08:26:40 +02:00
bergquist 2ddffc8234 feat(alerting): add support for multiple state in ui 2016-05-09 16:32:35 +02:00
bergquist b2cf2e877a test(alerting): improve unit test 2016-05-09 15:19:11 +02:00
bergquist 9da2e6e907 feat(alerting): update path 2016-05-09 15:17:26 +02:00
bergquist 1be513fabd feat(alerting): add support for alert page filter 2016-05-09 14:44:44 +02:00
bergquist 3e462f2914 chore(alerting): style refactoring 2016-05-09 12:10:53 +02:00
bergquist 35c73902da Merge branch 'master' into alerting_definitions 2016-05-09 11:34:56 +02:00
bergquist 47070f2d1f chore(alerting): struct names and url refactoring 2016-05-09 11:25:21 +02:00
bergquist 74d5410a38 feat(alerting): add inital doc page 2016-05-06 15:59:38 +02:00
bergquist 27274f37e8 feat(alerting): update paths for alert state 2016-05-06 14:37:41 +02:00
bergquist 26941284da feat(alerting): add limit and since id options for alert logs 2016-05-04 09:57:53 +02:00
bergquist 7757d6d636 feat(alerting): set default title for alerts 2016-05-04 08:22:44 +02:00
bergquist 2ccb3956a6 feat(alerting): set default value for query 2016-05-03 17:55:41 +02:00
bergquist 1624dc9dfd feat(alerting): separate operator and level 2016-05-03 17:31:04 +02:00
bergquist 27c34745a6 feat(alerting): add link to alerts in side menu 2016-05-03 16:46:10 +02:00
Torkel Ödegaard bb6f4fff87 feat(export/import): minor progress 2016-05-03 16:40:21 +02:00
bergquist 4ea0e6ca93 feat(alerting): remove delete option from alerts page 2016-05-03 16:39:52 +02:00
bergquist 3c7e793c1f feat(alerting): add color to alert state icons 2016-05-03 16:36:49 +02:00
bergquist b0a16a9e6b Merge branch 'master' into alerting_definitions 2016-05-03 14:32:31 +02:00
bergquist 02ae1f79f7 docs(changelog): add node about range to text mappings in singlestat 2016-05-03 10:42:01 +02:00
Torkel Ödegaard f42b47e65b Merge branch 'master' into export-dashboard
Conflicts:
	public/app/features/dashboard/dashnav/dashnav.ts
2016-05-03 10:26:40 +02:00
Torkel Ödegaard de26a17dc7 feat(footer): began work on page footer 2016-05-03 09:00:58 +02:00
bergquist 1c082670c4 feat(alerting): make alertname link to status page 2016-05-02 18:06:17 +02:00
bergquist 7c5c7c6f32 feat(alerting): renames go to dashboard -> edit 2016-05-02 18:02:33 +02:00
bergquist bac89775e2 tech(alerting): fixes broken refactoring 2016-05-02 18:00:10 +02:00
bergquist 9083392341 feat(alerting): to straight for panel in alert link 2016-05-02 17:37:08 +02:00
bergquist b606d9b7da test(alerting): fixes broken test 2016-05-02 16:27:02 +02:00
bergquist 743a6fa37c feat(alerting): add support for deleting alert rules 2016-05-02 16:07:19 +02:00
bergquist a573d2504c feat(alerting): pixels have been pushed 2016-05-02 15:37:18 +02:00
bergquist 05459de344 feat(alerting): add gf icons for alerts page 2016-05-02 15:31:40 +02:00
bergquist 3eab0cde70 feat(alerting): add gf icons for alert state page 2016-05-02 15:20:58 +02:00
bergquist 9c5b4e6f25 feat(alerting): auto convert thresholds if existing 2016-05-02 14:41:29 +02:00
bergquist bc892789c1 feat(alerting): change state from ALERT to CRITICAL 2016-05-02 14:33:38 +02:00
bergquist ca959d1ab0 Merge branch 'master' into alerting_definitions 2016-05-02 13:22:58 +02:00
bergquist de5a39f320 Revert "Revert "Merge branch 'utkarshcmu-rangeMaps'""
This reverts commit 58b91befde.
2016-05-02 13:17:57 +02:00
Jean-Baptiste Lespiau c555bbce3d Add optional tooltip ordering 2016-05-01 01:32:36 +02:00
bergquist de7544fabd fix(alerting): set alertin enabled to false 2016-04-29 15:40:16 +02:00
Torkel Ödegaard f8b4fcdc42 Merge branch 'master' into export-dashboard
Conflicts:
	packaging/publish/publish.sh
2016-04-29 15:01:47 +02:00
Torkel Ödegaard 2546ec062b Merge branch 'master' into dash-edit-mode
Conflicts:
	public/app/features/dashboard/partials/settings.html
2016-04-29 14:50:17 +02:00
bergquist 6d66d9f42d feat(alerting): adds fearture toogle for alerting 2016-04-29 14:35:58 +02:00
Lucas Costa 9b84b88518 Add support to Elasticsearch precision_threshold 2016-04-28 19:23:45 -03:00
bergquist bd30a4d23e Merge branch 'master' into alerting_definitions 2016-04-28 16:04:28 +02:00
bergquist 16cede30f6 feat(alerting): move alertingtab to seperate directive 2016-04-28 16:03:14 +02:00
bergquist f442adca47 feat(alerting): adds api endpoints for alerts per dashboard and panel 2016-04-28 15:13:42 +02:00
bergquist 1f414c1372 test(alerting): add test that validates rule updates do not change state 2016-04-28 11:47:14 +02:00
bergquist ecfbc2edca feat(alerting): adds alert history page 2016-04-28 11:42:03 +02:00
bergquist 5bc3672296 Merge branch 'master' into alerting_definitions 2016-04-28 11:03:33 +02:00
bergquist 0f0fa0c257 feat(alerting): adds endpoint for getting alert states log 2016-04-28 10:59:46 +02:00
bergquist 3ecc13506c feat(alerting): adds alert state go ui 2016-04-28 08:53:34 +02:00
bergquist 1631673485 feat(alerting): dont change state when updating alert definitions 2016-04-28 08:42:51 +02:00
bergquist e7be7d2835 feat(alerting): add api endpoint for alert state 2016-04-28 08:23:50 +02:00
bergquist 6a5ecb3fca feat(alerting): adds basic page for listing alerts 2016-04-27 13:02:28 +02:00
bergquist 3cf6532515 feat(alerting): add json encoding name for properties 2016-04-27 11:44:04 +02:00
bergquist 44dd98e277 tech(alerting): rename alerting sql server 2016-04-27 09:25:11 +02:00
bergquist 7041169ffb feat(alerting): add datasource name field 2016-04-27 09:06:19 +02:00
bergquist 973db1ac38 feat(alerting): add api route for alert changes 2016-04-27 08:59:33 +02:00
bergquist 2e097f4af1 Merge branch 'master' into alerting_definitions 2016-04-26 17:38:29 +02:00
bergquist 9b50313f11 feat(alerting): add api endpoints for listing alerts 2016-04-26 17:36:50 +02:00
bergquist 996eec3ce2 tech(alerting): refactored save alerts code 2016-04-26 16:31:13 +02:00
bergquist 55e83a3d62 feat(alerting): rename alerting dashboard names 2016-04-26 16:06:29 +02:00
bergquist 3ef2be13df feat(alerting): move alert deletion to alert code 2016-04-26 15:48:29 +02:00
bergquist bb42579b0f Merge branch 'master' into alerting_definitions 2016-04-25 16:42:33 +02:00
bergquist ddd826616b feat(alerting): serialize whole target obj from dashboard 2016-04-25 16:38:27 +02:00
bergquist 25f6ec8b53 feat(alerting): add support for alert_rule updates 2016-04-25 16:18:28 +02:00
bergquist c83af353b2 feat(alerting): renames alert table to alert_rule 2016-04-25 14:42:24 +02:00
bergquist 8ca7ccae38 feat(alerting): add functionallity for converting tresholds to alerts 2016-04-25 14:18:45 +02:00
bergquist f167ce19ab test(alerting): add test for deleting alerts 2016-04-25 13:00:05 +02:00
bergquist bdd3e2ad73 Merge branch 'master' into alerting_definitions 2016-04-25 11:22:35 +02:00
bergquist 5d5999561a test(dashboard): add failing test for deleting dashboards 2016-04-25 08:46:15 +02:00
bergquist 44310921b5 test(alerting): add commented failed test 2016-04-25 08:34:48 +02:00
bergquist 03e6fc951f feat(alerting): delete alerts when dashboard gets deleted 2016-04-23 14:14:18 +02:00
bergquist ec6dbe3067 tests(alerting): connect alerts to dashboard 2016-04-23 10:41:50 +02:00
bergquist 84115c8038 feat(alerting): delete alerts when panels are removed 2016-04-22 17:49:50 +02:00
bergquist 8bb62a79d0 feat(alerting): excisting alerts are now updated 2016-04-22 16:51:24 +02:00
bergquist ba5978abd3 Merge branch 'master' into alerting_definitions 2016-04-22 15:52:56 +02:00
bergquist d21f97e69b feat(alerting): adds basic alerting tab 2016-04-21 11:47:30 +02:00
bergquist 96e88ee84d refactor(alerting): changes interval to string from int 2016-04-20 16:57:03 +02:00
bergquist 262821e7e7 feat(alerting): tests that alertes can be read from db 2016-04-20 16:46:24 +02:00
bergquist ef92fd4ebc feat(alerting): renames error_level to crit_level 2016-04-20 15:02:49 +02:00
bergquist 7860a2a1b8 feat(alerting): make sure dashboard id exists 2016-04-20 09:55:32 +02:00
Mitsuhiro Tanda ab9abee67b (cloudwatch) add test for interval variable 2016-04-20 01:27:44 +09:00
bergquist ca3ad7d17c tests(alerting): add tests for saving alerts 2016-04-19 16:52:20 +02:00
Mitsuhiro Tanda 2e5a1328a8 (cloudwatch) support interval template variable 2016-04-19 22:57:34 +09:00
bergquist 832e38af34 feat(alerting): limit alerts to one per panel 2016-04-19 15:34:23 +02:00
bergquist daa5468801 feat(alerting): parses dashboard alerts 2016-04-18 14:15:03 +02:00
bergquist 769016783f feat(alerting): add aggregator field 2016-04-18 11:10:52 +02:00
bergquist bcf10a6483 Merge branch 'master' into alerting_definitions 2016-04-18 10:28:40 +02:00
Matt Toback a7e8e64d78 The beginnings of the build mode and rows 2016-04-15 19:52:18 -04:00
Torkel Ödegaard 5f6ecac3f9 poc(editmode): experimental edit mode 2016-04-15 15:11:40 -04:00
Torkel Ödegaard 0f71838fdf feat(dash export): dashboard export can now replace datasource names with variable and add inputs section 2016-04-14 21:13:01 -04:00
Torkel Ödegaard 4d0b14fbb4 feat(exporter): stared work on dashboard exporter that cleans up repeated panels etc 2016-04-14 17:31:34 -04:00
Torkel Ödegaard 1f9922a5aa refactor(): moved dashboard_srv and DashboardCtrl to typescript 2016-04-14 16:53:19 -04:00
bergquist 91a1a823e2 feat(alerting): add basic tables for alerting definitions 2016-04-13 10:33:45 +02:00
Torkel Ödegaard 75649c49d5 Merge branch 'master' into wizard 2016-04-11 18:18:09 -04:00
Adrian Lopez 9fbb1214ae Allow to show multiple tags with annotations with InfluxDB datasource 2016-04-04 16:57:34 +02:00
Valeriy Simonov 8bf4d3fb7f Merge remote-tracking branch 'refs/remotes/grafana/master' 2016-03-31 15:54:00 +05:00
Torkel Ödegaard 437b880b3e feat(plugins): work on setup wizard started 2016-03-25 22:14:29 +01:00
Shani Elharrar f121e8309d ElasticSearch Terms & Date Histogram: Support 'missing' setting 2016-03-03 22:34:28 +02:00
4902 changed files with 702158 additions and 404301 deletions
-3
View File
@@ -1,3 +0,0 @@
{
"directory": "public/vendor/"
}
+3 -3
View File
@@ -1,7 +1,7 @@
[run]
init_cmds = [
["go", "build", "-o", "./bin/grafana-server", "./pkg/cmd/grafana-server"],
["./bin/grafana-server"]
["./bin/grafana-server", "cfg:app_mode=development"]
]
watch_all = true
watch_dirs = [
@@ -9,9 +9,9 @@ watch_dirs = [
"$WORKDIR/public/views",
"$WORKDIR/conf",
]
watch_exts = [".go", ".ini", ".toml", ".html"]
watch_exts = [".go", ".ini", ".toml"]
build_delay = 1500
cmds = [
["go", "build", "-o", "./bin/grafana-server", "./pkg/cmd/grafana-server"],
["./bin/grafana-server"]
["./bin/grafana-server", "cfg:app_mode=development"]
]
+8 -7
View File
@@ -1,19 +1,20 @@
# http://editorconfig.org
root = true
[*.go]
indent_style = tabs
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
[*.go]
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
+3 -3
View File
@@ -12,11 +12,11 @@ grunt karma:dev
### Run tests for backend assets before commit
```
test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
test -z "$(gofmt -s -l . | grep -v -E 'vendor/(github.com|golang.org|gopkg.in)' | tee /dev/stderr)"
```
### Run tests for frontend assets before commit
```
grunt test
godep go test -v ./pkg/...
npm test
go test -v ./pkg/...
```
+10 -14
View File
@@ -1,20 +1,16 @@
Thank you! For helping us make Grafana even better.
Read before posting:
To help us respond to your issues faster, please make sure to add as much information as possible.
- Questions should be posted to https://community.grafana.com. Please search there and here on GitHub for similar issues before creating a new issue.
- Checkout FAQ: https://community.grafana.com/c/howto/faq
- Checkout How to troubleshoot metric query issues: https://community.grafana.com/t/how-to-troubleshoot-metric-query-issues/50
If this issue is about a plugin, please open the issue in that repository.
Start your issues title with [Feature Request] / [Bug] / [Question] or no tag if your unsure. Also, please be aware that GitHub now supports uploading of screenshots; look at the bottom of this input field.
Please include some basic information:
- What grafana version are you using?
Please include this information:
- What Grafana version are you using?
- What datasource are you using?
- What OS are you running grafana on?
- What did you do?
- What was the expected result?
- What happenend instead?
If you question/bug relates to a metric query / unexpected data visualization, please include:
- An image or text representation of your metric query
- The raw query and response from your data source (check this in chrome dev tools network tab)
- What happened instead?
- If related to metric query / data viz:
- Include raw network request & response: get by opening Chrome Dev Tools (F12, Ctrl+Shift+I on windows, Cmd+Opt+I on Mac), go the network tab.
+3 -1
View File
@@ -1,2 +1,4 @@
* Link the PR to an issue for new features
* Rebase your PR if it gets out of sync with master
* Rebase your PR if it gets out of sync with master
**REMOVE THE TEXT ABOVE BEFORE CREATING THE PULL REQUEST**
+27 -4
View File
@@ -4,18 +4,21 @@ coverage/
.aws-config.json
awsconfig
/dist
/public/build
/public/views/index.html
/emails/dist
/public_gen
/public/vendor/npm
/tmp
vendor/phantomjs/phantomjs
tools/phantomjs/phantomjs
tools/phantomjs/phantomjs.exe
profile.out
coverage.txt
docs/AWS_S3_BUCKET
docs/GIT_BRANCH
docs/VERSION
docs/GITCOMMIT
docs/changed-files
docs/changed-files
# locally required config files
public/css/*.min.css
@@ -25,6 +28,9 @@ public/css/*.min.css
*.swp
.idea/
*.iml
*.tmp
.DS_Store
.vscode/
/data/*
/bin/*
@@ -32,9 +38,26 @@ public/css/*.min.css
conf/custom.ini
fig.yml
docker-compose.yml
docker-compose.yaml
/conf/provisioning/**/custom.yaml
profile.cov
/grafana
.notouch
/pkg/cmd/grafana-cli/grafana-cli
/pkg/cmd/grafana-server/grafana-server
/examples/*/dist
/pkg/cmd/grafana-server/debug
debug.test
/examples/*/dist
/packaging/**/*.rpm
/packaging/**/*.deb
# Ignore OSX indexing
.DS_Store
/vendor/**/*.py
/vendor/**/*.xml
/vendor/**/*.yml
/vendor/**/*_test.go
/vendor/**/.editorconfig
/vendor/**/appengine*
*.orig
-10
View File
@@ -1,10 +0,0 @@
#!/usr/bin/env bash
test -z "$(gofmt -s -l . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
if [ $? -gt 0 ]; then
echo "Some files aren't formatted, please run 'go fmt ./pkg/...' to format your source code before committing"
exit 1
fi
grunt test
+1 -1
View File
@@ -10,4 +10,4 @@
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideParentheses": true,
"validateIndentation": 2
}
}
-21
View File
@@ -1,21 +0,0 @@
{
"preset" : "default",
"lineBreak" : {
"before" : {
"VariableDeclarationWithoutInit" : 0,
},
"after": {
"AssignmentOperator": -1,
"ArgumentListArrayExpression": ">=1"
}
},
"whiteSpace" : {
"before" : {
},
"after" : {
}
}
}
+2 -2
View File
@@ -1,10 +1,10 @@
{
"browser": true,
"esversion": 6,
"bitwise":false,
"curly": true,
"eqnull": true,
"strict": true,
"strict": false,
"devel": true,
"eqeqeq": true,
"forin": false,
+697 -2
View File
@@ -1,5 +1,700 @@
# 3.0.0 Stable (2016-05-11)
# 5.0.0-beta2 (2018-02-15)
### Fixes
- **Permissions** Fixed search permissions issues [#10822](https://github.com/grafana/grafana/issues/10822)
- **Permissions** Fixed problem issues displaying permissions lists [#10864](https://github.com/grafana/grafana/issues/10864)
- **PNG-Rendering** Fixed problem rendering legend to the right [#10526](https://github.com/grafana/grafana/issues/10526)
- **Reset password** Fixed problem with reset password form [#10870](https://github.com/grafana/grafana/issues/10870)
- **Light theme** Fixed problem with light theme in safari, [#10869](https://github.com/grafana/grafana/issues/10869)
- **Provisioning** Now handles deletes when dashboard json files removed from disk [#10865](https://github.com/grafana/grafana/issues/10865)
- **MySQL** Fixed issue with schema migration on old mysql (index too long) [#10779](https://github.com/grafana/grafana/issues/10779)
- **Github OAuth** Fixed fetching github orgs from private github org [#10823](https://github.com/grafana/grafana/issues/10823)
- **Embedding** Fixed issues embedding panel [#10787](https://github.com/grafana/grafana/issues/10787)
# 5.0.0-beta1 (2018-02-05)
Grafana v5.0 is going to be the biggest and most foundational release Grafana has ever had, coming with a ton of UX improvements, a new dashboard grid engine, dashboard folders, user teams and permissions. Checkout out this [video preview](https://www.youtube.com/watch?v=Izr0IBgoTZQ) of Grafana v5.
### New Major Features
- **Dashboards** Dashboard folders, [#1611](https://github.com/grafana/grafana/issues/1611)
- **Teams** User groups (teams) implemented. Can be used in folder & dashboard permission list.
- **Dashboard grid**: Panels are now layed out in a two dimensional grid (with x, y, w, h). [#9093](https://github.com/grafana/grafana/issues/9093).
- **Templating**: Vertical repeat direction for panel repeats.
- **UX**: Major update to page header and navigation
- **Dashboard settings**: Combine dashboard settings views into one with side menu, [#9750](https://github.com/grafana/grafana/issues/9750)
- **Persistent dashboard url's**: New url's for dashboards that allows renaming dashboards without breaking links. [#7883](https://github.com/grafana/grafana/issues/7883)
## Breaking changes
* **[dashboard.json]** have been replaced with [dashboard provisioning](http://docs.grafana.org/administration/provisioning/).
Config files for provisioning datasources as configuration have changed from `/conf/datasources` to `/conf/provisioning/datasources`.
From `/etc/grafana/datasources` to `/etc/grafana/provisioning/datasources` when installed with deb/rpm packages.
* **Pagerduty** The notifier now defaults to not auto resolve incidents. More details at [#10222](https://github.com/grafana/grafana/issues/10222)
* **HTTP API**
- `GET /api/alerts` property dashboardUri renamed to url and is now the full url (that is including app sub url).
## New Dashboard Grid
The new grid engine is a major upgrade for how you can position and move panels. It enables new layouts and a much easier dashboard building experience. The change is backward compatible. So you can upgrade your current version to 5.0 without breaking dashboards, but you cannot downgrade from 5.0 to previous versions. Grafana will automatically upgrade your dashboards to the new schema and position panels to match your existing layout. There might be minor differences in panel height. If you upgrade to 5.0 and for some reason want to rollback to the previous version you can restore dashboards to previous versions using dashboard history. But that should only be seen as an emergency solution.
Dashboard panels and rows are positioned using a gridPos object `{x: 0, y: 0, w: 24, h: 5}`. Units are in grid dimensions (24 columns, 1 height unit 30px). Rows and Panels objects exist (together) in a flat array directly on the dashboard root object. Rows are not needed for layouts anymore and are mainly there for backward compatibility. Some panel plugins that do not respect their panel height might require an update.
## New Features
* **Alerting**: Add support for internal image store [#6922](https://github.com/grafana/grafana/issues/6922), thx [@FunkyM](https://github.com/FunkyM)
* **Data Source Proxy**: Add support for whitelisting specified cookies that will be passed through to the data source when proxying data source requests [#5457](https://github.com/grafana/grafana/issues/5457), thanks [@robingustafsson](https://github.com/robingustafsson)
* **Postgres/MySQL**: add __timeGroup macro for mysql [#9596](https://github.com/grafana/grafana/pull/9596), thanks [@svenklemm](https://github.com/svenklemm)
* **Text**: Text panel are now edited in the ace editor. [#9698](https://github.com/grafana/grafana/pull/9698), thx [@mtanda](https://github.com/mtanda)
* **Teams**: Add Microsoft Teams notifier as [#8523](https://github.com/grafana/grafana/issues/8523), thx [@anthu](https://github.com/anthu)
* **Datasources**: Its now possible to configure datasources with config files [#1789](https://github.com/grafana/grafana/issues/1789)
* **Graphite**: Query editor updated to support new query by tag features [#9230](https://github.com/grafana/grafana/issues/9230)
* **Dashboard history**: New config file option versions_to_keep sets how many versions per dashboard to store, [#9671](https://github.com/grafana/grafana/issues/9671)
* **Dashboard as cfg**: Load dashboards from file into Grafana on startup/change [#9654](https://github.com/grafana/grafana/issues/9654) [#5269](https://github.com/grafana/grafana/issues/5269)
* **Prometheus**: Grafana can now send alerts to Prometheus Alertmanager while firing [#7481](https://github.com/grafana/grafana/issues/7481), thx [@Thib17](https://github.com/Thib17) and [@mtanda](https://github.com/mtanda)
* **Table**: Support multiple table formated queries in table panel [#9170](https://github.com/grafana/grafana/issues/9170), thx [@davkal](https://github.com/davkal)
* **Security**: Protect against brute force (frequent) login attempts [#7616](https://github.com/grafana/grafana/issues/7616)
## Minor
* **Graph**: Don't hide graph display options (Lines/Points) when draw mode is unchecked [#9770](https://github.com/grafana/grafana/issues/9770), thx [@Jonnymcc](https://github.com/Jonnymcc)
* **Prometheus**: Show label name in paren after by/without/on/ignoring/group_left/group_right [#9664](https://github.com/grafana/grafana/pull/9664), thx [@mtanda](https://github.com/mtanda)
* **Alert panel**: Adds placeholder text when no alerts are within the time range [#9624](https://github.com/grafana/grafana/issues/9624), thx [@straend](https://github.com/straend)
* **Mysql**: MySQL enable MaxOpenCon and MaxIdleCon regards how constring is configured. [#9784](https://github.com/grafana/grafana/issues/9784), thx [@dfredell](https://github.com/dfredell)
* **Cloudwatch**: Fixes broken query inspector for cloudwatch [#9661](https://github.com/grafana/grafana/issues/9661), thx [@mtanda](https://github.com/mtanda)
* **Dashboard**: Make it possible to start dashboards from search and dashboard list panel [#1871](https://github.com/grafana/grafana/issues/1871)
* **Annotations**: Posting annotations now return the id of the annotation [#9798](https://github.com/grafana/grafana/issues/9798)
* **Systemd**: Use systemd notification ready flag [#10024](https://github.com/grafana/grafana/issues/10024), thx [@jgrassler](https://github.com/jgrassler)
* **Github**: Use organizations_url provided from github to verify user belongs in org. [#10111](https://github.com/grafana/grafana/issues/10111), thx
[@adiletmaratov](https://github.com/adiletmaratov)
* **Backend**: Fixed bug where Grafana exited before all sub routines where finished [#10131](https://github.com/grafana/grafana/issues/10131)
* **Azure**: Adds support for Azure blob storage as external image stor [#8955](https://github.com/grafana/grafana/issues/8955), thx [@saada](https://github.com/saada)
* **Telegram**: Add support for inline image uploads to telegram notifier plugin [#9967](https://github.com/grafana/grafana/pull/9967), thx [@rburchell](https://github.com/rburchell)
## Fixes
* **Sensu**: Send alert message to sensu output [#9551](https://github.com/grafana/grafana/issues/9551), thx [@cjchand](https://github.com/cjchand)
* **Singlestat**: suppress error when result contains no datapoints [#9636](https://github.com/grafana/grafana/issues/9636), thx [@utkarshcmu](https://github.com/utkarshcmu)
* **Postgres/MySQL**: Control quoting in SQL-queries when using template variables [#9030](https://github.com/grafana/grafana/issues/9030), thanks [@svenklemm](https://github.com/svenklemm)
* **Pagerduty**: Pagerduty dont auto resolve incidents by default anymore. [#10222](https://github.com/grafana/grafana/issues/10222)
* **Cloudwatch**: Fix for multi-valued templated queries. [#9903](https://github.com/grafana/grafana/issues/9903)
## Tech
* **RabbitMq**: Remove support for publishing events to RabbitMQ [#9645](https://github.com/grafana/grafana/issues/9645)
## Deprecation notes
### HTTP API
The following operations have been deprecated and will be removed in a future release:
- `GET /api/dashboards/db/:slug` -> Use `GET /api/dashboards/uid/:uid` instead
- `DELETE /api/dashboards/db/:slug` -> Use `DELETE /api/dashboards/uid/:uid` instead
The following properties have been deprecated and will be removed in a future release:
- `uri` property in `GET /api/search` -> Use new `url` or `uid` property instead
- `meta.slug` property in `GET /api/dashboards/uid/:uid` and `GET /api/dashboards/db/:slug` -> Use new `meta.url` or `dashboard.uid` property instead
# 4.6.3 (2017-12-14)
## Fixes
* **Gzip**: Fixes bug gravatar images when gzip was enabled [#5952](https://github.com/grafana/grafana/issues/5952)
* **Alert list**: Now shows alert state changes even after adding manual annotations on dashboard [#9951](https://github.com/grafana/grafana/issues/9951)
* **Alerting**: Fixes bug where rules evaluated as firing when all conditions was false and using OR operator. [#9318](https://github.com/grafana/grafana/issues/9318)
* **Cloudwatch**: CloudWatch no longer display metrics' default alias [#10151](https://github.com/grafana/grafana/issues/10151), thx [@mtanda](https://github.com/mtanda)
# 4.6.2 (2017-11-16)
## Important
* **Prometheus**: Fixes bug with new prometheus alerts in Grafana. Make sure to download this version if your using Prometheus for alerting. More details in the issue. [#9777](https://github.com/grafana/grafana/issues/9777)
## Fixes
* **Color picker**: Bug after using textbox input field to change/paste color string [#9769](https://github.com/grafana/grafana/issues/9769)
* **Cloudwatch**: Fix for cloudwatch templating query `ec2_instance_attribute` [#9667](https://github.com/grafana/grafana/issues/9667), thanks [@mtanda](https://github.com/mtanda)
* **Heatmap**: Fixed tooltip for "time series buckets" mode [#9332](https://github.com/grafana/grafana/issues/9332)
* **InfluxDB**: Fixed query editor issue when using `>` or `<` operators in WHERE clause [#9871](https://github.com/grafana/grafana/issues/9871)
# 4.6.1 (2017-11-01)
* **Singlestat**: Lost thresholds when using save dashboard as [#9681](https://github.com/grafana/grafana/issues/9681)
* **Graph**: Fix for series override color picker [#9715](https://github.com/grafana/grafana/issues/9715)
* **Go**: build using golang 1.9.2 [#9713](https://github.com/grafana/grafana/issues/9713)
* **Plugins**: Fixed problem with loading plugin js files behind auth proxy [#9509](https://github.com/grafana/grafana/issues/9509)
* **Graphite**: Annotation tooltip should render empty string when undefined [#9707](https://github.com/grafana/grafana/issues/9707)
# 4.6.0 (2017-10-26)
## Fixes
* **Alerting**: Viewer can no longer pause alert rules [#9640](https://github.com/grafana/grafana/issues/9640)
* **Playlist**: Bug where playlist controls was missing [#9639](https://github.com/grafana/grafana/issues/9639)
* **Firefox**: Creating region annotations now work in firefox [#9638](https://github.com/grafana/grafana/issues/9638)
# 4.6.0-beta3 (2017-10-23)
## Fixes
* **Prometheus**: Fix for browser crash for short time ranges. [#9575](https://github.com/grafana/grafana/issues/9575)
* **Heatmap**: Fix for y-axis not showing. [#9576](https://github.com/grafana/grafana/issues/9576)
* **Save to file**: Fix for save to file in export modal. [#9586](https://github.com/grafana/grafana/issues/9586)
* **Postgres**: modify group by time macro so it can be used in select clause [#9527](https://github.com/grafana/grafana/pull/9527), thanks [@svenklemm](https://github.com/svenklemm)
# 4.6.0-beta2 (2017-10-17)
## Fixes
* **ColorPicker**: Fix for color picker not showing [#9549](https://github.com/grafana/grafana/issues/9549)
* **Alerting**: Fix for broken test rule button in alert tab [#9539](https://github.com/grafana/grafana/issues/9539)
* **Cloudwatch**: Provide error message when failing to add cloudwatch datasource [#9534](https://github.com/grafana/grafana/pull/9534), thx [@mtanda](https://github.com/mtanda)
* **Cloudwatch**: Fix unused period parameter [#9536](https://github.com/grafana/grafana/pull/9536), thx [@mtanda](https://github.com/mtanda)
* **CSV Export**: Fix for broken CSV export [#9525](https://github.com/grafana/grafana/issues/9525)
* **Text panel**: Fix for issue with break lines in Firefox [#9491](https://github.com/grafana/grafana/issues/9491)
* **Annotations**: Fix for issue saving annotation event in MySQL DB [#9550](https://github.com/grafana/grafana/issues/9550), thanks [@krise3k](https://github.com/krise3k)
# 4.6.0-beta1 (2017-10-13)
## New Features
* **Annotations**: Add support for creating annotations from graph panel [#8197](https://github.com/grafana/grafana/pull/8197)
* **GCS**: Adds support for Google Cloud Storage [#8370](https://github.com/grafana/grafana/issues/8370) thx [@chuhlomin](https://github.com/chuhlomin)
* **Prometheus**: Adds /metrics endpoint for exposing Grafana metrics. [#9187](https://github.com/grafana/grafana/pull/9187)
* **Graph**: Add support for local formating in axis. [#1395](https://github.com/grafana/grafana/issues/1395), thx [@m0nhawk](https://github.com/m0nhawk)
* **Jaeger**: Add support for open tracing using jaeger in Grafana. [#9213](https://github.com/grafana/grafana/pull/9213)
* **Unit types**: New date & time unit types added, useful in singlestat to show dates & times. [#3678](https://github.com/grafana/grafana/issues/3678), [#6710](https://github.com/grafana/grafana/issues/6710), [#2764](https://github.com/grafana/grafana/issues/2764)
* **CLI**: Make it possible to install plugins from any url [#5873](https://github.com/grafana/grafana/issues/5873)
* **Prometheus**: Add support for instant queries [#5765](https://github.com/grafana/grafana/issues/5765), thx [@mtanda](https://github.com/mtanda)
* **Cloudwatch**: Add support for alerting using the cloudwatch datasource [#8050](https://github.com/grafana/grafana/pull/8050), thx [@mtanda](https://github.com/mtanda)
* **Pagerduty**: Include triggering series in pagerduty notification [#8479](https://github.com/grafana/grafana/issues/8479), thx [@rickymoorhouse](https://github.com/rickymoorhouse)
* **Timezone**: Time ranges like Today & Yesterday now work correctly when timezone setting is set to UTC [#8916](https://github.com/grafana/grafana/issues/8916), thx [@ctide](https://github.com/ctide)
* **Prometheus**: Align $__interval with the step parameters. [#9226](https://github.com/grafana/grafana/pull/9226), thx [@alin-amana](https://github.com/alin-amana)
* **Prometheus**: Autocomplete for label name and label value [#9208](https://github.com/grafana/grafana/pull/9208), thx [@mtanda](https://github.com/mtanda)
* **Postgres**: New Postgres data source [#9209](https://github.com/grafana/grafana/pull/9209), thx [@svenklemm](https://github.com/svenklemm)
* **Datasources**: Make datasource HTTP requests verify TLS by default. closes [#9371](https://github.com/grafana/grafana/issues/9371), [#5334](https://github.com/grafana/grafana/issues/5334), [#8812](https://github.com/grafana/grafana/issues/8812), thx [@mattbostock](https://github.com/mattbostock)
* **OAuth**: Verify TLS during OAuth callback [#9373](https://github.com/grafana/grafana/issues/9373), thx [@mattbostock](https://github.com/mattbostock)
## Minor
* **SMTP**: Make it possible to set specific HELO for smtp client. [#9319](https://github.com/grafana/grafana/issues/9319)
* **Dataproxy**: Allow grafana 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)
* **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 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)
* **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)
* **Kafka**: Add support for sending alert notifications to kafka [#7104](https://github.com/grafana/grafana/issues/7104), thx [@utkarshcmu](https://github.com/utkarshcmu)
* **Alerting**: add count_non_null as series reducer [#9516](https://github.com/grafana/grafana/issues/9516)
## Tech
* **Go**: Grafana is now built using golang 1.9
* **Webpack**: Changed from systemjs to webpack (see readme or building from source guide for new build instructions). Systemjs is still used to load plugins but now plugins can only import a limited set of dependencies. See [PLUGIN_DEV.md](https://github.com/grafana/grafana/blob/master/PLUGIN_DEV.md) for more details on how this can effect some plugins.
# 4.5.2 (2017-09-22)
## Fixes
* **Graphite**: Fix for issues with jsonData & graphiteVersion null errors [#9258](https://github.com/grafana/grafana/issues/9258)
* **Graphite**: Fix for Grafana internal metrics to Graphite sending NaN values [#9279](https://github.com/grafana/grafana/issues/9279)
* **HTTP API**: Fix for HEAD method requests [#9307](https://github.com/grafana/grafana/issues/9307)
* **Templating**: Fix for duplicate template variable queries when refresh is set to time range change [#9185](https://github.com/grafana/grafana/issues/9185)
* **Metrics**: dont write NaN values to graphite [#9279](https://github.com/grafana/grafana/issues/9279)
# 4.5.1 (2017-09-15)
## Fixes
* **MySQL**: Fixed issue with query editor not showing [#9247](https://github.com/grafana/grafana/issues/9247)
## Breaking changes
* **Metrics**: The metric structure for internal metrics about Grafana published to graphite has changed. This might break dashboards for internal metrics.
# 4.5.0 (2017-09-14)
## Fixes & Enhancements since beta1
* **Security**: Security fix for api vulnerability (in multiple org setups).
* **Shortcuts**: Adds shortcut for creating new dashboard [#8876](https://github.com/grafana/grafana/pull/8876) thx [@mtanda](https://github.com/mtanda)
* **Graph**: Right Y-Axis label position fixed [#9172](https://github.com/grafana/grafana/pull/9172)
* **General**: Improve rounding of time intervals [#9197](https://github.com/grafana/grafana/pull/9197), thx [@alin-amana](https://github.com/alin-amana)
# 4.5.0-beta1 (2017-09-05)
## New Features
* **Table panel**: Render cell values as links that can have an url template that uses variables from current table row. [#3754](https://github.com/grafana/grafana/issues/3754)
* **Elasticsearch**: Add ad hoc filters directly by clicking values in table panel [#8052](https://github.com/grafana/grafana/issues/8052).
* **MySQL**: New rich query editor with syntax highlighting
* **Prometheus**: New rich query editor with syntax highlighting, metric & range auto complete and integrated function docs. [#5117](https://github.com/grafana/grafana/issues/5117)
## Enhancements
* **GitHub OAuth**: Support for GitHub organizations with 100+ teams. [#8846](https://github.com/grafana/grafana/issues/8846), thx [@skwashd](https://github.com/skwashd)
* **Graphite**: Calls to Graphite api /metrics/find now include panel or dashboad time range (from & until) in most cases, [#8055](https://github.com/grafana/grafana/issues/8055)
* **Graphite**: Added new graphite 1.0 functions, available if you set version to 1.0.x in data source settings. New Functions: mapSeries, reduceSeries, isNonNull, groupByNodes, offsetToZero, grep, weightedAverage, removeEmptySeries, aggregateLine, averageOutsidePercentile, delay, exponentialMovingAverage, fallbackSeries, integralByInterval, interpolate, invert, linearRegression, movingMin, movingMax, movingSum, multiplySeriesWithWildcards, pow, powSeries, removeBetweenPercentile, squareRoot, timeSlice, closes [#8261](https://github.com/grafana/grafana/issues/8261)
- **Elasticsearch**: Ad-hoc filters now use query phrase match filters instead of term filters, works on non keyword/raw fields [#9095](https://github.com/grafana/grafana/issues/9095).
### Breaking change
* **InfluxDB/Elasticsearch**: The panel & data source option named "Group by time interval" is now named "Min time interval" and does now always define a lower limit for the auto group by time. Without having to use `>` prefix (that prefix still works). This should in theory have close to zero actual impact on existing dashboards. It does mean that if you used this setting to define a hard group by time interval of, say "1d", if you zoomed to a time range wide enough the time range could increase above the "1d" range as the setting is now always considered a lower limit.
* **Elasticsearch**: Elasticsearch metric queries without date histogram now return table formated data making table panel much easier to use for this use case. Should not break/change existing dashboards with stock panels but external panel plugins can be affected.
## Changes
* **InfluxDB**: Change time range filter for absolute time ranges to be inclusive instead of exclusive [#8319](https://github.com/grafana/grafana/issues/8319), thx [@Oxydros](https://github.com/Oxydros)
* **InfluxDB**: Added paranthesis around tag filters in queries [#9131](https://github.com/grafana/grafana/pull/9131)
## Bug Fixes
* **Modals**: Maintain scroll position after opening/leaving modal [#8800](https://github.com/grafana/grafana/issues/8800)
* **Templating**: You cannot select data source variables as data source for other template variables [#7510](https://github.com/grafana/grafana/issues/7510)
* **MySQL/Postgres**: Fix for max_idle_conn option default which was wrongly set to zero which does not mean unlimited but means zero, which in practice kind of disables connection pooling, which is not good. Fixes [#8513](https://github.com/grafana/grafana/issues/8513)
# 4.4.3 (2017-08-07)
## Bug Fixes
* **Search**: Fix for issue that casued search view to hide when you clicked starred or tags filters, fixes [#8981](https://github.com/grafana/grafana/issues/8981)
* **Modals**: ESC key now closes modal again, fixes [#8981](https://github.com/grafana/grafana/issues/8988), thx [@j-white](https://github.com/j-white)
# 4.4.2 (2017-08-01)
## Bug Fixes
* **GrafanaDB(mysql)**: Fix for dashboard_version.data column type, now changed to MEDIUMTEXT, fixes [#8813](https://github.com/grafana/grafana/issues/8813)
* **Dashboard(settings)**: Closing setting views using ESC key did not update url correctly, fixes [#8869](https://github.com/grafana/grafana/issues/8869)
* **InfluxDB**: Wrong username/password parameter name when using direct access, fixes [#8789](https://github.com/grafana/grafana/issues/8789)
* **Forms(TextArea)**: Bug fix for no scroll in text areas [#8797](https://github.com/grafana/grafana/issues/8797)
* **Png Render API**: Bug fix for timeout url parameter. It now works as it should. Default value was also increased from 30 to 60 seconds [#8710](https://github.com/grafana/grafana/issues/8710)
* **Search**: Fix for not being able to close search by clicking on right side of search result container, [8848](https://github.com/grafana/grafana/issues/8848)
* **Cloudwatch**: Fix for using variables in templating metrics() query, [8965](https://github.com/grafana/grafana/issues/8965)
## Changes
* **Settings(defaults)**: allow_sign_up default changed from true to false [#8743](https://github.com/grafana/grafana/issues/8743)
* **Settings(defaults)**: allow_org_create default changed from true to false
# 4.4.1 (2017-07-05)
## Bug Fixes
* **Migrations**: migration fails where dashboard.created_by is null [#8783](https://github.com/grafana/grafana/issues/8783)
# 4.4.0 (2017-07-04)
## New Features
**Dashboard History**: View dashboard version history, compare any two versions (summary & json diffs), restore to old version. This big feature
was contributed by **Walmart Labs**. Big thanks to them for this massive contribution!
Initial feature request: [#4638](https://github.com/grafana/grafana/issues/4638)
Pull Request: [#8472](https://github.com/grafana/grafana/pull/8472)
## Enhancements
* **Elasticsearch**: Added filter aggregation label [#8420](https://github.com/grafana/grafana/pull/8420), thx [@tianzk](github.com/tianzk)
* **Sensu**: Added option for source and handler [#8405](https://github.com/grafana/grafana/pull/8405), thx [@joemiller](github.com/joemiller)
* **CSV**: Configurable csv export datetime format [#8058](https://github.com/grafana/grafana/issues/8058), thx [@cederigo](github.com/cederigo)
* **Table Panel**: Column style that preserves formatting/indentation (like pre tag) [#6617](https://github.com/grafana/grafana/issues/6617)
* **DingDing**: Add DingDing Alert Notifier [#8473](https://github.com/grafana/grafana/pull/8473) thx [@jiamliang](https://github.com/jiamliang)
## Minor Enhancements
* **Elasticsearch**: Add option for result set size in raw_document [#3426](https://github.com/grafana/grafana/issues/3426) [#8527](https://github.com/grafana/grafana/pull/8527), thx [@mk-dhia](github.com/mk-dhia)
## Bug Fixes
* **Graph**: Bug fix for negative values in histogram mode [#8628](https://github.com/grafana/grafana/issues/8628)
# 4.3.2 (2017-05-31)
## Bug fixes
* **InfluxDB**: Fixed issue with query editor not showing ALIAS BY input field when in text editor mode [#8459](https://github.com/grafana/grafana/issues/8459)
* **Graph Log Scale**: Fixed issue with log scale going below x-axis [#8244](https://github.com/grafana/grafana/issues/8244)
* **Playlist**: Fixed dashboard play order issue [#7688](https://github.com/grafana/grafana/issues/7688)
* **Elasticsearch**: Fixed table query issue with ES 2.x [#8467](https://github.com/grafana/grafana/issues/8467), thx [@goldeelox](https://github.com/goldeelox)
## Changes
* **Lazy Loading Of Panels**: Panels are no longer loaded as they are scrolled into view, this was reverted due to Chrome bug, might be reintroduced when Chrome fixes it's JS blocking behavior on scroll. [#8500](https://github.com/grafana/grafana/issues/8500)
# 4.3.1 (2017-05-23)
## Bug fixes
* **S3 image upload**: Fixed image url issue for us-east-1 (us standard) region. If you were missing slack images for alert notifications this should fix it. [#8444](https://github.com/grafana/grafana/issues/8444)
# 4.3.0-stable (2017-05-23)
## Bug fixes
* **Gzip**: Fixed crash when gzip was enabled [#8380](https://github.com/grafana/grafana/issues/8380)
* **Graphite**: Fixed issue with Toggle edit mode did in query editor [#8377](https://github.com/grafana/grafana/issues/8377)
* **Alerting**: Fixed issue with state history not showing query execution errors [#8412](https://github.com/grafana/grafana/issues/8412)
* **Alerting**: Fixed issue with missing state history events/annotations when using sqlite3 database [#7992](https://github.com/grafana/grafana/issues/7992)
* **Sqlite**: Fixed with database table locked and using sqlite3 database [#7992](https://github.com/grafana/grafana/issues/7992)
* **Alerting**: Fixed issue with annotations showing up in unsaved dashboards, new graph & alert panel. [#8361](https://github.com/grafana/grafana/issues/8361)
* **webdav**: Fixed http proxy env variable support for webdav image upload [#7922](https://github.com/grafana/grafana/issues/79222), thx [@berghauz](https://github.com/berghauz)
* **Prometheus**: Fixed issue with hiding query [#8413](https://github.com/grafana/grafana/issues/8413)
## Enhancements
* **VictorOps**: Now supports panel image & auto resolve [#8431](https://github.com/grafana/grafana/pull/8431), thx [@davidmscott](https://github.com/davidmscott)
* **Alerting**: Alert annotations now provide more info [#8421](https://github.com/grafana/grafana/pull/8421)
# 4.3.0-beta1 (2017-05-12)
## Enhancements
* **InfluxDB**: influxdb query builder support for ORDER BY and LIMIT (allows TOPN queries) [#6065](https://github.com/grafana/grafana/issues/6065) Support influxdb's SLIMIT Feature [#7232](https://github.com/grafana/grafana/issues/7232) thx [@thuck](https://github.com/thuck)
* **Panels**: Delay loading & Lazy load panels as they become visible (scrolled into view) [#5216](https://github.com/grafana/grafana/issues/5216) thx [@jifwin](https://github.com/jifwin)
* **Graph**: Support auto grid min/max when using log scale [#3090](https://github.com/grafana/grafana/issues/3090), thx [@bigbenhur](https://github.com/bigbenhur)
* **Graph**: Support for histograms [#600](https://github.com/grafana/grafana/issues/600)
* **Prometheus**: Support table response formats (column per label) [#6140](https://github.com/grafana/grafana/issues/6140), thx [@mtanda](https://github.com/mtanda)
* **Single Stat Panel**: support for non time series data [#6564](https://github.com/grafana/grafana/issues/6564)
* **Server**: Monitoring Grafana (health check endpoint) [#3302](https://github.com/grafana/grafana/issues/3302)
* **Heatmap**: Heatmap Panel [#7934](https://github.com/grafana/grafana/pull/7934)
* **Elasticsearch**: histogram aggregation [#3164](https://github.com/grafana/grafana/issues/3164)
## Minor Enhancements
* **InfluxDB**: Small fix for the "glow" when focus the field for LIMIT and SLIMIT [#7799](https://github.com/grafana/grafana/pull/7799) thx [@thuck](https://github.com/thuck)
* **Prometheus**: Make Prometheus query field a textarea [#7663](https://github.com/grafana/grafana/issues/7663), thx [@hagen1778](https://github.com/hagen1778)
* **Prometheus**: Step parameter changed semantics to min step to reduce the load on Prometheus and rendering in browser [#8073](https://github.com/grafana/grafana/pull/8073), thx [@bobrik](https://github.com/bobrik)
* **Templating**: Should not be possible to create self-referencing (recursive) template variable definitions [#7614](https://github.com/grafana/grafana/issues/7614) thx [@thuck](https://github.com/thuck)
* **Cloudwatch**: Correctly obtain IAM roles within ECS container tasks [#7892](https://github.com/grafana/grafana/issues/7892) thx [@gomlgs](https://github.com/gomlgs)
* **Units**: New number format: Scientific notation [#7781](https://github.com/grafana/grafana/issues/7781) thx [@cadnce](https://github.com/cadnce)
* **Oauth**: Add common type for oauth authorization errors [#6428](https://github.com/grafana/grafana/issues/6428) thx [@amenzhinsky](https://github.com/amenzhinsky)
* **Templating**: Data source variable now supports multi value and panel repeats [#7030](https://github.com/grafana/grafana/issues/7030) thx [@mtanda](https://github.com/mtanda)
* **Telegram**: Telegram alert is not sending metric and legend. [#8110](https://github.com/grafana/grafana/issues/8110), thx [@bashgeek](https://github.com/bashgeek)
* **Graph**: Support dashed lines [#514](https://github.com/grafana/grafana/issues/514), thx [@smalik03](https://github.com/smalik03)
* **Table**: Support to change column header text [#3551](https://github.com/grafana/grafana/issues/3551)
* **Alerting**: Better error when SMTP is not configured [#8093](https://github.com/grafana/grafana/issues/8093)
* **Pushover**: Add an option to attach graph image link in Pushover notification [#8043](https://github.com/grafana/grafana/issues/8043) thx [@devkid](https://github.com/devkid)
* **WebDAV**: Allow to set different ImageBaseUrl for WebDAV upload and image link [#7914](https://github.com/grafana/grafana/issues/7914)
* **Panels**: type-ahead mixed datasource selection [#7697](https://github.com/grafana/grafana/issues/7697) thx [@mtanda](https://github.com/mtanda)
* **Security**:User enumeration problem [#7619](https://github.com/grafana/grafana/issues/7619)
* **InfluxDB**: Register new queries available in InfluxDB - Holt Winters [#5619](https://github.com/grafana/grafana/issues/5619) thx [@rikkuness](https://github.com/rikkuness)
* **Server**: Support listening on a UNIX socket [#4030](https://github.com/grafana/grafana/issues/4030), thx [@mitjaziv](https://github.com/mitjaziv)
* **Graph**: Support log scaling for values smaller 1 [#5278](https://github.com/grafana/grafana/issues/5278)
* **InfluxDB**: Slow 'select measurement' rendering for InfluxDB [#2524](https://github.com/grafana/grafana/issues/2524), thx [@sbhenderson](https://github.com/sbhenderson)
* **Config**: Configurable signout menu activation [#7968](https://github.com/grafana/grafana/pull/7968), thx [@seuf](https://github.com/seuf)
## Fixes
* **Table Panel**: Fixed annotation display in table panel, [#8023](https://github.com/grafana/grafana/issues/8023)
* **Dashboard**: If refresh is blocked due to tab not visible, then refresh when it becomes visible [#8076](https://github.com/grafana/grafana/issues/8076) thanks [@SimenB](https://github.com/SimenB)
* **Snapshots**: Fixed problem with annotations & snapshots [#7659](https://github.com/grafana/grafana/issues/7659)
* **Graph**: MetricSegment loses type when value is an asterisk [#8277](https://github.com/grafana/grafana/issues/8277), thx [@Gordiychuk](https://github.com/Gordiychuk)
* **Alerting**: Alert notifications do not show charts when using a non public S3 bucket [#8250](https://github.com/grafana/grafana/issues/8250) thx [@rogerswingle](https://github.com/rogerswingle)
* **Graph**: 100% client CPU usage on red alert glow animation [#8222](https://github.com/grafana/grafana/issues/8222)
* **InfluxDB**: Templating: "All" query does match too much [#8165](https://github.com/grafana/grafana/issues/8165)
* **Dashboard**: Description tooltip is not fully displayed [#7970](https://github.com/grafana/grafana/issues/7970)
* **Proxy**: Redirect after switching Org does not obey sub path in root_url (using reverse proxy) [#8089](https://github.com/grafana/grafana/issues/8089)
* **Templating**: Restoration of ad-hoc variable from URL does not work correctly [#8056](https://github.com/grafana/grafana/issues/8056) thx [@tamayika](https://github.com/tamayika)
* **InfluxDB**: timeFilter cannot be used twice in alerts [#7969](https://github.com/grafana/grafana/issues/7969)
* **MySQL**: 4-byte UTF8 not supported when using MySQL database (allows Emojis) [#7958](https://github.com/grafana/grafana/issues/7958)
* **Alerting**: api/alerts and api/alert/:id hold previous data for "message" and "Message" field when field value is changed from "some string" to empty string. [#7927](https://github.com/grafana/grafana/issues/7927)
* **Graph**: Cannot add fill below to series override [#7916](https://github.com/grafana/grafana/issues/7916)
* **InfluxDB**: Influxb Datasource test passes even if the Database doesn't exist [#7864](https://github.com/grafana/grafana/issues/7864)
* **Prometheus**: Displaying Prometheus annotations is incredibly slow [#7750](https://github.com/grafana/grafana/issues/7750), thx [@mtanda](https://github.com/mtanda)
* **Graphite**: grafana generates empty find query to graphite -> 422 Unprocessable Entity [#7740](https://github.com/grafana/grafana/issues/7740)
* **Admin**: make organisation filter case insensitive [#8194](https://github.com/grafana/grafana/issues/8194), thx [@Alexander-N](https://github.com/Alexander-N)
## Changes
* **Elasticsearch**: Changed elasticsearch Terms aggregation to default to Min Doc Count to 1, and sort order to Top [#8321](https://github.com/grafana/grafana/issues/8321)
## Tech
* **Library Upgrade**: inconshreveable/log15 outdated - no support for solaris [#8262](https://github.com/grafana/grafana/issues/8262)
* **Library Upgrade**: Upgrade Macaron [#7600](https://github.com/grafana/grafana/issues/7600)
# 4.2.0 (2017-03-22)
## Minor Enhancements
* **Templates**: Prevent use of the prefix `__` for templates in web UI [#7678](https://github.com/grafana/grafana/issues/7678)
* **Threema**: Add emoji to Threema alert notifications [#7676](https://github.com/grafana/grafana/pull/7676) thx [@dbrgn](https://github.com/dbrgn)
* **Panels**: Support dm3 unit [#7695](https://github.com/grafana/grafana/issues/7695) thx [@mitjaziv](https://github.com/mitjaziv)
* **Docs**: Added some details about Sessions in Postgres [#7694](https://github.com/grafana/grafana/pull/7694) thx [@rickard-von-essen](https://github.com/rickard-von-essen)
* **Influxdb**: Allow commas in template variables [#7681](https://github.com/grafana/grafana/issues/7681) thx [@thuck](https://github.com/thuck)
* **Cloudwatch**: stop using deprecated session.New() [#7736](https://github.com/grafana/grafana/issues/7736) thx [@mtanda](https://github.com/mtanda)
* **OpenTSDB**: Pass dropcounter rate option if no max counter and no reset value or reset value as 0 is specified [#7743](https://github.com/grafana/grafana/pull/7743) thx [@r4um](https://github.com/r4um)
* **Templating**: support full resolution for $interval variable [#7696](https://github.com/grafana/grafana/pull/7696) thx [@mtanda](https://github.com/mtanda)
* **Elasticsearch**: Unique Count on string fields in ElasticSearch [#3536](https://github.com/grafana/grafana/issues/3536), thx [@pyro2927](https://github.com/pyro2927)
* **Templating**: Data source template variable that refers to other variable in regex filter [#6365](https://github.com/grafana/grafana/issues/6365) thx [@rlodge](https://github.com/rlodge)
* **Admin**: Global User List: add search and pagination [#7469](https://github.com/grafana/grafana/issues/7469)
* **User Management**: Invite UI is now disabled when login form is disabled [#7875](https://github.com/grafana/grafana/issues/7875)
## Bugfixes
* **Webhook**: Use proxy settings from environment variables [#7710](https://github.com/grafana/grafana/issues/7710)
* **Panels**: Deleting a dashboard with unsaved changes raises an error message [#7591](https://github.com/grafana/grafana/issues/7591) thx [@thuck](https://github.com/thuck)
* **Influxdb**: Query builder detects regex to easily for measurement [#7276](https://github.com/grafana/grafana/issues/7276) thx [@thuck](https://github.com/thuck)
* **Docs**: router_logging not documented [#7723](https://github.com/grafana/grafana/issues/7723)
* **Alerting**: Spelling mistake [#7739](https://github.com/grafana/grafana/pull/7739) thx [@woutersmit](https://github.com/woutersmit)
* **Alerting**: Graph legend scrolls to top when an alias is toggled/clicked [#7680](https://github.com/grafana/grafana/issues/7680) thx [@p4ddy1](https://github.com/p4ddy1)
* **Panels**: Fixed panel tooltip description after scrolling down [#7708](https://github.com/grafana/grafana/issues/7708) thx [@askomorokhov](https://github.com/askomorokhov)
# 4.2.0-beta1 (2017-02-27)
## Enhancements
* **Telegram**: Added Telegram alert notifier [#7098](https://github.com/grafana/grafana/pull/7098), thx [@leonoff](https://github.com/leonoff)
* **Templating**: Make $__interval and $__interval_ms global built in variables that can be used in by any datasource (in panel queries), closes [#7190](https://github.com/grafana/grafana/issues/7190), closes [#6582](https://github.com/grafana/grafana/issues/6582)
* **S3 Image Store**: External s3 image store (used in alert notifications) now support AWS IAM Roles, closes [#6985](https://github.com/grafana/grafana/issues/6985), [#7058](https://github.com/grafana/grafana/issues/7058) thx [@mtanda](https://github.com/mtanda)
* **SingleStat**: Implements diff aggregation method for singlestat [#7234](https://github.com/grafana/grafana/issues/7234), thx [@oliverpool](https://github.com/oliverpool)
* **Dataproxy**: Added setting to enable more verbose logging in dataproxy [#7209](https://github.com/grafana/grafana/pull/7209), thx [@Ricky-N](https://github.com/Ricky-N)
* **Alerting**: Better information about why an alert triggered [#7035](https://github.com/grafana/grafana/issues/7035)
* **LINE**: Add LINE as alerting notification channel [#7301](https://github.com/grafana/grafana/pull/7301), thx [@huydx](https://github.com/huydx)
* **LINE**: Adds image to notification message [#7417](https://github.com/grafana/grafana/pull/7417), thx [@Erliz](https://github.com/Erliz)
* **Hipchat**: Adds support for sending alert notifications to hipchat [#6451](https://github.com/grafana/grafana/issues/6451), thx [@jregovic](https://github.com/jregovic)
* **Alerting**: Uploading images for alert notifications is now optional [#7419](https://github.com/grafana/grafana/issues/7419)
* **Dashboard**: Adds shortcut for collapsing/expanding all rows [#552](https://github.com/grafana/grafana/issues/552), thx [@mtanda](https://github.com/mtanda)
* **Alerting**: Adds de duping of alert notifications [#7632](https://github.com/grafana/grafana/pull/7632)
* **Orgs**: Sharing dashboards using Grafana share feature will now redirect to correct org. [#1613](https://github.com/grafana/grafana/issues/1613)
* **Pushover**: Add Pushover alert notifications [#7526](https://github.com/grafana/grafana/pull/7526) thx [@devkid](https://github.com/devkid)
* **Threema**: Add Threema Gateway alert notification integration [#7482](https://github.com/grafana/grafana/pull/7482) thx [@dbrgn](https://github.com/dbrgn)
## Minor Enhancements
* **Optimzation**: Never issue refresh event when Grafana tab is not visible [#7218](https://github.com/grafana/grafana/issues/7218), thx [@mtanda](https://github.com/mtanda)
* **Browser History**: Browser back/forward now works time ranges / zoom, [#7259](https://github.com/grafana/grafana/issues/7259)
* **Elasticsearch**: Support for Min Doc Count options in Terms aggregation [#7324](https://github.com/grafana/grafana/pull/7324), thx [@lpic10](https://github.com/lpic10)
* **Elasticsearch**: Term aggregation limit can now be changed in template queries [#7112](https://github.com/grafana/grafana/issues/7112), thx [@FFalcon](https://github.com/FFalcon)
* **Elasticsearch**: Ad-hoc filters now support all operators [#7612](https://github.com/grafana/grafana/issues/7612), thx [@tamayika](https://github.com/tamayika)
* **Graph**: Add full series name as title for legends. [#7493](https://github.com/grafana/grafana/pull/7493), thx [@kolobaev](https://github.com/kolobaev)
* **Table**: Add a message when queries returns no data. [#6109](https://github.com/grafana/grafana/issues/6109), thx [@xginn8](https://github.com/xginn8)
* **Graph**: Set max width for series names in legend tables. [#2385](https://github.com/grafana/grafana/issues/2385), thx [@kolobaev](https://github.com/kolobaev)
* **Database**: Allow max db connection pool configuration [#7427](https://github.com/grafana/grafana/issues/7427), thx [@huydx](https://github.com/huydx)
* **Datasources** Delete datsource by name [#7476](https://github.com/grafana/grafana/issues/7476), thx [@huydx](https://github.com/huydx)
* **Dataproxy**: Only allow get that begins with api/ to access Prometheus [#7459](https://github.com/grafana/grafana/pull/7459), thx [@mtanda](https://github.com/mtanda)
* **Snapshot**: Make timeout for snapshot creation configurable [#7449](https://github.com/grafana/grafana/pull/7449) thx [@ryu1-sakai](https://github.com/ryu1-sakai)
* **Panels**: Add more physics units [#7554](https://github.com/grafana/grafana/pull/7554) thx [@ryantxu](https://github.com/ryantxu)
* **Email**: Add sender's name on email [#2131](https://github.com/grafana/grafana/issues/2131) thx [@jacobbednarz](https://github.com/jacobbednarz)
* **HTTPS**: Set tls 1.2 as lowest tls version. [#7347](https://github.com/grafana/grafana/pull/7347) thx [@roman-vynar](https://github.com/roman-vynar)
* **Table**: Added suppressing of empty results to table plugin. [#7602](https://github.com/grafana/grafana/pull/7602) thx [@LLIyRiK](https://github.com/LLIyRiK)
## Tech
* **Library Upgrade**: Upgraded angularjs from 1.5.8 to 1.6.1 [#7274](https://github.com/grafana/grafana/issues/7274)
* **Backend**: Grafana is now built using golang 1.8
## Bugfixes
* **Alerting**: Fixes missing support for no_data and execution error when testing alerts [#7149](https://github.com/grafana/grafana/issues/7149)
* **Dashboard**: Avoid duplicate data in dashboard json for panels with alerts [#7256](https://github.com/grafana/grafana/pull/7256)
* **Alertlist**: Only show scrollbar when required [#7269](https://github.com/grafana/grafana/issues/7269)
* **SMTP**: Set LocalName to hostname [#7223](https://github.com/grafana/grafana/issues/7223)
* **Sidemenu**: Disable sign out in sidemenu for AuthProxyEnabled [#7377](https://github.com/grafana/grafana/pull/7377), thx [@solugebefola](https://github.com/solugebefola)
* **Prometheus**: Add support for basic auth in Prometheus tsdb package [#6799](https://github.com/grafana/grafana/issues/6799), thx [@hagen1778](https://github.com/hagen1778)
* **OAuth**: Redirect to original page when logging in with OAuth [#7513](https://github.com/grafana/grafana/issues/7513)
* **Annotations**: Wrap text in annotations tooltip [#7542](https://github.com/grafana/grafana/pull/7542), thx [@xginn8](https://github.com/xginn8)
* **Templating**: Fixes error when using numeric sort on empty strings [#7382](https://github.com/grafana/grafana/issues/7382)
* **Templating**: Fixed issue detecting template variable dependency [#7354](https://github.com/grafana/grafana/issues/7354)
# 4.1.2 (2017-02-13)
### Bugfixes
* **Table**: Fixes broken annotation rendering mode in the table panel [#7268](https://github.com/grafana/grafana/issues/7268)
* **Data Sources**: Sorting for lists of data sources in UI is now case insensitive [#7491](https://github.com/grafana/grafana/issues/7491)
* **Admin**: Support more then 1000 users in global users list [#7469](https://github.com/grafana/grafana/issues/7469)
# 4.1.1 (2017-01-11)
### Bugfixes
* **Graph Panel**: Fixed issue with legend height in table mode [#7221](https://github.com/grafana/grafana/issues/7221)
# 4.1.0 (2017-01-11)
### Bugfixes
* **Server side PNG rendering**: Fixed issue with y-axis label rotation in phantomjs rendered images [#6924](https://github.com/grafana/grafana/issues/6924)
* **Graph**: Fixed centering of y-axis label [#7099](https://github.com/grafana/grafana/issues/7099)
* **Graph**: Fixed graph legend table mode and always visible scrollbar [#6828](https://github.com/grafana/grafana/issues/6828)
* **Templating**: Fixed template variable value groups/tags feature [#6752](https://github.com/grafana/grafana/issues/6752)
* **Webhook**: Fixed webhook username mismatch [#7195](https://github.com/grafana/grafana/pull/7195), thx [@theisenmark](https://github.com/theisenmark)
* **Influxdb**: Handles time(auto) the same way as time($interval) [#6997](https://github.com/grafana/grafana/issues/6997)
## Enhancements
* **Elasticsearch**: Added support for all moving average options [#7154](https://github.com/grafana/grafana/pull/7154), thx [@vaibhavinbayarea](https://github.com/vaibhavinbayarea)
# 4.1-beta1 (2016-12-21)
### Enhancements
* **Postgres**: Add support for Certs for Postgres database [#6655](https://github.com/grafana/grafana/issues/6655)
* **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)
* **Singlestat**: New aggregation on singlestat panel [#6740](https://github.com/grafana/grafana/pull/6740), thx [@dirk-leroux](https://github.com/dirk-leroux)
* **Cloudwatch**: Make it possible to specify access and secret key on the data source config page [#6697](https://github.com/grafana/grafana/issues/6697)
* **Table**: Added Hidden Column Style for Table Panel [#5677](https://github.com/grafana/grafana/pull/5677), thx [@bmundt](https://github.com/bmundt)
* **Graph**: Shared crosshair option renamed to shared tooltip, shows 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)
* **Elasticsearch**: Added support for Missing option (bucket) for terms aggregation [#4244](https://github.com/grafana/grafana/pull/4244), thx [@shanielh](https://github.com/shanielh)
* **Elasticsearch**: Added support for Elasticsearch 5.x [#5740](https://github.com/grafana/grafana/issues/5740), thx [@lpic10](https://github.com/lpic10)
* **CLI**: Make it possible to reset the admin password using the grafana-cli. [#5479](https://github.com/grafana/grafana/issues/5479)
* **Influxdb**: Support multiple tags in InfluxDB annotations. [#4550](https://github.com/grafana/grafana/pull/4550), thx [@adrianlzt](https://github.com/adrianlzt)
* **LDAP**: Basic Auth now supports LDAP username and password, [#6940](https://github.com/grafana/grafana/pull/6940), thx [@utkarshcmu](https://github.com/utkarshcmu)
* **LDAP**: Now works with Auth Proxy, role and organisation mapping & sync will regularly be performed. [#6895](https://github.com/grafana/grafana/pull/6895), thx [@Seuf](https://github.com/seuf)
* **Alerting**: Adds OK as no data option. [#6866](https://github.com/grafana/grafana/issues/6866)
* **Alert list**: Order alerts based on state. [#6676](https://github.com/grafana/grafana/issues/6676)
* **Alerting**: Add api endpoint for pausing all alerts. [#6589](https://github.com/grafana/grafana/issues/6589)
* **Panel**: Added help text for panels. [#4079](https://github.com/grafana/grafana/issues/4079), thx [@utkarshcmu](https://github.com/utkarshcmu)
### Bugfixes
* **API**: HTTP API for deleting org returning incorrect message for a non-existing org [#6679](https://github.com/grafana/grafana/issues/6679)
* **Dashboard**: Posting empty dashboard result in corrupted dashboard [#5443](https://github.com/grafana/grafana/issues/5443)
* **Logging**: Fixed logging level confing issue [#6978](https://github.com/grafana/grafana/issues/6978)
* **Notifications**: Remove html escaping the email subject. [#6905](https://github.com/grafana/grafana/issues/6905)
* **Influxdb**: Fixes broken field dropdown when using template vars as measurement. [#6473](https://github.com/grafana/grafana/issues/6473)
# 4.0.2 (2016-12-08)
### Enhancements
* **Playlist**: Add support for kiosk mode [#6727](https://github.com/grafana/grafana/issues/6727)
### Bugfixes
* **Alerting**: Add alert message to webhook notifications [#6807](https://github.com/grafana/grafana/issues/6807)
* **Alerting**: Fixes a bug where avg() reducer treated null as zero. [#6879](https://github.com/grafana/grafana/issues/6879)
* **PNG Rendering**: Fix for server side rendering when using non default http addr bind and domain setting [#6813](https://github.com/grafana/grafana/issues/6813)
* **PNG Rendering**: Fix for server side rendering when setting enforce_domain to true [#6769](https://github.com/grafana/grafana/issues/6769)
* **Webhooks**: Add content type json to outgoing webhooks [#6822](https://github.com/grafana/grafana/issues/6822)
* **Keyboard shortcut**: Fixed zoom out shortcut [#6837](https://github.com/grafana/grafana/issues/6837)
* **Webdav**: Adds basic auth headers to webdav uploader [#6779](https://github.com/grafana/grafana/issues/6779)
# 4.0.1 (2016-12-02)
> **Notice**
4.0.0 had serious connection pooling issue when using a data source in proxy access. This bug caused lots of resource issues
due to too many connections/file handles on the data source backend. This problem is fixed in this release.
### Bugfixes
* **Metrics**: Fixes nil pointer dereference on my arm build [#6749](https://github.com/grafana/grafana/issues/6749)
* **Data proxy**: Fixes a tcp pooling issue in the datasource reverse proxy [#6759](https://github.com/grafana/grafana/issues/6759)
# 4.0-stable (2016-11-29)
### Bugfixes
* **Server-side rendering**: Fixed address used when rendering panel via phantomjs and using non default http_addr config [#6660](https://github.com/grafana/grafana/issues/6660)
* **Graph panel**: Fixed graph panel tooltip sort order issue [#6648](https://github.com/grafana/grafana/issues/6648)
* **Unsaved changes**: You now navigate to the intended page after saving in the unsaved changes dialog [#6675](https://github.com/grafana/grafana/issues/6675)
* **TLS Client Auth**: Support for TLS client authentication for datasource proxies [#2316](https://github.com/grafana/grafana/issues/2316)
* **Alerts out of sync**: Saving dashboards with broken alerts causes sync problem[#6576](https://github.com/grafana/grafana/issues/6576)
* **Alerting**: Saving an alert with condition "HAS NO DATA" throws an error[#6701](https://github.com/grafana/grafana/issues/6701)
* **Config**: Improve error message when parsing broken config file [#6731](https://github.com/grafana/grafana/issues/6731)
* **Table**: Render empty dates as - instead of current date [#6728](https://github.com/grafana/grafana/issues/6728)
# 4.0-beta2 (2016-11-21)
### Bugfixes
* **Graph Panel**: Log base scale on right Y-axis had no effect, max value calc was not applied, [#6534](https://github.com/grafana/grafana/issues/6534)
* **Graph Panel**: Bar width if bars was only used in series override, [#6528](https://github.com/grafana/grafana/issues/6528)
* **UI/Browser**: Fixed issue with page/view header gradient border not showing in Safari, [#6530](https://github.com/grafana/grafana/issues/6530)
* **Cloudwatch**: Fixed cloudwatch datasource requesting to many datapoints, [#6544](https://github.com/grafana/grafana/issues/6544)
* **UX**: Panel Drop zone visible after duplicating panel, and when entering fullscreen/edit view, [#6598](https://github.com/grafana/grafana/issues/6598)
* **Templating**: Newly added variable was not visible directly only after dashboard reload, [#6622](https://github.com/grafana/grafana/issues/6622)
### Enhancements
* **Singlestat**: Support repeated template variables in prefix/postfix [#6595](https://github.com/grafana/grafana/issues/6595)
* **Templating**: Don't persist variable options with refresh option [#6586](https://github.com/grafana/grafana/issues/6586)
* **Alerting**: Add ability to have OR conditions (and mixing AND & OR) [#6579](https://github.com/grafana/grafana/issues/6579)
* **InfluxDB**: Fix for Ad-Hoc Filters variable & changing dashboards [#6821](https://github.com/grafana/grafana/issues/6821)
# 4.0-beta1 (2016-11-09)
### Enhancements
* **Login**: Adds option to disable username/password logins, closes [#4674](https://github.com/grafana/grafana/issues/4674)
* **SingleStat**: Add seriename as option in singlestat panel, closes [#4740](https://github.com/grafana/grafana/issues/4740)
* **Localization**: Week start day now dependant on browser locale setting, closes [#3003](https://github.com/grafana/grafana/issues/3003)
* **Templating**: Update panel repeats for variables that change on time refresh, closes [#5021](https://github.com/grafana/grafana/issues/5021)
* **Templating**: Add support for numeric and alphabetical sorting of variable values, closes [#2839](https://github.com/grafana/grafana/issues/2839)
* **Elasticsearch**: Support to set Precision Threshold for Unique Count metric, closes [#4689](https://github.com/grafana/grafana/issues/4689)
* **Navigation**: Add search to org swithcer, closes [#2609](https://github.com/grafana/grafana/issues/2609)
* **Database**: Allow database config using one propertie, closes [#5456](https://github.com/grafana/grafana/pull/5456)
* **Graphite**: Add support for groupByNodes, closes [#5613](https://github.com/grafana/grafana/pull/5613)
* **Influxdb**: Add support for elapsed(), closes [#5827](https://github.com/grafana/grafana/pull/5827)
* **OpenTSDB**: Add support for explicitTags for OpenTSDB>=2.3, closes [#6360](https://github.com/grafana/grafana/pull/6361)
* **OAuth**: Add support for generic oauth, closes [#4718](https://github.com/grafana/grafana/pull/4718)
* **Cloudwatch**: Add support to expand multi select template variable, closes [#5003](https://github.com/grafana/grafana/pull/5003)
* **Background Tasks**: Now support automatic purging of old snapshots, closes [#4087](https://github.com/grafana/grafana/issues/4087)
* **Background Tasks**: Now support automatic purging of old rendered images, closes [#2172](https://github.com/grafana/grafana/issues/2172)
* **Dashboard**: After inactivity hide nav/row actions, fade to nice clean view, can be toggled with `d v`, also added kiosk mode, toggled via `d k` [#6476](https://github.com/grafana/grafana/issues/6476)
* **Dashboard**: Improved dashboard row menu & add panel UX [#6442](https://github.com/grafana/grafana/issues/6442)
* **Graph Panel**: Support for stacking null values [#2912](https://github.com/grafana/grafana/issues/2912), [#6287](https://github.com/grafana/grafana/issues/6287), thanks @benrubson!
### Breaking changes
* **SystemD**: Change systemd description, closes [#5971](https://github.com/grafana/grafana/pull/5971)
* **lodash upgrade**: Upgraded lodash from 2.4.2 to 4.15.0, this contains a number of breaking changes that could effect plugins. closes [#6021](https://github.com/grafana/grafana/pull/6021)
### Bug fixes
* **Table Panel**: Fixed problem when switching to Mixed datasource in metrics tab, fixes [#5999](https://github.com/grafana/grafana/pull/5999)
* **Playlist**: Fixed problem with play order not matching order defined in playlist, fixes [#5467](https://github.com/grafana/grafana/pull/5467)
* **Graph panel**: Fixed problem with auto decimals on y axis when datamin=datamax, fixes [#6070](https://github.com/grafana/grafana/pull/6070)
* **Snapshot**: Can view embedded panels/png rendered panels in snapshots without login, fixes [#3769](https://github.com/grafana/grafana/pull/3769)
* **Elasticsearch**: Fix for query template variable when looking up terms without query, no longer relies on elasticsearch default field, fixes [#3887](https://github.com/grafana/grafana/pull/3887)
* **Elasticsearch**: Fix for displaying IP address used in terms aggregations, fixes [#4393](https://github.com/grafana/grafana/pull/4393)
* **PNG Rendering**: Fix for server side rendering when using auth proxy, fixes [#5906](https://github.com/grafana/grafana/pull/5906)
* **OpenTSDB**: Fixed multi-value nested templating for opentsdb, fixes [#6455](https://github.com/grafana/grafana/pull/6455)
* **Playlist**: Remove playlist items when dashboard is removed, fixes [#6292](https://github.com/grafana/grafana/issues/6292)
# 3.1.2 (unreleased)
* **Templating**: Fixed issue when combining row & panel repeats, fixes [#5790](https://github.com/grafana/grafana/issues/5790)
* **Drag&Drop**: Fixed issue with drag and drop in latest Chrome(51+), fixes [#5767](https://github.com/grafana/grafana/issues/5767)
* **Internal Metrics**: Fixed issue with dots in instance_name when sending internal metrics to Graphite, fixes [#5739](https://github.com/grafana/grafana/issues/5739)
* **Grafana-CLI**: Add default plugin path for MAC OS, fixes [#5806](https://github.com/grafana/grafana/issues/5806)
* **Grafana-CLI**: Improve error message for upgrade-all command, fixes [#5885](https://github.com/grafana/grafana/issues/5885)
# 3.1.1 (2016-08-01)
* **IFrame embedding**: Fixed issue of using full iframe height, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
* **Panel PNG rendering**: Fixed issue detecting render completion, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
* **Elasticsearch**: Fixed issue with templating query and json parse error, fixes [#5615](https://github.com/grafana/grafana/issues/5615)
* **Tech**: Upgraded JQuery to 2.2.4 to fix Security vulnerabilitie in 2.1.4, fixes [#5627](https://github.com/grafana/grafana/issues/5627)
* **Graphite**: Fixed issue with mixed data sources and Graphite, fixes [#5617](https://github.com/grafana/grafana/issues/5617)
* **Templating**: Fixed issue with template variable query was issued multiple times during dashboard load, fixes [#5637](https://github.com/grafana/grafana/issues/5637)
* **Zoom**: Fixed issues with zoom in and out on embedded (iframed) panel, fixes [#4489](https://github.com/grafana/grafana/issues/4489), [#5666](https://github.com/grafana/grafana/issues/5666)
# 3.1.0 stable (2016-07-12)
### Bugfixes & Enhancements,
* **User Alert Notices**: Backend error alert popups did not show properly, fixes [#5435](https://github.com/grafana/grafana/issues/5435)
* **Table**: Added sanitize HTML option to allow links in table cells, fixes [#4596](https://github.com/grafana/grafana/issues/4596)
* **Apps**: App dashboards are automatically synced to DB at startup after plugin update, fixes [#5529](https://github.com/grafana/grafana/issues/5529)
# 3.1.0-beta1 (2016-06-23)
### Enhancements
* **Dashboard Export/Import**: Dashboard export now templetize data sources and constant variables, users pick these on import, closes [#5084](https://github.com/grafana/grafana/issues/5084)
* **Dashboard Url**: Time range changes updates url, closes [#458](https://github.com/grafana/grafana/issues/458)
* **Dashboard Url**: Template variable change updates url, closes [#5002](https://github.com/grafana/grafana/issues/5002)
* **Singlestat**: Add support for range to text mappings, closes [#1319](https://github.com/grafana/grafana/issues/1319)
* **Graph**: Adds sort order options for graph tooltip, closes [#1189](https://github.com/grafana/grafana/issues/1189)
* **Theme**: Add default theme to config file [#5011](https://github.com/grafana/grafana/pull/5011)
* **Page Footer**: Added page footer with links to docs, shows Grafana version and info if new version is available, closes [#4889](https://github.com/grafana/grafana/pull/4889)
* **InfluxDB**: Add spread function, closes [#5211](https://github.com/grafana/grafana/issues/5211)
* **Scripts**: Use restart instead of start for deb package script, closes [#5282](https://github.com/grafana/grafana/pull/5282)
* **Logging**: Moved to structured logging lib, and moved to component specific level filters via config file, closes [#4590](https://github.com/grafana/grafana/issues/4590)
* **OpenTSDB**: Support nested template variables in tag_values function, closes [#4398](https://github.com/grafana/grafana/issues/4398)
* **Datasource**: Pending data source requests are cancelled before new ones are issues (Graphite & Prometheus), closes [#5321](https://github.com/grafana/grafana/issues/5321)
### Breaking changes
* **Logging** : Changed default logging output format (now structured into message, and key value pairs, with logger key acting as component). You can also no change in config to json log ouput.
* **Graphite** : The Graph panel no longer have a Graphite PNG option. closes [#5367](https://github.com/grafana/grafana/issues/5367)
### Bug fixes
* **PNG rendering**: Fixed phantomjs rendering and y-axis label rotation. fixes [#5220](https://github.com/grafana/grafana/issues/5220)
* **CLI**: The cli tool now supports reading plugin.json from dist/plugin.json. fixes [#5410](https://github.com/grafana/grafana/issues/5410)
# 3.0.4 Patch release (2016-05-25)
* **Panel**: Fixed blank dashboard issue when switching to other dashboard while in fullscreen edit mode, fixes [#5163](https://github.com/grafana/grafana/pull/5163)
* **Templating**: Fixed issue with nested multi select variables and cascading and updating child variable selection state, fixes [#4861](https://github.com/grafana/grafana/pull/4861)
* **Templating**: Fixed issue with using templated data source in another template variable query, fixes [#5165](https://github.com/grafana/grafana/pull/5165)
* **Singlestat gauge**: Fixed issue with gauge render position, fixes [#5143](https://github.com/grafana/grafana/pull/5143)
* **Home dashboard**: Fixes broken home dashboard api, fixes [#5167](https://github.com/grafana/grafana/issues/5167)
# 3.0.3 Patch release (2016-05-23)
* **Annotations**: Annotations can now use a template variable as data source, closes [#5054](https://github.com/grafana/grafana/issues/5054)
* **Time picker**: Fixed issue timepicker and UTC when reading time from URL, fixes [#5078](https://github.com/grafana/grafana/issues/5078)
* **CloudWatch**: Support for Multiple Account by AssumeRole, closes [#3522](https://github.com/grafana/grafana/issues/3522)
* **Singlestat**: Fixed alignment and minium height issue, fixes [#5113](https://github.com/grafana/grafana/issues/5113), fixes [#4679](https://github.com/grafana/grafana/issues/4679)
* **Share modal**: Fixed link when using grafana under dashboard sub url, fixes [#5109](https://github.com/grafana/grafana/issues/5109)
* **Prometheus**: Fixed bug in query editor that caused it not to load when reloading page, fixes [#5107](https://github.com/grafana/grafana/issues/5107)
* **Elasticsearch**: Fixed bug when template variable query returns numeric values, fixes [#5097](https://github.com/grafana/grafana/issues/5097), fixes [#5088](https://github.com/grafana/grafana/issues/5088)
* **Logging**: Fixed issue with reading logging level value, fixes [#5079](https://github.com/grafana/grafana/issues/5079)
* **Timepicker**: Fixed issue with timepicker and UTC when reading time from URL, fixes [#5078](https://github.com/grafana/grafana/issues/5078)
* **Docs**: Added docs for org & user preferences HTTP API, closes [#5069](https://github.com/grafana/grafana/issues/5069)
* **Plugin list panel**: Now shows correct enable state for apps when not enabled, fixes [#5068](https://github.com/grafana/grafana/issues/5068)
* **Elasticsearch**: Templating & Annotation queries that use template variables are now formatted correctly, fixes [#5135](https://github.com/grafana/grafana/issues/5135)
# 3.0.2 Patch release (2016-05-16)
* **Templating**: Fixed issue mixing row repeat and panel repeats, fixes [#4988](https://github.com/grafana/grafana/issues/4988)
* **Templating**: Fixed issue detecting dependencies in nested variables, fixes [#4987](https://github.com/grafana/grafana/issues/4987), fixes [#4986](https://github.com/grafana/grafana/issues/4986)
* **Graph**: Fixed broken PNG rendering in graph panel, fixes [#5025](https://github.com/grafana/grafana/issues/5025)
* **Graph**: Fixed broken xaxis on graph panel, fixes [#5024](https://github.com/grafana/grafana/issues/5024)
* **Influxdb**: Fixes crash when hiding middle serie, fixes [#5005](https://github.com/grafana/grafana/issues/5005)
# 3.0.1 Stable (2016-05-11)
### Bug fixes
* **Templating**: Fixed issue with new data source variable not persisting current selected value, fixes [#4934](https://github.com/grafana/grafana/issues/4934)
# 3.0.0-beta7 (2016-05-02)
@@ -486,7 +1181,7 @@ Grafana 2.x is fundamentally different from 1.x; it now ships with an integrated
# 1.8.0 (2014-09-22)
Read this [blog post](http://grafana.org/blog/2014/09/11/grafana-1-8-0-rc1-released.html) for an overview of all improvements.
Read this [blog post](https://grafana.com/blog/2014/09/11/grafana-1.8.0-rc1-released) for an overview of all improvements.
**Fixes**
- [Issue #802](https://github.com/grafana/grafana/issues/802). Annotations: Fix when using InfluxDB datasource
+46
View File
@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@grafana.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
-351
View File
@@ -1,351 +0,0 @@
{
"ImportPath": "github.com/grafana/grafana",
"GoVersion": "go1.5.1",
"Packages": [
"./pkg/..."
],
"Deps": [
{
"ImportPath": "github.com/BurntSushi/toml",
"Comment": "v0.1.0-21-g056c9bc",
"Rev": "056c9bc7be7190eaa7715723883caffa5f8fa3e4"
},
{
"ImportPath": "github.com/Unknwon/com",
"Rev": "d9bcf409c8a368d06c9b347705c381e7c12d54df"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/awserr",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/client",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/credentials",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/defaults",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/request",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/aws/session",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/endpoints",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/private/waiter",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/service/cloudwatch",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/aws/aws-sdk-go/service/ec2",
"Comment": "v1.0.0",
"Rev": "abb928e07c4108683d6b4d0b6ca08fe6bc0eee5f"
},
{
"ImportPath": "github.com/bmizerany/assert",
"Comment": "release.r60-6-ge17e998",
"Rev": "e17e99893cb6509f428e1728281c2ad60a6b31e3"
},
{
"ImportPath": "github.com/bradfitz/gomemcache/memcache",
"Comment": "release.r60-40-g72a6864",
"Rev": "72a68649ba712ee7c4b5b4a943a626bcd7d90eb8"
},
{
"ImportPath": "github.com/codegangsta/cli",
"Comment": "1.2.0-187-gc31a797",
"Rev": "c31a7975863e7810c92e2e288a9ab074f9a88f29"
},
{
"ImportPath": "github.com/davecgh/go-spew/spew",
"Rev": "2df174808ee097f90d259e432cc04442cf60be21"
},
{
"ImportPath": "github.com/fatih/color",
"Comment": "v0.1-16-g4f7bcef",
"Rev": "4f7bcef27eec7925456d0c30c5e7b0408b3339be"
},
{
"ImportPath": "github.com/franela/goreq",
"Rev": "3ddeded65be21dacb5a2e2d0b95af9ff6862a2b5"
},
{
"ImportPath": "github.com/go-ini/ini",
"Comment": "v0-48-g060d7da",
"Rev": "060d7da055ba6ec5ea7a31f116332fe5efa04ce0"
},
{
"ImportPath": "github.com/go-ldap/ldap",
"Comment": "v2.2.1",
"Rev": "07a7330929b9ee80495c88a4439657d89c7dbd87"
},
{
"ImportPath": "github.com/go-macaron/binding",
"Rev": "2502aaf4bce3a4e6451b4610847bfb8dffdb6266"
},
{
"ImportPath": "github.com/go-macaron/gzip",
"Rev": "4938e9be6b279d8426cb1c89a6bcf7af70b0c21d"
},
{
"ImportPath": "github.com/go-macaron/inject",
"Rev": "c5ab7bf3a307593cd44cb272d1a5beea473dd072"
},
{
"ImportPath": "github.com/go-macaron/session",
"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
},
{
"ImportPath": "github.com/go-macaron/session/memcache",
"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
},
{
"ImportPath": "github.com/go-macaron/session/mysql",
"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
},
{
"ImportPath": "github.com/go-macaron/session/postgres",
"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
},
{
"ImportPath": "github.com/go-macaron/session/redis",
"Rev": "66031fcb37a0fff002a1f028eb0b3a815c78306b"
},
{
"ImportPath": "github.com/go-sql-driver/mysql",
"Comment": "v1.2-171-g267b128",
"Rev": "267b128680c46286b9ca13475c3cca5de8f79bd7"
},
{
"ImportPath": "github.com/go-xorm/core",
"Comment": "v0.4.4-7-g9e608f7",
"Rev": "9e608f7330b9d16fe2818cfe731128b3f156cb9a"
},
{
"ImportPath": "github.com/go-xorm/xorm",
"Comment": "v0.4.4-44-gf561133",
"Rev": "f56113384f2c63dfe4cd8e768e349f1c35122b58"
},
{
"ImportPath": "github.com/gorilla/websocket",
"Rev": "c45a635370221f34fea2d5163fd156fcb4e38e8a"
},
{
"ImportPath": "github.com/gosimple/slug",
"Rev": "8d258463b4459f161f51d6a357edacd3eef9d663"
},
{
"ImportPath": "github.com/hashicorp/go-version",
"Rev": "7e3c02b30806fa5779d3bdfc152ce4c6f40e7b38"
},
{
"ImportPath": "github.com/jmespath/go-jmespath",
"Comment": "0.2.2",
"Rev": "3433f3ea46d9f8019119e7dd41274e112a2359a9"
},
{
"ImportPath": "github.com/jtolds/gls",
"Rev": "f1ac7f4f24f50328e6bc838ca4437d1612a0243c"
},
{
"ImportPath": "github.com/klauspost/compress/flate",
"Rev": "7b02889a2005228347aef0e76beeaee564d82f8c"
},
{
"ImportPath": "github.com/klauspost/compress/gzip",
"Rev": "7b02889a2005228347aef0e76beeaee564d82f8c"
},
{
"ImportPath": "github.com/klauspost/cpuid",
"Rev": "349c675778172472f5e8f3a3e0fe187e302e5a10"
},
{
"ImportPath": "github.com/klauspost/crc32",
"Rev": "6834731faf32e62a2dd809d99fb24d1e4ae5a92d"
},
{
"ImportPath": "github.com/kr/pretty",
"Comment": "go.weekly.2011-12-22-27-ge6ac2fc",
"Rev": "e6ac2fc51e89a3249e82157fa0bb7a18ef9dd5bb"
},
{
"ImportPath": "github.com/kr/text",
"Rev": "bb797dc4fb8320488f47bf11de07a733d7233e1f"
},
{
"ImportPath": "github.com/lib/pq",
"Comment": "go1.0-cutoff-13-g19eeca3",
"Rev": "19eeca3e30d2577b1761db471ec130810e67f532"
},
{
"ImportPath": "github.com/lib/pq/oid",
"Comment": "go1.0-cutoff-13-g19eeca3",
"Rev": "19eeca3e30d2577b1761db471ec130810e67f532"
},
{
"ImportPath": "github.com/mattn/go-colorable",
"Rev": "9cbef7c35391cca05f15f8181dc0b18bc9736dbb"
},
{
"ImportPath": "github.com/mattn/go-isatty",
"Rev": "56b76bdf51f7708750eac80fa38b952bb9f32639"
},
{
"ImportPath": "github.com/mattn/go-sqlite3",
"Comment": "v1.1.0-67-g7204887",
"Rev": "7204887cf3a42df1cfaa5505dc3a3427f6dded8b"
},
{
"ImportPath": "github.com/rainycape/unidecode",
"Rev": "836ef0a715aedf08a12d595ed73ec8ed5b288cac"
},
{
"ImportPath": "github.com/smartystreets/goconvey/convey",
"Comment": "1.5.0-356-gfbc0a1c",
"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
},
{
"ImportPath": "github.com/smartystreets/goconvey/convey/assertions",
"Comment": "1.5.0-356-gfbc0a1c",
"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
},
{
"ImportPath": "github.com/smartystreets/goconvey/convey/assertions/oglematchers",
"Comment": "1.5.0-356-gfbc0a1c",
"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
},
{
"ImportPath": "github.com/smartystreets/goconvey/convey/gotest",
"Comment": "1.5.0-356-gfbc0a1c",
"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
},
{
"ImportPath": "github.com/smartystreets/goconvey/convey/reporting",
"Comment": "1.5.0-356-gfbc0a1c",
"Rev": "fbc0a1c888f9f96263f9a559d1769905245f1123"
},
{
"ImportPath": "github.com/streadway/amqp",
"Rev": "150b7f24d6ad507e6026c13d85ce1f1391ac7400"
},
{
"ImportPath": "golang.org/x/net/context",
"Rev": "972f0c5fbe4ae29e666c3f78c3ed42ae7a448b0a"
},
{
"ImportPath": "golang.org/x/oauth2",
"Rev": "c58fcf0ffc1c772aa2e1ee4894bc19f2649263b2"
},
{
"ImportPath": "golang.org/x/sys/unix",
"Rev": "7a56174f0086b32866ebd746a794417edbc678a1"
},
{
"ImportPath": "gopkg.in/asn1-ber.v1",
"Comment": "v1",
"Rev": "9eae18c3681ae3d3c677ac2b80a8fe57de45fc09"
},
{
"ImportPath": "gopkg.in/bufio.v1",
"Comment": "v1",
"Rev": "567b2bfa514e796916c4747494d6ff5132a1dfce"
},
{
"ImportPath": "gopkg.in/ini.v1",
"Comment": "v0-16-g1772191",
"Rev": "177219109c97e7920c933e21c9b25f874357b237"
},
{
"ImportPath": "gopkg.in/macaron.v1",
"Rev": "1c6dd87797ae9319b4658cbd48d1d0420b279fd5"
},
{
"ImportPath": "gopkg.in/redis.v2",
"Comment": "v2.3.2",
"Rev": "e6179049628164864e6e84e973cfb56335748dea"
}
]
}
Generated
-5
View File
@@ -1,5 +0,0 @@
This directory tree is generated automatically by godep.
Please do not edit.
See https://github.com/tools/godep for more information.
-2
View File
@@ -1,2 +0,0 @@
/pkg
/bin
@@ -1,5 +0,0 @@
TAGS
tags
.*.swp
tomlcheck/tomlcheck
toml.test
-12
View File
@@ -1,12 +0,0 @@
language: go
go:
- 1.1
- 1.2
- tip
install:
- go install ./...
- go get github.com/BurntSushi/toml-test
script:
- export PATH="$PATH:$HOME/gopath/bin"
- make test
-3
View File
@@ -1,3 +0,0 @@
Compatible with TOML version
[v0.2.0](https://github.com/mojombo/toml/blob/master/versions/toml-v0.2.0.md)
-19
View File
@@ -1,19 +0,0 @@
install:
go install ./...
test: install
go test -v
toml-test toml-test-decoder
toml-test -encoder toml-test-encoder
fmt:
gofmt -w *.go */*.go
colcheck *.go */*.go
tags:
find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS
push:
git push origin master
git push github master
-220
View File
@@ -1,220 +0,0 @@
## TOML parser and encoder for Go with reflection
TOML stands for Tom's Obvious, Minimal Language. This Go package provides a
reflection interface similar to Go's standard library `json` and `xml`
packages. This package also supports the `encoding.TextUnmarshaler` and
`encoding.TextMarshaler` interfaces so that you can define custom data
representations. (There is an example of this below.)
Spec: https://github.com/mojombo/toml
Compatible with TOML version
[v0.2.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.2.0.md)
Documentation: http://godoc.org/github.com/BurntSushi/toml
Installation:
```bash
go get github.com/BurntSushi/toml
```
Try the toml validator:
```bash
go get github.com/BurntSushi/toml/cmd/tomlv
tomlv some-toml-file.toml
```
[![Build status](https://api.travis-ci.org/BurntSushi/toml.png)](https://travis-ci.org/BurntSushi/toml)
### Testing
This package passes all tests in
[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder
and the encoder.
### Examples
This package works similarly to how the Go standard library handles `XML`
and `JSON`. Namely, data is loaded into Go values via reflection.
For the simplest example, consider some TOML file as just a list of keys
and values:
```toml
Age = 25
Cats = [ "Cauchy", "Plato" ]
Pi = 3.14
Perfection = [ 6, 28, 496, 8128 ]
DOB = 1987-07-05T05:45:00Z
```
Which could be defined in Go as:
```go
type Config struct {
Age int
Cats []string
Pi float64
Perfection []int
DOB time.Time // requires `import time`
}
```
And then decoded with:
```go
var conf Config
if _, err := toml.Decode(tomlData, &conf); err != nil {
// handle error
}
```
You can also use struct tags if your struct field name doesn't map to a TOML
key value directly:
```toml
some_key_NAME = "wat"
```
```go
type TOML struct {
ObscureKey string `toml:"some_key_NAME"`
}
```
### Using the `encoding.TextUnmarshaler` interface
Here's an example that automatically parses duration strings into
`time.Duration` values:
```toml
[[song]]
name = "Thunder Road"
duration = "4m49s"
[[song]]
name = "Stairway to Heaven"
duration = "8m03s"
```
Which can be decoded with:
```go
type song struct {
Name string
Duration duration
}
type songs struct {
Song []song
}
var favorites songs
if _, err := toml.Decode(blob, &favorites); err != nil {
log.Fatal(err)
}
for _, s := range favorites.Song {
fmt.Printf("%s (%s)\n", s.Name, s.Duration)
}
```
And you'll also need a `duration` type that satisfies the
`encoding.TextUnmarshaler` interface:
```go
type duration struct {
time.Duration
}
func (d *duration) UnmarshalText(text []byte) error {
var err error
d.Duration, err = time.ParseDuration(string(text))
return err
}
```
### More complex usage
Here's an example of how to load the example from the official spec page:
```toml
# This is a TOML document. Boom.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# You can indent as you please. Tabs or spaces. TOML don't care.
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
```
And the corresponding Go types are:
```go
type tomlConfig struct {
Title string
Owner ownerInfo
DB database `toml:"database"`
Servers map[string]server
Clients clients
}
type ownerInfo struct {
Name string
Org string `toml:"organization"`
Bio string
DOB time.Time
}
type database struct {
Server string
Ports []int
ConnMax int `toml:"connection_max"`
Enabled bool
}
type server struct {
IP string
DC string
}
type clients struct {
Data [][]interface{}
Hosts []string
}
```
Note that a case insensitive match will be tried if an exact match can't be
found.
A working example of the above can be found in `_examples/example.{go,toml}`.
@@ -1,14 +0,0 @@
# Implements the TOML test suite interface
This is an implementation of the interface expected by
[toml-test](https://github.com/BurntSushi/toml-test) for my
[toml parser written in Go](https://github.com/BurntSushi/toml).
In particular, it maps TOML data on `stdin` to a JSON format on `stdout`.
Compatible with TOML version
[v0.2.0](https://github.com/mojombo/toml/blob/master/versions/toml-v0.2.0.md)
Compatible with `toml-test` version
[v0.2.0](https://github.com/BurntSushi/toml-test/tree/v0.2.0)
@@ -1,90 +0,0 @@
// Command toml-test-decoder satisfies the toml-test interface for testing
// TOML decoders. Namely, it accepts TOML on stdin and outputs JSON on stdout.
package main
import (
"encoding/json"
"flag"
"fmt"
"log"
"os"
"path"
"time"
"github.com/BurntSushi/toml"
)
func init() {
log.SetFlags(0)
flag.Usage = usage
flag.Parse()
}
func usage() {
log.Printf("Usage: %s < toml-file\n", path.Base(os.Args[0]))
flag.PrintDefaults()
os.Exit(1)
}
func main() {
if flag.NArg() != 0 {
flag.Usage()
}
var tmp interface{}
if _, err := toml.DecodeReader(os.Stdin, &tmp); err != nil {
log.Fatalf("Error decoding TOML: %s", err)
}
typedTmp := translate(tmp)
if err := json.NewEncoder(os.Stdout).Encode(typedTmp); err != nil {
log.Fatalf("Error encoding JSON: %s", err)
}
}
func translate(tomlData interface{}) interface{} {
switch orig := tomlData.(type) {
case map[string]interface{}:
typed := make(map[string]interface{}, len(orig))
for k, v := range orig {
typed[k] = translate(v)
}
return typed
case []map[string]interface{}:
typed := make([]map[string]interface{}, len(orig))
for i, v := range orig {
typed[i] = translate(v).(map[string]interface{})
}
return typed
case []interface{}:
typed := make([]interface{}, len(orig))
for i, v := range orig {
typed[i] = translate(v)
}
// We don't really need to tag arrays, but let's be future proof.
// (If TOML ever supports tuples, we'll need this.)
return tag("array", typed)
case time.Time:
return tag("datetime", orig.Format("2006-01-02T15:04:05Z"))
case bool:
return tag("bool", fmt.Sprintf("%v", orig))
case int64:
return tag("integer", fmt.Sprintf("%d", orig))
case float64:
return tag("float", fmt.Sprintf("%v", orig))
case string:
return tag("string", orig)
}
panic(fmt.Sprintf("Unknown type: %T", tomlData))
}
func tag(typeName string, data interface{}) map[string]interface{} {
return map[string]interface{}{
"type": typeName,
"value": data,
}
}
@@ -1,14 +0,0 @@
# Implements the TOML test suite interface for TOML encoders
This is an implementation of the interface expected by
[toml-test](https://github.com/BurntSushi/toml-test) for the
[TOML encoder](https://github.com/BurntSushi/toml).
In particular, it maps JSON data on `stdin` to a TOML format on `stdout`.
Compatible with TOML version
[v0.2.0](https://github.com/mojombo/toml/blob/master/versions/toml-v0.2.0.md)
Compatible with `toml-test` version
[v0.2.0](https://github.com/BurntSushi/toml-test/tree/v0.2.0)
@@ -1,131 +0,0 @@
// Command toml-test-encoder satisfies the toml-test interface for testing
// TOML encoders. Namely, it accepts JSON on stdin and outputs TOML on stdout.
package main
import (
"encoding/json"
"flag"
"log"
"os"
"path"
"strconv"
"time"
"github.com/BurntSushi/toml"
)
func init() {
log.SetFlags(0)
flag.Usage = usage
flag.Parse()
}
func usage() {
log.Printf("Usage: %s < json-file\n", path.Base(os.Args[0]))
flag.PrintDefaults()
os.Exit(1)
}
func main() {
if flag.NArg() != 0 {
flag.Usage()
}
var tmp interface{}
if err := json.NewDecoder(os.Stdin).Decode(&tmp); err != nil {
log.Fatalf("Error decoding JSON: %s", err)
}
tomlData := translate(tmp)
if err := toml.NewEncoder(os.Stdout).Encode(tomlData); err != nil {
log.Fatalf("Error encoding TOML: %s", err)
}
}
func translate(typedJson interface{}) interface{} {
switch v := typedJson.(type) {
case map[string]interface{}:
if len(v) == 2 && in("type", v) && in("value", v) {
return untag(v)
}
m := make(map[string]interface{}, len(v))
for k, v2 := range v {
m[k] = translate(v2)
}
return m
case []interface{}:
tabArray := make([]map[string]interface{}, len(v))
for i := range v {
if m, ok := translate(v[i]).(map[string]interface{}); ok {
tabArray[i] = m
} else {
log.Fatalf("JSON arrays may only contain objects. This " +
"corresponds to only tables being allowed in " +
"TOML table arrays.")
}
}
return tabArray
}
log.Fatalf("Unrecognized JSON format '%T'.", typedJson)
panic("unreachable")
}
func untag(typed map[string]interface{}) interface{} {
t := typed["type"].(string)
v := typed["value"]
switch t {
case "string":
return v.(string)
case "integer":
v := v.(string)
n, err := strconv.Atoi(v)
if err != nil {
log.Fatalf("Could not parse '%s' as integer: %s", v, err)
}
return n
case "float":
v := v.(string)
f, err := strconv.ParseFloat(v, 64)
if err != nil {
log.Fatalf("Could not parse '%s' as float64: %s", v, err)
}
return f
case "datetime":
v := v.(string)
t, err := time.Parse("2006-01-02T15:04:05Z", v)
if err != nil {
log.Fatalf("Could not parse '%s' as a datetime: %s", v, err)
}
return t
case "bool":
v := v.(string)
switch v {
case "true":
return true
case "false":
return false
}
log.Fatalf("Could not parse '%s' as a boolean.", v)
case "array":
v := v.([]interface{})
array := make([]interface{}, len(v))
for i := range v {
if m, ok := v[i].(map[string]interface{}); ok {
array[i] = untag(m)
} else {
log.Fatalf("Arrays may only contain other arrays or "+
"primitive values, but found a '%T'.", m)
}
}
return array
}
log.Fatalf("Unrecognized tag type '%s'.", t)
panic("unreachable")
}
func in(key string, m map[string]interface{}) bool {
_, ok := m[key]
return ok
}
-22
View File
@@ -1,22 +0,0 @@
# TOML Validator
If Go is installed, it's simple to try it out:
```bash
go get github.com/BurntSushi/toml/cmd/tomlv
tomlv some-toml-file.toml
```
You can see the types of every key in a TOML file with:
```bash
tomlv -types some-toml-file.toml
```
At the moment, only one error message is reported at a time. Error messages
include line numbers. No output means that the files given are valid TOML, or
there is a bug in `tomlv`.
Compatible with TOML version
[v0.1.0](https://github.com/mojombo/toml/blob/master/versions/toml-v0.1.0.md)
-61
View File
@@ -1,61 +0,0 @@
// Command tomlv validates TOML documents and prints each key's type.
package main
import (
"flag"
"fmt"
"log"
"os"
"path"
"strings"
"text/tabwriter"
"github.com/BurntSushi/toml"
)
var (
flagTypes = false
)
func init() {
log.SetFlags(0)
flag.BoolVar(&flagTypes, "types", flagTypes,
"When set, the types of every defined key will be shown.")
flag.Usage = usage
flag.Parse()
}
func usage() {
log.Printf("Usage: %s toml-file [ toml-file ... ]\n",
path.Base(os.Args[0]))
flag.PrintDefaults()
os.Exit(1)
}
func main() {
if flag.NArg() < 1 {
flag.Usage()
}
for _, f := range flag.Args() {
var tmp interface{}
md, err := toml.DecodeFile(f, &tmp)
if err != nil {
log.Fatalf("Error in '%s': %s", f, err)
}
if flagTypes {
printTypes(md)
}
}
}
func printTypes(md toml.MetaData) {
tabw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
for _, key := range md.Keys() {
fmt.Fprintf(tabw, "%s%s\t%s\n",
strings.Repeat(" ", len(key)-1), key, md.Type(key...))
}
tabw.Flush()
}
-492
View File
@@ -1,492 +0,0 @@
package toml
import (
"fmt"
"io"
"io/ioutil"
"math"
"reflect"
"strings"
"time"
)
var e = fmt.Errorf
// Unmarshaler is the interface implemented by objects that can unmarshal a
// TOML description of themselves.
type Unmarshaler interface {
UnmarshalTOML(interface{}) error
}
// Unmarshal decodes the contents of `p` in TOML format into a pointer `v`.
func Unmarshal(p []byte, v interface{}) error {
_, err := Decode(string(p), v)
return err
}
// Primitive is a TOML value that hasn't been decoded into a Go value.
// When using the various `Decode*` functions, the type `Primitive` may
// be given to any value, and its decoding will be delayed.
//
// A `Primitive` value can be decoded using the `PrimitiveDecode` function.
//
// The underlying representation of a `Primitive` value is subject to change.
// Do not rely on it.
//
// N.B. Primitive values are still parsed, so using them will only avoid
// the overhead of reflection. They can be useful when you don't know the
// exact type of TOML data until run time.
type Primitive struct {
undecoded interface{}
context Key
}
// DEPRECATED!
//
// Use MetaData.PrimitiveDecode instead.
func PrimitiveDecode(primValue Primitive, v interface{}) error {
md := MetaData{decoded: make(map[string]bool)}
return md.unify(primValue.undecoded, rvalue(v))
}
// PrimitiveDecode is just like the other `Decode*` functions, except it
// decodes a TOML value that has already been parsed. Valid primitive values
// can *only* be obtained from values filled by the decoder functions,
// including this method. (i.e., `v` may contain more `Primitive`
// values.)
//
// Meta data for primitive values is included in the meta data returned by
// the `Decode*` functions with one exception: keys returned by the Undecoded
// method will only reflect keys that were decoded. Namely, any keys hidden
// behind a Primitive will be considered undecoded. Executing this method will
// update the undecoded keys in the meta data. (See the example.)
func (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error {
md.context = primValue.context
defer func() { md.context = nil }()
return md.unify(primValue.undecoded, rvalue(v))
}
// Decode will decode the contents of `data` in TOML format into a pointer
// `v`.
//
// TOML hashes correspond to Go structs or maps. (Dealer's choice. They can be
// used interchangeably.)
//
// TOML arrays of tables correspond to either a slice of structs or a slice
// of maps.
//
// TOML datetimes correspond to Go `time.Time` values.
//
// All other TOML types (float, string, int, bool and array) correspond
// to the obvious Go types.
//
// An exception to the above rules is if a type implements the
// encoding.TextUnmarshaler interface. In this case, any primitive TOML value
// (floats, strings, integers, booleans and datetimes) will be converted to
// a byte string and given to the value's UnmarshalText method. See the
// Unmarshaler example for a demonstration with time duration strings.
//
// Key mapping
//
// TOML keys can map to either keys in a Go map or field names in a Go
// struct. The special `toml` struct tag may be used to map TOML keys to
// struct fields that don't match the key name exactly. (See the example.)
// A case insensitive match to struct names will be tried if an exact match
// can't be found.
//
// The mapping between TOML values and Go values is loose. That is, there
// may exist TOML values that cannot be placed into your representation, and
// there may be parts of your representation that do not correspond to
// TOML values. This loose mapping can be made stricter by using the IsDefined
// and/or Undecoded methods on the MetaData returned.
//
// This decoder will not handle cyclic types. If a cyclic type is passed,
// `Decode` will not terminate.
func Decode(data string, v interface{}) (MetaData, error) {
p, err := parse(data)
if err != nil {
return MetaData{}, err
}
md := MetaData{
p.mapping, p.types, p.ordered,
make(map[string]bool, len(p.ordered)), nil,
}
return md, md.unify(p.mapping, rvalue(v))
}
// DecodeFile is just like Decode, except it will automatically read the
// contents of the file at `fpath` and decode it for you.
func DecodeFile(fpath string, v interface{}) (MetaData, error) {
bs, err := ioutil.ReadFile(fpath)
if err != nil {
return MetaData{}, err
}
return Decode(string(bs), v)
}
// DecodeReader is just like Decode, except it will consume all bytes
// from the reader and decode it for you.
func DecodeReader(r io.Reader, v interface{}) (MetaData, error) {
bs, err := ioutil.ReadAll(r)
if err != nil {
return MetaData{}, err
}
return Decode(string(bs), v)
}
// unify performs a sort of type unification based on the structure of `rv`,
// which is the client representation.
//
// Any type mismatch produces an error. Finding a type that we don't know
// how to handle produces an unsupported type error.
func (md *MetaData) unify(data interface{}, rv reflect.Value) error {
// Special case. Look for a `Primitive` value.
if rv.Type() == reflect.TypeOf((*Primitive)(nil)).Elem() {
// Save the undecoded data and the key context into the primitive
// value.
context := make(Key, len(md.context))
copy(context, md.context)
rv.Set(reflect.ValueOf(Primitive{
undecoded: data,
context: context,
}))
return nil
}
// Special case. Unmarshaler Interface support.
if rv.CanAddr() {
if v, ok := rv.Addr().Interface().(Unmarshaler); ok {
return v.UnmarshalTOML(data)
}
}
// Special case. Handle time.Time values specifically.
// TODO: Remove this code when we decide to drop support for Go 1.1.
// This isn't necessary in Go 1.2 because time.Time satisfies the encoding
// interfaces.
if rv.Type().AssignableTo(rvalue(time.Time{}).Type()) {
return md.unifyDatetime(data, rv)
}
// Special case. Look for a value satisfying the TextUnmarshaler interface.
if v, ok := rv.Interface().(TextUnmarshaler); ok {
return md.unifyText(data, v)
}
// BUG(burntsushi)
// The behavior here is incorrect whenever a Go type satisfies the
// encoding.TextUnmarshaler interface but also corresponds to a TOML
// hash or array. In particular, the unmarshaler should only be applied
// to primitive TOML values. But at this point, it will be applied to
// all kinds of values and produce an incorrect error whenever those values
// are hashes or arrays (including arrays of tables).
k := rv.Kind()
// laziness
if k >= reflect.Int && k <= reflect.Uint64 {
return md.unifyInt(data, rv)
}
switch k {
case reflect.Ptr:
elem := reflect.New(rv.Type().Elem())
err := md.unify(data, reflect.Indirect(elem))
if err != nil {
return err
}
rv.Set(elem)
return nil
case reflect.Struct:
return md.unifyStruct(data, rv)
case reflect.Map:
return md.unifyMap(data, rv)
case reflect.Array:
return md.unifyArray(data, rv)
case reflect.Slice:
return md.unifySlice(data, rv)
case reflect.String:
return md.unifyString(data, rv)
case reflect.Bool:
return md.unifyBool(data, rv)
case reflect.Interface:
// we only support empty interfaces.
if rv.NumMethod() > 0 {
return e("Unsupported type '%s'.", rv.Kind())
}
return md.unifyAnything(data, rv)
case reflect.Float32:
fallthrough
case reflect.Float64:
return md.unifyFloat64(data, rv)
}
return e("Unsupported type '%s'.", rv.Kind())
}
func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error {
tmap, ok := mapping.(map[string]interface{})
if !ok {
return mismatch(rv, "map", mapping)
}
for key, datum := range tmap {
var f *field
fields := cachedTypeFields(rv.Type())
for i := range fields {
ff := &fields[i]
if ff.name == key {
f = ff
break
}
if f == nil && strings.EqualFold(ff.name, key) {
f = ff
}
}
if f != nil {
subv := rv
for _, i := range f.index {
subv = indirect(subv.Field(i))
}
if isUnifiable(subv) {
md.decoded[md.context.add(key).String()] = true
md.context = append(md.context, key)
if err := md.unify(datum, subv); err != nil {
return e("Type mismatch for '%s.%s': %s",
rv.Type().String(), f.name, err)
}
md.context = md.context[0 : len(md.context)-1]
} else if f.name != "" {
// Bad user! No soup for you!
return e("Field '%s.%s' is unexported, and therefore cannot "+
"be loaded with reflection.", rv.Type().String(), f.name)
}
}
}
return nil
}
func (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error {
tmap, ok := mapping.(map[string]interface{})
if !ok {
return badtype("map", mapping)
}
if rv.IsNil() {
rv.Set(reflect.MakeMap(rv.Type()))
}
for k, v := range tmap {
md.decoded[md.context.add(k).String()] = true
md.context = append(md.context, k)
rvkey := indirect(reflect.New(rv.Type().Key()))
rvval := reflect.Indirect(reflect.New(rv.Type().Elem()))
if err := md.unify(v, rvval); err != nil {
return err
}
md.context = md.context[0 : len(md.context)-1]
rvkey.SetString(k)
rv.SetMapIndex(rvkey, rvval)
}
return nil
}
func (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error {
datav := reflect.ValueOf(data)
if datav.Kind() != reflect.Slice {
return badtype("slice", data)
}
sliceLen := datav.Len()
if sliceLen != rv.Len() {
return e("expected array length %d; got TOML array of length %d",
rv.Len(), sliceLen)
}
return md.unifySliceArray(datav, rv)
}
func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error {
datav := reflect.ValueOf(data)
if datav.Kind() != reflect.Slice {
return badtype("slice", data)
}
sliceLen := datav.Len()
if rv.IsNil() {
rv.Set(reflect.MakeSlice(rv.Type(), sliceLen, sliceLen))
}
return md.unifySliceArray(datav, rv)
}
func (md *MetaData) unifySliceArray(data, rv reflect.Value) error {
sliceLen := data.Len()
for i := 0; i < sliceLen; i++ {
v := data.Index(i).Interface()
sliceval := indirect(rv.Index(i))
if err := md.unify(v, sliceval); err != nil {
return err
}
}
return nil
}
func (md *MetaData) unifyDatetime(data interface{}, rv reflect.Value) error {
if _, ok := data.(time.Time); ok {
rv.Set(reflect.ValueOf(data))
return nil
}
return badtype("time.Time", data)
}
func (md *MetaData) unifyString(data interface{}, rv reflect.Value) error {
if s, ok := data.(string); ok {
rv.SetString(s)
return nil
}
return badtype("string", data)
}
func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error {
if num, ok := data.(float64); ok {
switch rv.Kind() {
case reflect.Float32:
fallthrough
case reflect.Float64:
rv.SetFloat(num)
default:
panic("bug")
}
return nil
}
return badtype("float", data)
}
func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error {
if num, ok := data.(int64); ok {
if rv.Kind() >= reflect.Int && rv.Kind() <= reflect.Int64 {
switch rv.Kind() {
case reflect.Int, reflect.Int64:
// No bounds checking necessary.
case reflect.Int8:
if num < math.MinInt8 || num > math.MaxInt8 {
return e("Value '%d' is out of range for int8.", num)
}
case reflect.Int16:
if num < math.MinInt16 || num > math.MaxInt16 {
return e("Value '%d' is out of range for int16.", num)
}
case reflect.Int32:
if num < math.MinInt32 || num > math.MaxInt32 {
return e("Value '%d' is out of range for int32.", num)
}
}
rv.SetInt(num)
} else if rv.Kind() >= reflect.Uint && rv.Kind() <= reflect.Uint64 {
unum := uint64(num)
switch rv.Kind() {
case reflect.Uint, reflect.Uint64:
// No bounds checking necessary.
case reflect.Uint8:
if num < 0 || unum > math.MaxUint8 {
return e("Value '%d' is out of range for uint8.", num)
}
case reflect.Uint16:
if num < 0 || unum > math.MaxUint16 {
return e("Value '%d' is out of range for uint16.", num)
}
case reflect.Uint32:
if num < 0 || unum > math.MaxUint32 {
return e("Value '%d' is out of range for uint32.", num)
}
}
rv.SetUint(unum)
} else {
panic("unreachable")
}
return nil
}
return badtype("integer", data)
}
func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error {
if b, ok := data.(bool); ok {
rv.SetBool(b)
return nil
}
return badtype("boolean", data)
}
func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error {
rv.Set(reflect.ValueOf(data))
return nil
}
func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error {
var s string
switch sdata := data.(type) {
case TextMarshaler:
text, err := sdata.MarshalText()
if err != nil {
return err
}
s = string(text)
case fmt.Stringer:
s = sdata.String()
case string:
s = sdata
case bool:
s = fmt.Sprintf("%v", sdata)
case int64:
s = fmt.Sprintf("%d", sdata)
case float64:
s = fmt.Sprintf("%f", sdata)
default:
return badtype("primitive (string-like)", data)
}
if err := v.UnmarshalText([]byte(s)); err != nil {
return err
}
return nil
}
// rvalue returns a reflect.Value of `v`. All pointers are resolved.
func rvalue(v interface{}) reflect.Value {
return indirect(reflect.ValueOf(v))
}
// indirect returns the value pointed to by a pointer.
// Pointers are followed until the value is not a pointer.
// New values are allocated for each nil pointer.
//
// An exception to this rule is if the value satisfies an interface of
// interest to us (like encoding.TextUnmarshaler).
func indirect(v reflect.Value) reflect.Value {
if v.Kind() != reflect.Ptr {
if v.CanAddr() {
pv := v.Addr()
if _, ok := pv.Interface().(TextUnmarshaler); ok {
return pv
}
}
return v
}
if v.IsNil() {
v.Set(reflect.New(v.Type().Elem()))
}
return indirect(reflect.Indirect(v))
}
func isUnifiable(rv reflect.Value) bool {
if rv.CanSet() {
return true
}
if _, ok := rv.Interface().(TextUnmarshaler); ok {
return true
}
return false
}
func badtype(expected string, data interface{}) error {
return e("Expected %s but found '%T'.", expected, data)
}
func mismatch(user reflect.Value, expected string, data interface{}) error {
return e("Type mismatch for %s. Expected %s but found '%T'.",
user.Type().String(), expected, data)
}
-950
View File
@@ -1,950 +0,0 @@
package toml
import (
"fmt"
"log"
"reflect"
"testing"
"time"
)
func init() {
log.SetFlags(0)
}
func TestDecodeSimple(t *testing.T) {
var testSimple = `
age = 250
andrew = "gallant"
kait = "brady"
now = 1987-07-05T05:45:00Z
yesOrNo = true
pi = 3.14
colors = [
["red", "green", "blue"],
["cyan", "magenta", "yellow", "black"],
]
[My.Cats]
plato = "cat 1"
cauchy = "cat 2"
`
type cats struct {
Plato string
Cauchy string
}
type simple struct {
Age int
Colors [][]string
Pi float64
YesOrNo bool
Now time.Time
Andrew string
Kait string
My map[string]cats
}
var val simple
_, err := Decode(testSimple, &val)
if err != nil {
t.Fatal(err)
}
now, err := time.Parse("2006-01-02T15:04:05", "1987-07-05T05:45:00")
if err != nil {
panic(err)
}
var answer = simple{
Age: 250,
Andrew: "gallant",
Kait: "brady",
Now: now,
YesOrNo: true,
Pi: 3.14,
Colors: [][]string{
{"red", "green", "blue"},
{"cyan", "magenta", "yellow", "black"},
},
My: map[string]cats{
"Cats": cats{Plato: "cat 1", Cauchy: "cat 2"},
},
}
if !reflect.DeepEqual(val, answer) {
t.Fatalf("Expected\n-----\n%#v\n-----\nbut got\n-----\n%#v\n",
answer, val)
}
}
func TestDecodeEmbedded(t *testing.T) {
type Dog struct{ Name string }
type Age int
tests := map[string]struct {
input string
decodeInto interface{}
wantDecoded interface{}
}{
"embedded struct": {
input: `Name = "milton"`,
decodeInto: &struct{ Dog }{},
wantDecoded: &struct{ Dog }{Dog{"milton"}},
},
"embedded non-nil pointer to struct": {
input: `Name = "milton"`,
decodeInto: &struct{ *Dog }{},
wantDecoded: &struct{ *Dog }{&Dog{"milton"}},
},
"embedded nil pointer to struct": {
input: ``,
decodeInto: &struct{ *Dog }{},
wantDecoded: &struct{ *Dog }{nil},
},
"embedded int": {
input: `Age = -5`,
decodeInto: &struct{ Age }{},
wantDecoded: &struct{ Age }{-5},
},
}
for label, test := range tests {
_, err := Decode(test.input, test.decodeInto)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(test.wantDecoded, test.decodeInto) {
t.Errorf("%s: want decoded == %+v, got %+v",
label, test.wantDecoded, test.decodeInto)
}
}
}
func TestTableArrays(t *testing.T) {
var tomlTableArrays = `
[[albums]]
name = "Born to Run"
[[albums.songs]]
name = "Jungleland"
[[albums.songs]]
name = "Meeting Across the River"
[[albums]]
name = "Born in the USA"
[[albums.songs]]
name = "Glory Days"
[[albums.songs]]
name = "Dancing in the Dark"
`
type Song struct {
Name string
}
type Album struct {
Name string
Songs []Song
}
type Music struct {
Albums []Album
}
expected := Music{[]Album{
{"Born to Run", []Song{{"Jungleland"}, {"Meeting Across the River"}}},
{"Born in the USA", []Song{{"Glory Days"}, {"Dancing in the Dark"}}},
}}
var got Music
if _, err := Decode(tomlTableArrays, &got); err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(expected, got) {
t.Fatalf("\n%#v\n!=\n%#v\n", expected, got)
}
}
// Case insensitive matching tests.
// A bit more comprehensive than needed given the current implementation,
// but implementations change.
// Probably still missing demonstrations of some ugly corner cases regarding
// case insensitive matching and multiple fields.
func TestCase(t *testing.T) {
var caseToml = `
tOpString = "string"
tOpInt = 1
tOpFloat = 1.1
tOpBool = true
tOpdate = 2006-01-02T15:04:05Z
tOparray = [ "array" ]
Match = "i should be in Match only"
MatcH = "i should be in MatcH only"
once = "just once"
[nEst.eD]
nEstedString = "another string"
`
type InsensitiveEd struct {
NestedString string
}
type InsensitiveNest struct {
Ed InsensitiveEd
}
type Insensitive struct {
TopString string
TopInt int
TopFloat float64
TopBool bool
TopDate time.Time
TopArray []string
Match string
MatcH string
Once string
OncE string
Nest InsensitiveNest
}
tme, err := time.Parse(time.RFC3339, time.RFC3339[:len(time.RFC3339)-5])
if err != nil {
panic(err)
}
expected := Insensitive{
TopString: "string",
TopInt: 1,
TopFloat: 1.1,
TopBool: true,
TopDate: tme,
TopArray: []string{"array"},
MatcH: "i should be in MatcH only",
Match: "i should be in Match only",
Once: "just once",
OncE: "",
Nest: InsensitiveNest{
Ed: InsensitiveEd{NestedString: "another string"},
},
}
var got Insensitive
if _, err := Decode(caseToml, &got); err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(expected, got) {
t.Fatalf("\n%#v\n!=\n%#v\n", expected, got)
}
}
func TestPointers(t *testing.T) {
type Object struct {
Type string
Description string
}
type Dict struct {
NamedObject map[string]*Object
BaseObject *Object
Strptr *string
Strptrs []*string
}
s1, s2, s3 := "blah", "abc", "def"
expected := &Dict{
Strptr: &s1,
Strptrs: []*string{&s2, &s3},
NamedObject: map[string]*Object{
"foo": {"FOO", "fooooo!!!"},
"bar": {"BAR", "ba-ba-ba-ba-barrrr!!!"},
},
BaseObject: &Object{"BASE", "da base"},
}
ex1 := `
Strptr = "blah"
Strptrs = ["abc", "def"]
[NamedObject.foo]
Type = "FOO"
Description = "fooooo!!!"
[NamedObject.bar]
Type = "BAR"
Description = "ba-ba-ba-ba-barrrr!!!"
[BaseObject]
Type = "BASE"
Description = "da base"
`
dict := new(Dict)
_, err := Decode(ex1, dict)
if err != nil {
t.Errorf("Decode error: %v", err)
}
if !reflect.DeepEqual(expected, dict) {
t.Fatalf("\n%#v\n!=\n%#v\n", expected, dict)
}
}
type sphere struct {
Center [3]float64
Radius float64
}
func TestDecodeSimpleArray(t *testing.T) {
var s1 sphere
if _, err := Decode(`center = [0.0, 1.5, 0.0]`, &s1); err != nil {
t.Fatal(err)
}
}
func TestDecodeArrayWrongSize(t *testing.T) {
var s1 sphere
if _, err := Decode(`center = [0.1, 2.3]`, &s1); err == nil {
t.Fatal("Expected array type mismatch error")
}
}
func TestDecodeLargeIntoSmallInt(t *testing.T) {
type table struct {
Value int8
}
var tab table
if _, err := Decode(`value = 500`, &tab); err == nil {
t.Fatal("Expected integer out-of-bounds error.")
}
}
func TestDecodeSizedInts(t *testing.T) {
type table struct {
U8 uint8
U16 uint16
U32 uint32
U64 uint64
U uint
I8 int8
I16 int16
I32 int32
I64 int64
I int
}
answer := table{1, 1, 1, 1, 1, -1, -1, -1, -1, -1}
toml := `
u8 = 1
u16 = 1
u32 = 1
u64 = 1
u = 1
i8 = -1
i16 = -1
i32 = -1
i64 = -1
i = -1
`
var tab table
if _, err := Decode(toml, &tab); err != nil {
t.Fatal(err.Error())
}
if answer != tab {
t.Fatalf("Expected %#v but got %#v", answer, tab)
}
}
func TestUnmarshaler(t *testing.T) {
var tomlBlob = `
[dishes.hamboogie]
name = "Hamboogie with fries"
price = 10.99
[[dishes.hamboogie.ingredients]]
name = "Bread Bun"
[[dishes.hamboogie.ingredients]]
name = "Lettuce"
[[dishes.hamboogie.ingredients]]
name = "Real Beef Patty"
[[dishes.hamboogie.ingredients]]
name = "Tomato"
[dishes.eggsalad]
name = "Egg Salad with rice"
price = 3.99
[[dishes.eggsalad.ingredients]]
name = "Egg"
[[dishes.eggsalad.ingredients]]
name = "Mayo"
[[dishes.eggsalad.ingredients]]
name = "Rice"
`
m := &menu{}
if _, err := Decode(tomlBlob, m); err != nil {
log.Fatal(err)
}
if len(m.Dishes) != 2 {
t.Log("two dishes should be loaded with UnmarshalTOML()")
t.Errorf("expected %d but got %d", 2, len(m.Dishes))
}
eggSalad := m.Dishes["eggsalad"]
if _, ok := interface{}(eggSalad).(dish); !ok {
t.Errorf("expected a dish")
}
if eggSalad.Name != "Egg Salad with rice" {
t.Errorf("expected the dish to be named 'Egg Salad with rice'")
}
if len(eggSalad.Ingredients) != 3 {
t.Log("dish should be loaded with UnmarshalTOML()")
t.Errorf("expected %d but got %d", 3, len(eggSalad.Ingredients))
}
found := false
for _, i := range eggSalad.Ingredients {
if i.Name == "Rice" {
found = true
break
}
}
if !found {
t.Error("Rice was not loaded in UnmarshalTOML()")
}
// test on a value - must be passed as *
o := menu{}
if _, err := Decode(tomlBlob, &o); err != nil {
log.Fatal(err)
}
}
type menu struct {
Dishes map[string]dish
}
func (m *menu) UnmarshalTOML(p interface{}) error {
m.Dishes = make(map[string]dish)
data, _ := p.(map[string]interface{})
dishes := data["dishes"].(map[string]interface{})
for n, v := range dishes {
if d, ok := v.(map[string]interface{}); ok {
nd := dish{}
nd.UnmarshalTOML(d)
m.Dishes[n] = nd
} else {
return fmt.Errorf("not a dish")
}
}
return nil
}
type dish struct {
Name string
Price float32
Ingredients []ingredient
}
func (d *dish) UnmarshalTOML(p interface{}) error {
data, _ := p.(map[string]interface{})
d.Name, _ = data["name"].(string)
d.Price, _ = data["price"].(float32)
ingredients, _ := data["ingredients"].([]map[string]interface{})
for _, e := range ingredients {
n, _ := interface{}(e).(map[string]interface{})
name, _ := n["name"].(string)
i := ingredient{name}
d.Ingredients = append(d.Ingredients, i)
}
return nil
}
type ingredient struct {
Name string
}
func ExampleMetaData_PrimitiveDecode() {
var md MetaData
var err error
var tomlBlob = `
ranking = ["Springsteen", "J Geils"]
[bands.Springsteen]
started = 1973
albums = ["Greetings", "WIESS", "Born to Run", "Darkness"]
[bands."J Geils"]
started = 1970
albums = ["The J. Geils Band", "Full House", "Blow Your Face Out"]
`
type band struct {
Started int
Albums []string
}
type classics struct {
Ranking []string
Bands map[string]Primitive
}
// Do the initial decode. Reflection is delayed on Primitive values.
var music classics
if md, err = Decode(tomlBlob, &music); err != nil {
log.Fatal(err)
}
// MetaData still includes information on Primitive values.
fmt.Printf("Is `bands.Springsteen` defined? %v\n",
md.IsDefined("bands", "Springsteen"))
// Decode primitive data into Go values.
for _, artist := range music.Ranking {
// A band is a primitive value, so we need to decode it to get a
// real `band` value.
primValue := music.Bands[artist]
var aBand band
if err = md.PrimitiveDecode(primValue, &aBand); err != nil {
log.Fatal(err)
}
fmt.Printf("%s started in %d.\n", artist, aBand.Started)
}
// Check to see if there were any fields left undecoded.
// Note that this won't be empty before decoding the Primitive value!
fmt.Printf("Undecoded: %q\n", md.Undecoded())
// Output:
// Is `bands.Springsteen` defined? true
// Springsteen started in 1973.
// J Geils started in 1970.
// Undecoded: []
}
func ExampleDecode() {
var tomlBlob = `
# Some comments.
[alpha]
ip = "10.0.0.1"
[alpha.config]
Ports = [ 8001, 8002 ]
Location = "Toronto"
Created = 1987-07-05T05:45:00Z
[beta]
ip = "10.0.0.2"
[beta.config]
Ports = [ 9001, 9002 ]
Location = "New Jersey"
Created = 1887-01-05T05:55:00Z
`
type serverConfig struct {
Ports []int
Location string
Created time.Time
}
type server struct {
IP string `toml:"ip"`
Config serverConfig `toml:"config"`
}
type servers map[string]server
var config servers
if _, err := Decode(tomlBlob, &config); err != nil {
log.Fatal(err)
}
for _, name := range []string{"alpha", "beta"} {
s := config[name]
fmt.Printf("Server: %s (ip: %s) in %s created on %s\n",
name, s.IP, s.Config.Location,
s.Config.Created.Format("2006-01-02"))
fmt.Printf("Ports: %v\n", s.Config.Ports)
}
// Output:
// Server: alpha (ip: 10.0.0.1) in Toronto created on 1987-07-05
// Ports: [8001 8002]
// Server: beta (ip: 10.0.0.2) in New Jersey created on 1887-01-05
// Ports: [9001 9002]
}
type duration struct {
time.Duration
}
func (d *duration) UnmarshalText(text []byte) error {
var err error
d.Duration, err = time.ParseDuration(string(text))
return err
}
// Example Unmarshaler shows how to decode TOML strings into your own
// custom data type.
func Example_unmarshaler() {
blob := `
[[song]]
name = "Thunder Road"
duration = "4m49s"
[[song]]
name = "Stairway to Heaven"
duration = "8m03s"
`
type song struct {
Name string
Duration duration
}
type songs struct {
Song []song
}
var favorites songs
if _, err := Decode(blob, &favorites); err != nil {
log.Fatal(err)
}
// Code to implement the TextUnmarshaler interface for `duration`:
//
// type duration struct {
// time.Duration
// }
//
// func (d *duration) UnmarshalText(text []byte) error {
// var err error
// d.Duration, err = time.ParseDuration(string(text))
// return err
// }
for _, s := range favorites.Song {
fmt.Printf("%s (%s)\n", s.Name, s.Duration)
}
// Output:
// Thunder Road (4m49s)
// Stairway to Heaven (8m3s)
}
// Example StrictDecoding shows how to detect whether there are keys in the
// TOML document that weren't decoded into the value given. This is useful
// for returning an error to the user if they've included extraneous fields
// in their configuration.
func Example_strictDecoding() {
var blob = `
key1 = "value1"
key2 = "value2"
key3 = "value3"
`
type config struct {
Key1 string
Key3 string
}
var conf config
md, err := Decode(blob, &conf)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Undecoded keys: %q\n", md.Undecoded())
// Output:
// Undecoded keys: ["key2"]
}
// Example UnmarshalTOML shows how to implement a struct type that knows how to
// unmarshal itself. The struct must take full responsibility for mapping the
// values passed into the struct. The method may be used with interfaces in a
// struct in cases where the actual type is not known until the data is
// examined.
func Example_unmarshalTOML() {
var blob = `
[[parts]]
type = "valve"
id = "valve-1"
size = 1.2
rating = 4
[[parts]]
type = "valve"
id = "valve-2"
size = 2.1
rating = 5
[[parts]]
type = "pipe"
id = "pipe-1"
length = 2.1
diameter = 12
[[parts]]
type = "cable"
id = "cable-1"
length = 12
rating = 3.1
`
o := &order{}
err := Unmarshal([]byte(blob), o)
if err != nil {
log.Fatal(err)
}
fmt.Println(len(o.parts))
for _, part := range o.parts {
fmt.Println(part.Name())
}
// Code to implement UmarshalJSON.
// type order struct {
// // NOTE `order.parts` is a private slice of type `part` which is an
// // interface and may only be loaded from toml using the
// // UnmarshalTOML() method of the Umarshaler interface.
// parts parts
// }
// func (o *order) UnmarshalTOML(data interface{}) error {
// // NOTE the example below contains detailed type casting to show how
// // the 'data' is retrieved. In operational use, a type cast wrapper
// // may be prefered e.g.
// //
// // func AsMap(v interface{}) (map[string]interface{}, error) {
// // return v.(map[string]interface{})
// // }
// //
// // resulting in:
// // d, _ := AsMap(data)
// //
// d, _ := data.(map[string]interface{})
// parts, _ := d["parts"].([]map[string]interface{})
// for _, p := range parts {
// typ, _ := p["type"].(string)
// id, _ := p["id"].(string)
// // detect the type of part and handle each case
// switch p["type"] {
// case "valve":
// size := float32(p["size"].(float64))
// rating := int(p["rating"].(int64))
// valve := &valve{
// Type: typ,
// ID: id,
// Size: size,
// Rating: rating,
// }
// o.parts = append(o.parts, valve)
// case "pipe":
// length := float32(p["length"].(float64))
// diameter := int(p["diameter"].(int64))
// pipe := &pipe{
// Type: typ,
// ID: id,
// Length: length,
// Diameter: diameter,
// }
// o.parts = append(o.parts, pipe)
// case "cable":
// length := int(p["length"].(int64))
// rating := float32(p["rating"].(float64))
// cable := &cable{
// Type: typ,
// ID: id,
// Length: length,
// Rating: rating,
// }
// o.parts = append(o.parts, cable)
// }
// }
// return nil
// }
// type parts []part
// type part interface {
// Name() string
// }
// type valve struct {
// Type string
// ID string
// Size float32
// Rating int
// }
// func (v *valve) Name() string {
// return fmt.Sprintf("VALVE: %s", v.ID)
// }
// type pipe struct {
// Type string
// ID string
// Length float32
// Diameter int
// }
// func (p *pipe) Name() string {
// return fmt.Sprintf("PIPE: %s", p.ID)
// }
// type cable struct {
// Type string
// ID string
// Length int
// Rating float32
// }
// func (c *cable) Name() string {
// return fmt.Sprintf("CABLE: %s", c.ID)
// }
// Output:
// 4
// VALVE: valve-1
// VALVE: valve-2
// PIPE: pipe-1
// CABLE: cable-1
}
type order struct {
// NOTE `order.parts` is a private slice of type `part` which is an
// interface and may only be loaded from toml using the UnmarshalTOML()
// method of the Umarshaler interface.
parts parts
}
func (o *order) UnmarshalTOML(data interface{}) error {
// NOTE the example below contains detailed type casting to show how
// the 'data' is retrieved. In operational use, a type cast wrapper
// may be prefered e.g.
//
// func AsMap(v interface{}) (map[string]interface{}, error) {
// return v.(map[string]interface{})
// }
//
// resulting in:
// d, _ := AsMap(data)
//
d, _ := data.(map[string]interface{})
parts, _ := d["parts"].([]map[string]interface{})
for _, p := range parts {
typ, _ := p["type"].(string)
id, _ := p["id"].(string)
// detect the type of part and handle each case
switch p["type"] {
case "valve":
size := float32(p["size"].(float64))
rating := int(p["rating"].(int64))
valve := &valve{
Type: typ,
ID: id,
Size: size,
Rating: rating,
}
o.parts = append(o.parts, valve)
case "pipe":
length := float32(p["length"].(float64))
diameter := int(p["diameter"].(int64))
pipe := &pipe{
Type: typ,
ID: id,
Length: length,
Diameter: diameter,
}
o.parts = append(o.parts, pipe)
case "cable":
length := int(p["length"].(int64))
rating := float32(p["rating"].(float64))
cable := &cable{
Type: typ,
ID: id,
Length: length,
Rating: rating,
}
o.parts = append(o.parts, cable)
}
}
return nil
}
type parts []part
type part interface {
Name() string
}
type valve struct {
Type string
ID string
Size float32
Rating int
}
func (v *valve) Name() string {
return fmt.Sprintf("VALVE: %s", v.ID)
}
type pipe struct {
Type string
ID string
Length float32
Diameter int
}
func (p *pipe) Name() string {
return fmt.Sprintf("PIPE: %s", p.ID)
}
type cable struct {
Type string
ID string
Length int
Rating float32
}
func (c *cable) Name() string {
return fmt.Sprintf("CABLE: %s", c.ID)
}
-27
View File
@@ -1,27 +0,0 @@
/*
Package toml provides facilities for decoding and encoding TOML configuration
files via reflection. There is also support for delaying decoding with
the Primitive type, and querying the set of keys in a TOML document with the
MetaData type.
The specification implemented: https://github.com/mojombo/toml
The sub-command github.com/BurntSushi/toml/cmd/tomlv can be used to verify
whether a file is a valid TOML document. It can also be used to print the
type of each key in a TOML document.
Testing
There are two important types of tests used for this package. The first is
contained inside '*_test.go' files and uses the standard Go unit testing
framework. These tests are primarily devoted to holistically testing the
decoder and encoder.
The second type of testing is used to verify the implementation's adherence
to the TOML specification. These tests have been factored into their own
project: https://github.com/BurntSushi/toml-test
The reason the tests are in a separate project is so that they can be used by
any implementation of TOML. Namely, it is language agnostic.
*/
package toml
-551
View File
@@ -1,551 +0,0 @@
package toml
import (
"bufio"
"errors"
"fmt"
"io"
"reflect"
"sort"
"strconv"
"strings"
"time"
)
type tomlEncodeError struct{ error }
var (
errArrayMixedElementTypes = errors.New(
"can't encode array with mixed element types")
errArrayNilElement = errors.New(
"can't encode array with nil element")
errNonString = errors.New(
"can't encode a map with non-string key type")
errAnonNonStruct = errors.New(
"can't encode an anonymous field that is not a struct")
errArrayNoTable = errors.New(
"TOML array element can't contain a table")
errNoKey = errors.New(
"top-level values must be a Go map or struct")
errAnything = errors.New("") // used in testing
)
var quotedReplacer = strings.NewReplacer(
"\t", "\\t",
"\n", "\\n",
"\r", "\\r",
"\"", "\\\"",
"\\", "\\\\",
)
// Encoder controls the encoding of Go values to a TOML document to some
// io.Writer.
//
// The indentation level can be controlled with the Indent field.
type Encoder struct {
// A single indentation level. By default it is two spaces.
Indent string
// hasWritten is whether we have written any output to w yet.
hasWritten bool
w *bufio.Writer
}
// NewEncoder returns a TOML encoder that encodes Go values to the io.Writer
// given. By default, a single indentation level is 2 spaces.
func NewEncoder(w io.Writer) *Encoder {
return &Encoder{
w: bufio.NewWriter(w),
Indent: " ",
}
}
// Encode writes a TOML representation of the Go value to the underlying
// io.Writer. If the value given cannot be encoded to a valid TOML document,
// then an error is returned.
//
// The mapping between Go values and TOML values should be precisely the same
// as for the Decode* functions. Similarly, the TextMarshaler interface is
// supported by encoding the resulting bytes as strings. (If you want to write
// arbitrary binary data then you will need to use something like base64 since
// TOML does not have any binary types.)
//
// When encoding TOML hashes (i.e., Go maps or structs), keys without any
// sub-hashes are encoded first.
//
// If a Go map is encoded, then its keys are sorted alphabetically for
// deterministic output. More control over this behavior may be provided if
// there is demand for it.
//
// Encoding Go values without a corresponding TOML representation---like map
// types with non-string keys---will cause an error to be returned. Similarly
// for mixed arrays/slices, arrays/slices with nil elements, embedded
// non-struct types and nested slices containing maps or structs.
// (e.g., [][]map[string]string is not allowed but []map[string]string is OK
// and so is []map[string][]string.)
func (enc *Encoder) Encode(v interface{}) error {
rv := eindirect(reflect.ValueOf(v))
if err := enc.safeEncode(Key([]string{}), rv); err != nil {
return err
}
return enc.w.Flush()
}
func (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) {
defer func() {
if r := recover(); r != nil {
if terr, ok := r.(tomlEncodeError); ok {
err = terr.error
return
}
panic(r)
}
}()
enc.encode(key, rv)
return nil
}
func (enc *Encoder) encode(key Key, rv reflect.Value) {
// Special case. Time needs to be in ISO8601 format.
// Special case. If we can marshal the type to text, then we used that.
// Basically, this prevents the encoder for handling these types as
// generic structs (or whatever the underlying type of a TextMarshaler is).
switch rv.Interface().(type) {
case time.Time, TextMarshaler:
enc.keyEqElement(key, rv)
return
}
k := rv.Kind()
switch k {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
reflect.Int64,
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,
reflect.Uint64,
reflect.Float32, reflect.Float64, reflect.String, reflect.Bool:
enc.keyEqElement(key, rv)
case reflect.Array, reflect.Slice:
if typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) {
enc.eArrayOfTables(key, rv)
} else {
enc.keyEqElement(key, rv)
}
case reflect.Interface:
if rv.IsNil() {
return
}
enc.encode(key, rv.Elem())
case reflect.Map:
if rv.IsNil() {
return
}
enc.eTable(key, rv)
case reflect.Ptr:
if rv.IsNil() {
return
}
enc.encode(key, rv.Elem())
case reflect.Struct:
enc.eTable(key, rv)
default:
panic(e("Unsupported type for key '%s': %s", key, k))
}
}
// eElement encodes any value that can be an array element (primitives and
// arrays).
func (enc *Encoder) eElement(rv reflect.Value) {
switch v := rv.Interface().(type) {
case time.Time:
// Special case time.Time as a primitive. Has to come before
// TextMarshaler below because time.Time implements
// encoding.TextMarshaler, but we need to always use UTC.
enc.wf(v.In(time.FixedZone("UTC", 0)).Format("2006-01-02T15:04:05Z"))
return
case TextMarshaler:
// Special case. Use text marshaler if it's available for this value.
if s, err := v.MarshalText(); err != nil {
encPanic(err)
} else {
enc.writeQuoted(string(s))
}
return
}
switch rv.Kind() {
case reflect.Bool:
enc.wf(strconv.FormatBool(rv.Bool()))
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
reflect.Int64:
enc.wf(strconv.FormatInt(rv.Int(), 10))
case reflect.Uint, reflect.Uint8, reflect.Uint16,
reflect.Uint32, reflect.Uint64:
enc.wf(strconv.FormatUint(rv.Uint(), 10))
case reflect.Float32:
enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 32)))
case reflect.Float64:
enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 64)))
case reflect.Array, reflect.Slice:
enc.eArrayOrSliceElement(rv)
case reflect.Interface:
enc.eElement(rv.Elem())
case reflect.String:
enc.writeQuoted(rv.String())
default:
panic(e("Unexpected primitive type: %s", rv.Kind()))
}
}
// By the TOML spec, all floats must have a decimal with at least one
// number on either side.
func floatAddDecimal(fstr string) string {
if !strings.Contains(fstr, ".") {
return fstr + ".0"
}
return fstr
}
func (enc *Encoder) writeQuoted(s string) {
enc.wf("\"%s\"", quotedReplacer.Replace(s))
}
func (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) {
length := rv.Len()
enc.wf("[")
for i := 0; i < length; i++ {
elem := rv.Index(i)
enc.eElement(elem)
if i != length-1 {
enc.wf(", ")
}
}
enc.wf("]")
}
func (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) {
if len(key) == 0 {
encPanic(errNoKey)
}
for i := 0; i < rv.Len(); i++ {
trv := rv.Index(i)
if isNil(trv) {
continue
}
panicIfInvalidKey(key)
enc.newline()
enc.wf("%s[[%s]]", enc.indentStr(key), key.maybeQuotedAll())
enc.newline()
enc.eMapOrStruct(key, trv)
}
}
func (enc *Encoder) eTable(key Key, rv reflect.Value) {
panicIfInvalidKey(key)
if len(key) == 1 {
// Output an extra new line between top-level tables.
// (The newline isn't written if nothing else has been written though.)
enc.newline()
}
if len(key) > 0 {
enc.wf("%s[%s]", enc.indentStr(key), key.maybeQuotedAll())
enc.newline()
}
enc.eMapOrStruct(key, rv)
}
func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value) {
switch rv := eindirect(rv); rv.Kind() {
case reflect.Map:
enc.eMap(key, rv)
case reflect.Struct:
enc.eStruct(key, rv)
default:
panic("eTable: unhandled reflect.Value Kind: " + rv.Kind().String())
}
}
func (enc *Encoder) eMap(key Key, rv reflect.Value) {
rt := rv.Type()
if rt.Key().Kind() != reflect.String {
encPanic(errNonString)
}
// Sort keys so that we have deterministic output. And write keys directly
// underneath this key first, before writing sub-structs or sub-maps.
var mapKeysDirect, mapKeysSub []string
for _, mapKey := range rv.MapKeys() {
k := mapKey.String()
if typeIsHash(tomlTypeOfGo(rv.MapIndex(mapKey))) {
mapKeysSub = append(mapKeysSub, k)
} else {
mapKeysDirect = append(mapKeysDirect, k)
}
}
var writeMapKeys = func(mapKeys []string) {
sort.Strings(mapKeys)
for _, mapKey := range mapKeys {
mrv := rv.MapIndex(reflect.ValueOf(mapKey))
if isNil(mrv) {
// Don't write anything for nil fields.
continue
}
enc.encode(key.add(mapKey), mrv)
}
}
writeMapKeys(mapKeysDirect)
writeMapKeys(mapKeysSub)
}
func (enc *Encoder) eStruct(key Key, rv reflect.Value) {
// Write keys for fields directly under this key first, because if we write
// a field that creates a new table, then all keys under it will be in that
// table (not the one we're writing here).
rt := rv.Type()
var fieldsDirect, fieldsSub [][]int
var addFields func(rt reflect.Type, rv reflect.Value, start []int)
addFields = func(rt reflect.Type, rv reflect.Value, start []int) {
for i := 0; i < rt.NumField(); i++ {
f := rt.Field(i)
// skip unexporded fields
if f.PkgPath != "" {
continue
}
frv := rv.Field(i)
if f.Anonymous {
frv := eindirect(frv)
t := frv.Type()
if t.Kind() != reflect.Struct {
encPanic(errAnonNonStruct)
}
addFields(t, frv, f.Index)
} else if typeIsHash(tomlTypeOfGo(frv)) {
fieldsSub = append(fieldsSub, append(start, f.Index...))
} else {
fieldsDirect = append(fieldsDirect, append(start, f.Index...))
}
}
}
addFields(rt, rv, nil)
var writeFields = func(fields [][]int) {
for _, fieldIndex := range fields {
sft := rt.FieldByIndex(fieldIndex)
sf := rv.FieldByIndex(fieldIndex)
if isNil(sf) {
// Don't write anything for nil fields.
continue
}
keyName := sft.Tag.Get("toml")
if keyName == "-" {
continue
}
if keyName == "" {
keyName = sft.Name
}
keyName, opts := getOptions(keyName)
if _, ok := opts["omitempty"]; ok && isEmpty(sf) {
continue
} else if _, ok := opts["omitzero"]; ok && isZero(sf) {
continue
}
enc.encode(key.add(keyName), sf)
}
}
writeFields(fieldsDirect)
writeFields(fieldsSub)
}
// tomlTypeName returns the TOML type name of the Go value's type. It is
// used to determine whether the types of array elements are mixed (which is
// forbidden). If the Go value is nil, then it is illegal for it to be an array
// element, and valueIsNil is returned as true.
// Returns the TOML type of a Go value. The type may be `nil`, which means
// no concrete TOML type could be found.
func tomlTypeOfGo(rv reflect.Value) tomlType {
if isNil(rv) || !rv.IsValid() {
return nil
}
switch rv.Kind() {
case reflect.Bool:
return tomlBool
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32,
reflect.Int64,
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32,
reflect.Uint64:
return tomlInteger
case reflect.Float32, reflect.Float64:
return tomlFloat
case reflect.Array, reflect.Slice:
if typeEqual(tomlHash, tomlArrayType(rv)) {
return tomlArrayHash
} else {
return tomlArray
}
case reflect.Ptr, reflect.Interface:
return tomlTypeOfGo(rv.Elem())
case reflect.String:
return tomlString
case reflect.Map:
return tomlHash
case reflect.Struct:
switch rv.Interface().(type) {
case time.Time:
return tomlDatetime
case TextMarshaler:
return tomlString
default:
return tomlHash
}
default:
panic("unexpected reflect.Kind: " + rv.Kind().String())
}
}
// tomlArrayType returns the element type of a TOML array. The type returned
// may be nil if it cannot be determined (e.g., a nil slice or a zero length
// slize). This function may also panic if it finds a type that cannot be
// expressed in TOML (such as nil elements, heterogeneous arrays or directly
// nested arrays of tables).
func tomlArrayType(rv reflect.Value) tomlType {
if isNil(rv) || !rv.IsValid() || rv.Len() == 0 {
return nil
}
firstType := tomlTypeOfGo(rv.Index(0))
if firstType == nil {
encPanic(errArrayNilElement)
}
rvlen := rv.Len()
for i := 1; i < rvlen; i++ {
elem := rv.Index(i)
switch elemType := tomlTypeOfGo(elem); {
case elemType == nil:
encPanic(errArrayNilElement)
case !typeEqual(firstType, elemType):
encPanic(errArrayMixedElementTypes)
}
}
// If we have a nested array, then we must make sure that the nested
// array contains ONLY primitives.
// This checks arbitrarily nested arrays.
if typeEqual(firstType, tomlArray) || typeEqual(firstType, tomlArrayHash) {
nest := tomlArrayType(eindirect(rv.Index(0)))
if typeEqual(nest, tomlHash) || typeEqual(nest, tomlArrayHash) {
encPanic(errArrayNoTable)
}
}
return firstType
}
func getOptions(keyName string) (string, map[string]struct{}) {
opts := make(map[string]struct{})
ss := strings.Split(keyName, ",")
name := ss[0]
if len(ss) > 1 {
for _, opt := range ss {
opts[opt] = struct{}{}
}
}
return name, opts
}
func isZero(rv reflect.Value) bool {
switch rv.Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
if rv.Int() == 0 {
return true
}
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
if rv.Uint() == 0 {
return true
}
case reflect.Float32, reflect.Float64:
if rv.Float() == 0.0 {
return true
}
}
return false
}
func isEmpty(rv reflect.Value) bool {
switch rv.Kind() {
case reflect.String:
if len(strings.TrimSpace(rv.String())) == 0 {
return true
}
case reflect.Array, reflect.Slice, reflect.Map:
if rv.Len() == 0 {
return true
}
}
return false
}
func (enc *Encoder) newline() {
if enc.hasWritten {
enc.wf("\n")
}
}
func (enc *Encoder) keyEqElement(key Key, val reflect.Value) {
if len(key) == 0 {
encPanic(errNoKey)
}
panicIfInvalidKey(key)
enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1))
enc.eElement(val)
enc.newline()
}
func (enc *Encoder) wf(format string, v ...interface{}) {
if _, err := fmt.Fprintf(enc.w, format, v...); err != nil {
encPanic(err)
}
enc.hasWritten = true
}
func (enc *Encoder) indentStr(key Key) string {
return strings.Repeat(enc.Indent, len(key)-1)
}
func encPanic(err error) {
panic(tomlEncodeError{err})
}
func eindirect(v reflect.Value) reflect.Value {
switch v.Kind() {
case reflect.Ptr, reflect.Interface:
return eindirect(v.Elem())
default:
return v
}
}
func isNil(rv reflect.Value) bool {
switch rv.Kind() {
case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
return rv.IsNil()
default:
return false
}
}
func panicIfInvalidKey(key Key) {
for _, k := range key {
if len(k) == 0 {
encPanic(e("Key '%s' is not a valid table name. Key names "+
"cannot be empty.", key.maybeQuotedAll()))
}
}
}
func isValidKeyName(s string) bool {
return len(s) != 0
}
-542
View File
@@ -1,542 +0,0 @@
package toml
import (
"bytes"
"fmt"
"log"
"net"
"testing"
"time"
)
func TestEncodeRoundTrip(t *testing.T) {
type Config struct {
Age int
Cats []string
Pi float64
Perfection []int
DOB time.Time
Ipaddress net.IP
}
var inputs = Config{
13,
[]string{"one", "two", "three"},
3.145,
[]int{11, 2, 3, 4},
time.Now(),
net.ParseIP("192.168.59.254"),
}
var firstBuffer bytes.Buffer
e := NewEncoder(&firstBuffer)
err := e.Encode(inputs)
if err != nil {
t.Fatal(err)
}
var outputs Config
if _, err := Decode(firstBuffer.String(), &outputs); err != nil {
log.Printf("Could not decode:\n-----\n%s\n-----\n",
firstBuffer.String())
t.Fatal(err)
}
// could test each value individually, but I'm lazy
var secondBuffer bytes.Buffer
e2 := NewEncoder(&secondBuffer)
err = e2.Encode(outputs)
if err != nil {
t.Fatal(err)
}
if firstBuffer.String() != secondBuffer.String() {
t.Error(
firstBuffer.String(),
"\n\n is not identical to\n\n",
secondBuffer.String())
}
}
// XXX(burntsushi)
// I think these tests probably should be removed. They are good, but they
// ought to be obsolete by toml-test.
func TestEncode(t *testing.T) {
type Embedded struct {
Int int `toml:"_int"`
}
type NonStruct int
date := time.Date(2014, 5, 11, 20, 30, 40, 0, time.FixedZone("IST", 3600))
dateStr := "2014-05-11T19:30:40Z"
tests := map[string]struct {
input interface{}
wantOutput string
wantError error
}{
"bool field": {
input: struct {
BoolTrue bool
BoolFalse bool
}{true, false},
wantOutput: "BoolTrue = true\nBoolFalse = false\n",
},
"int fields": {
input: struct {
Int int
Int8 int8
Int16 int16
Int32 int32
Int64 int64
}{1, 2, 3, 4, 5},
wantOutput: "Int = 1\nInt8 = 2\nInt16 = 3\nInt32 = 4\nInt64 = 5\n",
},
"uint fields": {
input: struct {
Uint uint
Uint8 uint8
Uint16 uint16
Uint32 uint32
Uint64 uint64
}{1, 2, 3, 4, 5},
wantOutput: "Uint = 1\nUint8 = 2\nUint16 = 3\nUint32 = 4" +
"\nUint64 = 5\n",
},
"float fields": {
input: struct {
Float32 float32
Float64 float64
}{1.5, 2.5},
wantOutput: "Float32 = 1.5\nFloat64 = 2.5\n",
},
"string field": {
input: struct{ String string }{"foo"},
wantOutput: "String = \"foo\"\n",
},
"string field and unexported field": {
input: struct {
String string
unexported int
}{"foo", 0},
wantOutput: "String = \"foo\"\n",
},
"datetime field in UTC": {
input: struct{ Date time.Time }{date},
wantOutput: fmt.Sprintf("Date = %s\n", dateStr),
},
"datetime field as primitive": {
// Using a map here to fail if isStructOrMap() returns true for
// time.Time.
input: map[string]interface{}{
"Date": date,
"Int": 1,
},
wantOutput: fmt.Sprintf("Date = %s\nInt = 1\n", dateStr),
},
"array fields": {
input: struct {
IntArray0 [0]int
IntArray3 [3]int
}{[0]int{}, [3]int{1, 2, 3}},
wantOutput: "IntArray0 = []\nIntArray3 = [1, 2, 3]\n",
},
"slice fields": {
input: struct{ IntSliceNil, IntSlice0, IntSlice3 []int }{
nil, []int{}, []int{1, 2, 3},
},
wantOutput: "IntSlice0 = []\nIntSlice3 = [1, 2, 3]\n",
},
"datetime slices": {
input: struct{ DatetimeSlice []time.Time }{
[]time.Time{date, date},
},
wantOutput: fmt.Sprintf("DatetimeSlice = [%s, %s]\n",
dateStr, dateStr),
},
"nested arrays and slices": {
input: struct {
SliceOfArrays [][2]int
ArrayOfSlices [2][]int
SliceOfArraysOfSlices [][2][]int
ArrayOfSlicesOfArrays [2][][2]int
SliceOfMixedArrays [][2]interface{}
ArrayOfMixedSlices [2][]interface{}
}{
[][2]int{{1, 2}, {3, 4}},
[2][]int{{1, 2}, {3, 4}},
[][2][]int{
{
{1, 2}, {3, 4},
},
{
{5, 6}, {7, 8},
},
},
[2][][2]int{
{
{1, 2}, {3, 4},
},
{
{5, 6}, {7, 8},
},
},
[][2]interface{}{
{1, 2}, {"a", "b"},
},
[2][]interface{}{
{1, 2}, {"a", "b"},
},
},
wantOutput: `SliceOfArrays = [[1, 2], [3, 4]]
ArrayOfSlices = [[1, 2], [3, 4]]
SliceOfArraysOfSlices = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
ArrayOfSlicesOfArrays = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
SliceOfMixedArrays = [[1, 2], ["a", "b"]]
ArrayOfMixedSlices = [[1, 2], ["a", "b"]]
`,
},
"empty slice": {
input: struct{ Empty []interface{} }{[]interface{}{}},
wantOutput: "Empty = []\n",
},
"(error) slice with element type mismatch (string and integer)": {
input: struct{ Mixed []interface{} }{[]interface{}{1, "a"}},
wantError: errArrayMixedElementTypes,
},
"(error) slice with element type mismatch (integer and float)": {
input: struct{ Mixed []interface{} }{[]interface{}{1, 2.5}},
wantError: errArrayMixedElementTypes,
},
"slice with elems of differing Go types, same TOML types": {
input: struct {
MixedInts []interface{}
MixedFloats []interface{}
}{
[]interface{}{
int(1), int8(2), int16(3), int32(4), int64(5),
uint(1), uint8(2), uint16(3), uint32(4), uint64(5),
},
[]interface{}{float32(1.5), float64(2.5)},
},
wantOutput: "MixedInts = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]\n" +
"MixedFloats = [1.5, 2.5]\n",
},
"(error) slice w/ element type mismatch (one is nested array)": {
input: struct{ Mixed []interface{} }{
[]interface{}{1, []interface{}{2}},
},
wantError: errArrayMixedElementTypes,
},
"(error) slice with 1 nil element": {
input: struct{ NilElement1 []interface{} }{[]interface{}{nil}},
wantError: errArrayNilElement,
},
"(error) slice with 1 nil element (and other non-nil elements)": {
input: struct{ NilElement []interface{} }{
[]interface{}{1, nil},
},
wantError: errArrayNilElement,
},
"simple map": {
input: map[string]int{"a": 1, "b": 2},
wantOutput: "a = 1\nb = 2\n",
},
"map with interface{} value type": {
input: map[string]interface{}{"a": 1, "b": "c"},
wantOutput: "a = 1\nb = \"c\"\n",
},
"map with interface{} value type, some of which are structs": {
input: map[string]interface{}{
"a": struct{ Int int }{2},
"b": 1,
},
wantOutput: "b = 1\n\n[a]\n Int = 2\n",
},
"nested map": {
input: map[string]map[string]int{
"a": {"b": 1},
"c": {"d": 2},
},
wantOutput: "[a]\n b = 1\n\n[c]\n d = 2\n",
},
"nested struct": {
input: struct{ Struct struct{ Int int } }{
struct{ Int int }{1},
},
wantOutput: "[Struct]\n Int = 1\n",
},
"nested struct and non-struct field": {
input: struct {
Struct struct{ Int int }
Bool bool
}{struct{ Int int }{1}, true},
wantOutput: "Bool = true\n\n[Struct]\n Int = 1\n",
},
"2 nested structs": {
input: struct{ Struct1, Struct2 struct{ Int int } }{
struct{ Int int }{1}, struct{ Int int }{2},
},
wantOutput: "[Struct1]\n Int = 1\n\n[Struct2]\n Int = 2\n",
},
"deeply nested structs": {
input: struct {
Struct1, Struct2 struct{ Struct3 *struct{ Int int } }
}{
struct{ Struct3 *struct{ Int int } }{&struct{ Int int }{1}},
struct{ Struct3 *struct{ Int int } }{nil},
},
wantOutput: "[Struct1]\n [Struct1.Struct3]\n Int = 1" +
"\n\n[Struct2]\n",
},
"nested struct with nil struct elem": {
input: struct {
Struct struct{ Inner *struct{ Int int } }
}{
struct{ Inner *struct{ Int int } }{nil},
},
wantOutput: "[Struct]\n",
},
"nested struct with no fields": {
input: struct {
Struct struct{ Inner struct{} }
}{
struct{ Inner struct{} }{struct{}{}},
},
wantOutput: "[Struct]\n [Struct.Inner]\n",
},
"struct with tags": {
input: struct {
Struct struct {
Int int `toml:"_int"`
} `toml:"_struct"`
Bool bool `toml:"_bool"`
}{
struct {
Int int `toml:"_int"`
}{1}, true,
},
wantOutput: "_bool = true\n\n[_struct]\n _int = 1\n",
},
"embedded struct": {
input: struct{ Embedded }{Embedded{1}},
wantOutput: "_int = 1\n",
},
"embedded *struct": {
input: struct{ *Embedded }{&Embedded{1}},
wantOutput: "_int = 1\n",
},
"nested embedded struct": {
input: struct {
Struct struct{ Embedded } `toml:"_struct"`
}{struct{ Embedded }{Embedded{1}}},
wantOutput: "[_struct]\n _int = 1\n",
},
"nested embedded *struct": {
input: struct {
Struct struct{ *Embedded } `toml:"_struct"`
}{struct{ *Embedded }{&Embedded{1}}},
wantOutput: "[_struct]\n _int = 1\n",
},
"array of tables": {
input: struct {
Structs []*struct{ Int int } `toml:"struct"`
}{
[]*struct{ Int int }{{1}, {3}},
},
wantOutput: "[[struct]]\n Int = 1\n\n[[struct]]\n Int = 3\n",
},
"array of tables order": {
input: map[string]interface{}{
"map": map[string]interface{}{
"zero": 5,
"arr": []map[string]int{
map[string]int{
"friend": 5,
},
},
},
},
wantOutput: "[map]\n zero = 5\n\n [[map.arr]]\n friend = 5\n",
},
"(error) top-level slice": {
input: []struct{ Int int }{{1}, {2}, {3}},
wantError: errNoKey,
},
"(error) slice of slice": {
input: struct {
Slices [][]struct{ Int int }
}{
[][]struct{ Int int }{{{1}}, {{2}}, {{3}}},
},
wantError: errArrayNoTable,
},
"(error) map no string key": {
input: map[int]string{1: ""},
wantError: errNonString,
},
"(error) anonymous non-struct": {
input: struct{ NonStruct }{5},
wantError: errAnonNonStruct,
},
"(error) empty key name": {
input: map[string]int{"": 1},
wantError: errAnything,
},
"(error) empty map name": {
input: map[string]interface{}{
"": map[string]int{"v": 1},
},
wantError: errAnything,
},
}
for label, test := range tests {
encodeExpected(t, label, test.input, test.wantOutput, test.wantError)
}
}
func TestEncodeNestedTableArrays(t *testing.T) {
type song struct {
Name string `toml:"name"`
}
type album struct {
Name string `toml:"name"`
Songs []song `toml:"songs"`
}
type springsteen struct {
Albums []album `toml:"albums"`
}
value := springsteen{
[]album{
{"Born to Run",
[]song{{"Jungleland"}, {"Meeting Across the River"}}},
{"Born in the USA",
[]song{{"Glory Days"}, {"Dancing in the Dark"}}},
},
}
expected := `[[albums]]
name = "Born to Run"
[[albums.songs]]
name = "Jungleland"
[[albums.songs]]
name = "Meeting Across the River"
[[albums]]
name = "Born in the USA"
[[albums.songs]]
name = "Glory Days"
[[albums.songs]]
name = "Dancing in the Dark"
`
encodeExpected(t, "nested table arrays", value, expected, nil)
}
func TestEncodeArrayHashWithNormalHashOrder(t *testing.T) {
type Alpha struct {
V int
}
type Beta struct {
V int
}
type Conf struct {
V int
A Alpha
B []Beta
}
val := Conf{
V: 1,
A: Alpha{2},
B: []Beta{{3}},
}
expected := "V = 1\n\n[A]\n V = 2\n\n[[B]]\n V = 3\n"
encodeExpected(t, "array hash with normal hash order", val, expected, nil)
}
func TestEncodeWithOmitEmpty(t *testing.T) {
type simple struct {
User string `toml:"user"`
Pass string `toml:"password,omitempty"`
}
value := simple{"Testing", ""}
expected := fmt.Sprintf("user = %q\n", value.User)
encodeExpected(t, "simple with omitempty, is empty", value, expected, nil)
value.Pass = "some password"
expected = fmt.Sprintf("user = %q\npassword = %q\n", value.User, value.Pass)
encodeExpected(t, "simple with omitempty, not empty", value, expected, nil)
}
func TestEncodeWithOmitZero(t *testing.T) {
type simple struct {
Number int `toml:"number,omitzero"`
Real float64 `toml:"real,omitzero"`
Unsigned uint `toml:"unsigned,omitzero"`
}
value := simple{0, 0.0, uint(0)}
expected := ""
encodeExpected(t, "simple with omitzero, all zero", value, expected, nil)
value.Number = 10
value.Real = 20
value.Unsigned = 5
expected = `number = 10
real = 20.0
unsigned = 5
`
encodeExpected(t, "simple with omitzero, non-zero", value, expected, nil)
}
func encodeExpected(
t *testing.T, label string, val interface{}, wantStr string, wantErr error,
) {
var buf bytes.Buffer
enc := NewEncoder(&buf)
err := enc.Encode(val)
if err != wantErr {
if wantErr != nil {
if wantErr == errAnything && err != nil {
return
}
t.Errorf("%s: want Encode error %v, got %v", label, wantErr, err)
} else {
t.Errorf("%s: Encode failed: %s", label, err)
}
}
if err != nil {
return
}
if got := buf.String(); wantStr != got {
t.Errorf("%s: want\n-----\n%q\n-----\nbut got\n-----\n%q\n-----\n",
label, wantStr, got)
}
}
func ExampleEncoder_Encode() {
date, _ := time.Parse(time.RFC822, "14 Mar 10 18:00 UTC")
var config = map[string]interface{}{
"date": date,
"counts": []int{1, 1, 2, 3, 5, 8},
"hash": map[string]string{
"key1": "val1",
"key2": "val2",
},
}
buf := new(bytes.Buffer)
if err := NewEncoder(buf).Encode(config); err != nil {
log.Fatal(err)
}
fmt.Println(buf.String())
// Output:
// counts = [1, 1, 2, 3, 5, 8]
// date = 2010-03-14T18:00:00Z
//
// [hash]
// key1 = "val1"
// key2 = "val2"
}
-874
View File
@@ -1,874 +0,0 @@
package toml
import (
"fmt"
"strings"
"unicode/utf8"
)
type itemType int
const (
itemError itemType = iota
itemNIL // used in the parser to indicate no type
itemEOF
itemText
itemString
itemRawString
itemMultilineString
itemRawMultilineString
itemBool
itemInteger
itemFloat
itemDatetime
itemArray // the start of an array
itemArrayEnd
itemTableStart
itemTableEnd
itemArrayTableStart
itemArrayTableEnd
itemKeyStart
itemCommentStart
)
const (
eof = 0
tableStart = '['
tableEnd = ']'
arrayTableStart = '['
arrayTableEnd = ']'
tableSep = '.'
keySep = '='
arrayStart = '['
arrayEnd = ']'
arrayValTerm = ','
commentStart = '#'
stringStart = '"'
stringEnd = '"'
rawStringStart = '\''
rawStringEnd = '\''
)
type stateFn func(lx *lexer) stateFn
type lexer struct {
input string
start int
pos int
width int
line int
state stateFn
items chan item
// A stack of state functions used to maintain context.
// The idea is to reuse parts of the state machine in various places.
// For example, values can appear at the top level or within arbitrarily
// nested arrays. The last state on the stack is used after a value has
// been lexed. Similarly for comments.
stack []stateFn
}
type item struct {
typ itemType
val string
line int
}
func (lx *lexer) nextItem() item {
for {
select {
case item := <-lx.items:
return item
default:
lx.state = lx.state(lx)
}
}
}
func lex(input string) *lexer {
lx := &lexer{
input: input + "\n",
state: lexTop,
line: 1,
items: make(chan item, 10),
stack: make([]stateFn, 0, 10),
}
return lx
}
func (lx *lexer) push(state stateFn) {
lx.stack = append(lx.stack, state)
}
func (lx *lexer) pop() stateFn {
if len(lx.stack) == 0 {
return lx.errorf("BUG in lexer: no states to pop.")
}
last := lx.stack[len(lx.stack)-1]
lx.stack = lx.stack[0 : len(lx.stack)-1]
return last
}
func (lx *lexer) current() string {
return lx.input[lx.start:lx.pos]
}
func (lx *lexer) emit(typ itemType) {
lx.items <- item{typ, lx.current(), lx.line}
lx.start = lx.pos
}
func (lx *lexer) emitTrim(typ itemType) {
lx.items <- item{typ, strings.TrimSpace(lx.current()), lx.line}
lx.start = lx.pos
}
func (lx *lexer) next() (r rune) {
if lx.pos >= len(lx.input) {
lx.width = 0
return eof
}
if lx.input[lx.pos] == '\n' {
lx.line++
}
r, lx.width = utf8.DecodeRuneInString(lx.input[lx.pos:])
lx.pos += lx.width
return r
}
// ignore skips over the pending input before this point.
func (lx *lexer) ignore() {
lx.start = lx.pos
}
// backup steps back one rune. Can be called only once per call of next.
func (lx *lexer) backup() {
lx.pos -= lx.width
if lx.pos < len(lx.input) && lx.input[lx.pos] == '\n' {
lx.line--
}
}
// accept consumes the next rune if it's equal to `valid`.
func (lx *lexer) accept(valid rune) bool {
if lx.next() == valid {
return true
}
lx.backup()
return false
}
// peek returns but does not consume the next rune in the input.
func (lx *lexer) peek() rune {
r := lx.next()
lx.backup()
return r
}
// errorf stops all lexing by emitting an error and returning `nil`.
// Note that any value that is a character is escaped if it's a special
// character (new lines, tabs, etc.).
func (lx *lexer) errorf(format string, values ...interface{}) stateFn {
lx.items <- item{
itemError,
fmt.Sprintf(format, values...),
lx.line,
}
return nil
}
// lexTop consumes elements at the top level of TOML data.
func lexTop(lx *lexer) stateFn {
r := lx.next()
if isWhitespace(r) || isNL(r) {
return lexSkip(lx, lexTop)
}
switch r {
case commentStart:
lx.push(lexTop)
return lexCommentStart
case tableStart:
return lexTableStart
case eof:
if lx.pos > lx.start {
return lx.errorf("Unexpected EOF.")
}
lx.emit(itemEOF)
return nil
}
// At this point, the only valid item can be a key, so we back up
// and let the key lexer do the rest.
lx.backup()
lx.push(lexTopEnd)
return lexKeyStart
}
// lexTopEnd is entered whenever a top-level item has been consumed. (A value
// or a table.) It must see only whitespace, and will turn back to lexTop
// upon a new line. If it sees EOF, it will quit the lexer successfully.
func lexTopEnd(lx *lexer) stateFn {
r := lx.next()
switch {
case r == commentStart:
// a comment will read to a new line for us.
lx.push(lexTop)
return lexCommentStart
case isWhitespace(r):
return lexTopEnd
case isNL(r):
lx.ignore()
return lexTop
case r == eof:
lx.ignore()
return lexTop
}
return lx.errorf("Expected a top-level item to end with a new line, "+
"comment or EOF, but got %q instead.", r)
}
// lexTable lexes the beginning of a table. Namely, it makes sure that
// it starts with a character other than '.' and ']'.
// It assumes that '[' has already been consumed.
// It also handles the case that this is an item in an array of tables.
// e.g., '[[name]]'.
func lexTableStart(lx *lexer) stateFn {
if lx.peek() == arrayTableStart {
lx.next()
lx.emit(itemArrayTableStart)
lx.push(lexArrayTableEnd)
} else {
lx.emit(itemTableStart)
lx.push(lexTableEnd)
}
return lexTableNameStart
}
func lexTableEnd(lx *lexer) stateFn {
lx.emit(itemTableEnd)
return lexTopEnd
}
func lexArrayTableEnd(lx *lexer) stateFn {
if r := lx.next(); r != arrayTableEnd {
return lx.errorf("Expected end of table array name delimiter %q, "+
"but got %q instead.", arrayTableEnd, r)
}
lx.emit(itemArrayTableEnd)
return lexTopEnd
}
func lexTableNameStart(lx *lexer) stateFn {
switch r := lx.peek(); {
case r == tableEnd || r == eof:
return lx.errorf("Unexpected end of table name. (Table names cannot " +
"be empty.)")
case r == tableSep:
return lx.errorf("Unexpected table separator. (Table names cannot " +
"be empty.)")
case r == stringStart || r == rawStringStart:
lx.ignore()
lx.push(lexTableNameEnd)
return lexValue // reuse string lexing
case isWhitespace(r):
return lexTableNameStart
default:
return lexBareTableName
}
}
// lexTableName lexes the name of a table. It assumes that at least one
// valid character for the table has already been read.
func lexBareTableName(lx *lexer) stateFn {
switch r := lx.next(); {
case isBareKeyChar(r):
return lexBareTableName
case r == tableSep || r == tableEnd:
lx.backup()
lx.emitTrim(itemText)
return lexTableNameEnd
default:
return lx.errorf("Bare keys cannot contain %q.", r)
}
}
// lexTableNameEnd reads the end of a piece of a table name, optionally
// consuming whitespace.
func lexTableNameEnd(lx *lexer) stateFn {
switch r := lx.next(); {
case isWhitespace(r):
return lexTableNameEnd
case r == tableSep:
lx.ignore()
return lexTableNameStart
case r == tableEnd:
return lx.pop()
default:
return lx.errorf("Expected '.' or ']' to end table name, but got %q "+
"instead.", r)
}
}
// lexKeyStart consumes a key name up until the first non-whitespace character.
// lexKeyStart will ignore whitespace.
func lexKeyStart(lx *lexer) stateFn {
r := lx.peek()
switch {
case r == keySep:
return lx.errorf("Unexpected key separator %q.", keySep)
case isWhitespace(r) || isNL(r):
lx.next()
return lexSkip(lx, lexKeyStart)
case r == stringStart || r == rawStringStart:
lx.ignore()
lx.emit(itemKeyStart)
lx.push(lexKeyEnd)
return lexValue // reuse string lexing
default:
lx.ignore()
lx.emit(itemKeyStart)
return lexBareKey
}
}
// lexBareKey consumes the text of a bare key. Assumes that the first character
// (which is not whitespace) has not yet been consumed.
func lexBareKey(lx *lexer) stateFn {
switch r := lx.next(); {
case isBareKeyChar(r):
return lexBareKey
case isWhitespace(r):
lx.emitTrim(itemText)
return lexKeyEnd
case r == keySep:
lx.backup()
lx.emitTrim(itemText)
return lexKeyEnd
default:
return lx.errorf("Bare keys cannot contain %q.", r)
}
}
// lexKeyEnd consumes the end of a key and trims whitespace (up to the key
// separator).
func lexKeyEnd(lx *lexer) stateFn {
switch r := lx.next(); {
case r == keySep:
return lexSkip(lx, lexValue)
case isWhitespace(r):
return lexSkip(lx, lexKeyEnd)
default:
return lx.errorf("Expected key separator %q, but got %q instead.",
keySep, r)
}
}
// lexValue starts the consumption of a value anywhere a value is expected.
// lexValue will ignore whitespace.
// After a value is lexed, the last state on the next is popped and returned.
func lexValue(lx *lexer) stateFn {
// We allow whitespace to precede a value, but NOT new lines.
// In array syntax, the array states are responsible for ignoring new
// lines.
r := lx.next()
if isWhitespace(r) {
return lexSkip(lx, lexValue)
}
switch {
case r == arrayStart:
lx.ignore()
lx.emit(itemArray)
return lexArrayValue
case r == stringStart:
if lx.accept(stringStart) {
if lx.accept(stringStart) {
lx.ignore() // Ignore """
return lexMultilineString
}
lx.backup()
}
lx.ignore() // ignore the '"'
return lexString
case r == rawStringStart:
if lx.accept(rawStringStart) {
if lx.accept(rawStringStart) {
lx.ignore() // Ignore """
return lexMultilineRawString
}
lx.backup()
}
lx.ignore() // ignore the "'"
return lexRawString
case r == 't':
return lexTrue
case r == 'f':
return lexFalse
case r == '-':
return lexNumberStart
case isDigit(r):
lx.backup() // avoid an extra state and use the same as above
return lexNumberOrDateStart
case r == '.': // special error case, be kind to users
return lx.errorf("Floats must start with a digit, not '.'.")
}
return lx.errorf("Expected value but found %q instead.", r)
}
// lexArrayValue consumes one value in an array. It assumes that '[' or ','
// have already been consumed. All whitespace and new lines are ignored.
func lexArrayValue(lx *lexer) stateFn {
r := lx.next()
switch {
case isWhitespace(r) || isNL(r):
return lexSkip(lx, lexArrayValue)
case r == commentStart:
lx.push(lexArrayValue)
return lexCommentStart
case r == arrayValTerm:
return lx.errorf("Unexpected array value terminator %q.",
arrayValTerm)
case r == arrayEnd:
return lexArrayEnd
}
lx.backup()
lx.push(lexArrayValueEnd)
return lexValue
}
// lexArrayValueEnd consumes the cruft between values of an array. Namely,
// it ignores whitespace and expects either a ',' or a ']'.
func lexArrayValueEnd(lx *lexer) stateFn {
r := lx.next()
switch {
case isWhitespace(r) || isNL(r):
return lexSkip(lx, lexArrayValueEnd)
case r == commentStart:
lx.push(lexArrayValueEnd)
return lexCommentStart
case r == arrayValTerm:
lx.ignore()
return lexArrayValue // move on to the next value
case r == arrayEnd:
return lexArrayEnd
}
return lx.errorf("Expected an array value terminator %q or an array "+
"terminator %q, but got %q instead.", arrayValTerm, arrayEnd, r)
}
// lexArrayEnd finishes the lexing of an array. It assumes that a ']' has
// just been consumed.
func lexArrayEnd(lx *lexer) stateFn {
lx.ignore()
lx.emit(itemArrayEnd)
return lx.pop()
}
// lexString consumes the inner contents of a string. It assumes that the
// beginning '"' has already been consumed and ignored.
func lexString(lx *lexer) stateFn {
r := lx.next()
switch {
case isNL(r):
return lx.errorf("Strings cannot contain new lines.")
case r == '\\':
lx.push(lexString)
return lexStringEscape
case r == stringEnd:
lx.backup()
lx.emit(itemString)
lx.next()
lx.ignore()
return lx.pop()
}
return lexString
}
// lexMultilineString consumes the inner contents of a string. It assumes that
// the beginning '"""' has already been consumed and ignored.
func lexMultilineString(lx *lexer) stateFn {
r := lx.next()
switch {
case r == '\\':
return lexMultilineStringEscape
case r == stringEnd:
if lx.accept(stringEnd) {
if lx.accept(stringEnd) {
lx.backup()
lx.backup()
lx.backup()
lx.emit(itemMultilineString)
lx.next()
lx.next()
lx.next()
lx.ignore()
return lx.pop()
}
lx.backup()
}
}
return lexMultilineString
}
// lexRawString consumes a raw string. Nothing can be escaped in such a string.
// It assumes that the beginning "'" has already been consumed and ignored.
func lexRawString(lx *lexer) stateFn {
r := lx.next()
switch {
case isNL(r):
return lx.errorf("Strings cannot contain new lines.")
case r == rawStringEnd:
lx.backup()
lx.emit(itemRawString)
lx.next()
lx.ignore()
return lx.pop()
}
return lexRawString
}
// lexMultilineRawString consumes a raw string. Nothing can be escaped in such
// a string. It assumes that the beginning "'" has already been consumed and
// ignored.
func lexMultilineRawString(lx *lexer) stateFn {
r := lx.next()
switch {
case r == rawStringEnd:
if lx.accept(rawStringEnd) {
if lx.accept(rawStringEnd) {
lx.backup()
lx.backup()
lx.backup()
lx.emit(itemRawMultilineString)
lx.next()
lx.next()
lx.next()
lx.ignore()
return lx.pop()
}
lx.backup()
}
}
return lexMultilineRawString
}
// lexMultilineStringEscape consumes an escaped character. It assumes that the
// preceding '\\' has already been consumed.
func lexMultilineStringEscape(lx *lexer) stateFn {
// Handle the special case first:
if isNL(lx.next()) {
lx.next()
return lexMultilineString
} else {
lx.backup()
lx.push(lexMultilineString)
return lexStringEscape(lx)
}
}
func lexStringEscape(lx *lexer) stateFn {
r := lx.next()
switch r {
case 'b':
fallthrough
case 't':
fallthrough
case 'n':
fallthrough
case 'f':
fallthrough
case 'r':
fallthrough
case '"':
fallthrough
case '\\':
return lx.pop()
case 'u':
return lexShortUnicodeEscape
case 'U':
return lexLongUnicodeEscape
}
return lx.errorf("Invalid escape character %q. Only the following "+
"escape characters are allowed: "+
"\\b, \\t, \\n, \\f, \\r, \\\", \\/, \\\\, "+
"\\uXXXX and \\UXXXXXXXX.", r)
}
func lexShortUnicodeEscape(lx *lexer) stateFn {
var r rune
for i := 0; i < 4; i++ {
r = lx.next()
if !isHexadecimal(r) {
return lx.errorf("Expected four hexadecimal digits after '\\u', "+
"but got '%s' instead.", lx.current())
}
}
return lx.pop()
}
func lexLongUnicodeEscape(lx *lexer) stateFn {
var r rune
for i := 0; i < 8; i++ {
r = lx.next()
if !isHexadecimal(r) {
return lx.errorf("Expected eight hexadecimal digits after '\\U', "+
"but got '%s' instead.", lx.current())
}
}
return lx.pop()
}
// lexNumberOrDateStart consumes either a (positive) integer, float or
// datetime. It assumes that NO negative sign has been consumed.
func lexNumberOrDateStart(lx *lexer) stateFn {
r := lx.next()
if !isDigit(r) {
if r == '.' {
return lx.errorf("Floats must start with a digit, not '.'.")
} else {
return lx.errorf("Expected a digit but got %q.", r)
}
}
return lexNumberOrDate
}
// lexNumberOrDate consumes either a (positive) integer, float or datetime.
func lexNumberOrDate(lx *lexer) stateFn {
r := lx.next()
switch {
case r == '-':
if lx.pos-lx.start != 5 {
return lx.errorf("All ISO8601 dates must be in full Zulu form.")
}
return lexDateAfterYear
case isDigit(r):
return lexNumberOrDate
case r == '.':
return lexFloatStart
}
lx.backup()
lx.emit(itemInteger)
return lx.pop()
}
// lexDateAfterYear consumes a full Zulu Datetime in ISO8601 format.
// It assumes that "YYYY-" has already been consumed.
func lexDateAfterYear(lx *lexer) stateFn {
formats := []rune{
// digits are '0'.
// everything else is direct equality.
'0', '0', '-', '0', '0',
'T',
'0', '0', ':', '0', '0', ':', '0', '0',
'Z',
}
for _, f := range formats {
r := lx.next()
if f == '0' {
if !isDigit(r) {
return lx.errorf("Expected digit in ISO8601 datetime, "+
"but found %q instead.", r)
}
} else if f != r {
return lx.errorf("Expected %q in ISO8601 datetime, "+
"but found %q instead.", f, r)
}
}
lx.emit(itemDatetime)
return lx.pop()
}
// lexNumberStart consumes either an integer or a float. It assumes that
// a negative sign has already been read, but that *no* digits have been
// consumed. lexNumberStart will move to the appropriate integer or float
// states.
func lexNumberStart(lx *lexer) stateFn {
// we MUST see a digit. Even floats have to start with a digit.
r := lx.next()
if !isDigit(r) {
if r == '.' {
return lx.errorf("Floats must start with a digit, not '.'.")
} else {
return lx.errorf("Expected a digit but got %q.", r)
}
}
return lexNumber
}
// lexNumber consumes an integer or a float after seeing the first digit.
func lexNumber(lx *lexer) stateFn {
r := lx.next()
switch {
case isDigit(r):
return lexNumber
case r == '.':
return lexFloatStart
}
lx.backup()
lx.emit(itemInteger)
return lx.pop()
}
// lexFloatStart starts the consumption of digits of a float after a '.'.
// Namely, at least one digit is required.
func lexFloatStart(lx *lexer) stateFn {
r := lx.next()
if !isDigit(r) {
return lx.errorf("Floats must have a digit after the '.', but got "+
"%q instead.", r)
}
return lexFloat
}
// lexFloat consumes the digits of a float after a '.'.
// Assumes that one digit has been consumed after a '.' already.
func lexFloat(lx *lexer) stateFn {
r := lx.next()
if isDigit(r) {
return lexFloat
}
lx.backup()
lx.emit(itemFloat)
return lx.pop()
}
// lexConst consumes the s[1:] in s. It assumes that s[0] has already been
// consumed.
func lexConst(lx *lexer, s string) stateFn {
for i := range s[1:] {
if r := lx.next(); r != rune(s[i+1]) {
return lx.errorf("Expected %q, but found %q instead.", s[:i+1],
s[:i]+string(r))
}
}
return nil
}
// lexTrue consumes the "rue" in "true". It assumes that 't' has already
// been consumed.
func lexTrue(lx *lexer) stateFn {
if fn := lexConst(lx, "true"); fn != nil {
return fn
}
lx.emit(itemBool)
return lx.pop()
}
// lexFalse consumes the "alse" in "false". It assumes that 'f' has already
// been consumed.
func lexFalse(lx *lexer) stateFn {
if fn := lexConst(lx, "false"); fn != nil {
return fn
}
lx.emit(itemBool)
return lx.pop()
}
// lexCommentStart begins the lexing of a comment. It will emit
// itemCommentStart and consume no characters, passing control to lexComment.
func lexCommentStart(lx *lexer) stateFn {
lx.ignore()
lx.emit(itemCommentStart)
return lexComment
}
// lexComment lexes an entire comment. It assumes that '#' has been consumed.
// It will consume *up to* the first new line character, and pass control
// back to the last state on the stack.
func lexComment(lx *lexer) stateFn {
r := lx.peek()
if isNL(r) || r == eof {
lx.emit(itemText)
return lx.pop()
}
lx.next()
return lexComment
}
// lexSkip ignores all slurped input and moves on to the next state.
func lexSkip(lx *lexer, nextState stateFn) stateFn {
return func(lx *lexer) stateFn {
lx.ignore()
return nextState
}
}
// isWhitespace returns true if `r` is a whitespace character according
// to the spec.
func isWhitespace(r rune) bool {
return r == '\t' || r == ' '
}
func isNL(r rune) bool {
return r == '\n' || r == '\r'
}
func isDigit(r rune) bool {
return r >= '0' && r <= '9'
}
func isHexadecimal(r rune) bool {
return (r >= '0' && r <= '9') ||
(r >= 'a' && r <= 'f') ||
(r >= 'A' && r <= 'F')
}
func isBareKeyChar(r rune) bool {
return (r >= 'A' && r <= 'Z') ||
(r >= 'a' && r <= 'z') ||
(r >= '0' && r <= '9') ||
r == '_' ||
r == '-'
}
func (itype itemType) String() string {
switch itype {
case itemError:
return "Error"
case itemNIL:
return "NIL"
case itemEOF:
return "EOF"
case itemText:
return "Text"
case itemString:
return "String"
case itemRawString:
return "String"
case itemMultilineString:
return "String"
case itemRawMultilineString:
return "String"
case itemBool:
return "Bool"
case itemInteger:
return "Integer"
case itemFloat:
return "Float"
case itemDatetime:
return "DateTime"
case itemTableStart:
return "TableStart"
case itemTableEnd:
return "TableEnd"
case itemKeyStart:
return "KeyStart"
case itemArray:
return "Array"
case itemArrayEnd:
return "ArrayEnd"
case itemCommentStart:
return "CommentStart"
}
panic(fmt.Sprintf("BUG: Unknown type '%d'.", int(itype)))
}
func (item item) String() string {
return fmt.Sprintf("(%s, %s)", item.typ.String(), item.val)
}
-498
View File
@@ -1,498 +0,0 @@
package toml
import (
"fmt"
"log"
"strconv"
"strings"
"time"
"unicode"
"unicode/utf8"
)
type parser struct {
mapping map[string]interface{}
types map[string]tomlType
lx *lexer
// A list of keys in the order that they appear in the TOML data.
ordered []Key
// the full key for the current hash in scope
context Key
// the base key name for everything except hashes
currentKey string
// rough approximation of line number
approxLine int
// A map of 'key.group.names' to whether they were created implicitly.
implicits map[string]bool
}
type parseError string
func (pe parseError) Error() string {
return string(pe)
}
func parse(data string) (p *parser, err error) {
defer func() {
if r := recover(); r != nil {
var ok bool
if err, ok = r.(parseError); ok {
return
}
panic(r)
}
}()
p = &parser{
mapping: make(map[string]interface{}),
types: make(map[string]tomlType),
lx: lex(data),
ordered: make([]Key, 0),
implicits: make(map[string]bool),
}
for {
item := p.next()
if item.typ == itemEOF {
break
}
p.topLevel(item)
}
return p, nil
}
func (p *parser) panicf(format string, v ...interface{}) {
msg := fmt.Sprintf("Near line %d (last key parsed '%s'): %s",
p.approxLine, p.current(), fmt.Sprintf(format, v...))
panic(parseError(msg))
}
func (p *parser) next() item {
it := p.lx.nextItem()
if it.typ == itemError {
p.panicf("%s", it.val)
}
return it
}
func (p *parser) bug(format string, v ...interface{}) {
log.Fatalf("BUG: %s\n\n", fmt.Sprintf(format, v...))
}
func (p *parser) expect(typ itemType) item {
it := p.next()
p.assertEqual(typ, it.typ)
return it
}
func (p *parser) assertEqual(expected, got itemType) {
if expected != got {
p.bug("Expected '%s' but got '%s'.", expected, got)
}
}
func (p *parser) topLevel(item item) {
switch item.typ {
case itemCommentStart:
p.approxLine = item.line
p.expect(itemText)
case itemTableStart:
kg := p.next()
p.approxLine = kg.line
var key Key
for ; kg.typ != itemTableEnd && kg.typ != itemEOF; kg = p.next() {
key = append(key, p.keyString(kg))
}
p.assertEqual(itemTableEnd, kg.typ)
p.establishContext(key, false)
p.setType("", tomlHash)
p.ordered = append(p.ordered, key)
case itemArrayTableStart:
kg := p.next()
p.approxLine = kg.line
var key Key
for ; kg.typ != itemArrayTableEnd && kg.typ != itemEOF; kg = p.next() {
key = append(key, p.keyString(kg))
}
p.assertEqual(itemArrayTableEnd, kg.typ)
p.establishContext(key, true)
p.setType("", tomlArrayHash)
p.ordered = append(p.ordered, key)
case itemKeyStart:
kname := p.next()
p.approxLine = kname.line
p.currentKey = p.keyString(kname)
val, typ := p.value(p.next())
p.setValue(p.currentKey, val)
p.setType(p.currentKey, typ)
p.ordered = append(p.ordered, p.context.add(p.currentKey))
p.currentKey = ""
default:
p.bug("Unexpected type at top level: %s", item.typ)
}
}
// Gets a string for a key (or part of a key in a table name).
func (p *parser) keyString(it item) string {
switch it.typ {
case itemText:
return it.val
case itemString, itemMultilineString,
itemRawString, itemRawMultilineString:
s, _ := p.value(it)
return s.(string)
default:
p.bug("Unexpected key type: %s", it.typ)
panic("unreachable")
}
}
// value translates an expected value from the lexer into a Go value wrapped
// as an empty interface.
func (p *parser) value(it item) (interface{}, tomlType) {
switch it.typ {
case itemString:
return p.replaceEscapes(it.val), p.typeOfPrimitive(it)
case itemMultilineString:
trimmed := stripFirstNewline(stripEscapedWhitespace(it.val))
return p.replaceEscapes(trimmed), p.typeOfPrimitive(it)
case itemRawString:
return it.val, p.typeOfPrimitive(it)
case itemRawMultilineString:
return stripFirstNewline(it.val), p.typeOfPrimitive(it)
case itemBool:
switch it.val {
case "true":
return true, p.typeOfPrimitive(it)
case "false":
return false, p.typeOfPrimitive(it)
}
p.bug("Expected boolean value, but got '%s'.", it.val)
case itemInteger:
num, err := strconv.ParseInt(it.val, 10, 64)
if err != nil {
// See comment below for floats describing why we make a
// distinction between a bug and a user error.
if e, ok := err.(*strconv.NumError); ok &&
e.Err == strconv.ErrRange {
p.panicf("Integer '%s' is out of the range of 64-bit "+
"signed integers.", it.val)
} else {
p.bug("Expected integer value, but got '%s'.", it.val)
}
}
return num, p.typeOfPrimitive(it)
case itemFloat:
num, err := strconv.ParseFloat(it.val, 64)
if err != nil {
// Distinguish float values. Normally, it'd be a bug if the lexer
// provides an invalid float, but it's possible that the float is
// out of range of valid values (which the lexer cannot determine).
// So mark the former as a bug but the latter as a legitimate user
// error.
//
// This is also true for integers.
if e, ok := err.(*strconv.NumError); ok &&
e.Err == strconv.ErrRange {
p.panicf("Float '%s' is out of the range of 64-bit "+
"IEEE-754 floating-point numbers.", it.val)
} else {
p.bug("Expected float value, but got '%s'.", it.val)
}
}
return num, p.typeOfPrimitive(it)
case itemDatetime:
t, err := time.Parse("2006-01-02T15:04:05Z", it.val)
if err != nil {
p.bug("Expected Zulu formatted DateTime, but got '%s'.", it.val)
}
return t, p.typeOfPrimitive(it)
case itemArray:
array := make([]interface{}, 0)
types := make([]tomlType, 0)
for it = p.next(); it.typ != itemArrayEnd; it = p.next() {
if it.typ == itemCommentStart {
p.expect(itemText)
continue
}
val, typ := p.value(it)
array = append(array, val)
types = append(types, typ)
}
return array, p.typeOfArray(types)
}
p.bug("Unexpected value type: %s", it.typ)
panic("unreachable")
}
// establishContext sets the current context of the parser,
// where the context is either a hash or an array of hashes. Which one is
// set depends on the value of the `array` parameter.
//
// Establishing the context also makes sure that the key isn't a duplicate, and
// will create implicit hashes automatically.
func (p *parser) establishContext(key Key, array bool) {
var ok bool
// Always start at the top level and drill down for our context.
hashContext := p.mapping
keyContext := make(Key, 0)
// We only need implicit hashes for key[0:-1]
for _, k := range key[0 : len(key)-1] {
_, ok = hashContext[k]
keyContext = append(keyContext, k)
// No key? Make an implicit hash and move on.
if !ok {
p.addImplicit(keyContext)
hashContext[k] = make(map[string]interface{})
}
// If the hash context is actually an array of tables, then set
// the hash context to the last element in that array.
//
// Otherwise, it better be a table, since this MUST be a key group (by
// virtue of it not being the last element in a key).
switch t := hashContext[k].(type) {
case []map[string]interface{}:
hashContext = t[len(t)-1]
case map[string]interface{}:
hashContext = t
default:
p.panicf("Key '%s' was already created as a hash.", keyContext)
}
}
p.context = keyContext
if array {
// If this is the first element for this array, then allocate a new
// list of tables for it.
k := key[len(key)-1]
if _, ok := hashContext[k]; !ok {
hashContext[k] = make([]map[string]interface{}, 0, 5)
}
// Add a new table. But make sure the key hasn't already been used
// for something else.
if hash, ok := hashContext[k].([]map[string]interface{}); ok {
hashContext[k] = append(hash, make(map[string]interface{}))
} else {
p.panicf("Key '%s' was already created and cannot be used as "+
"an array.", keyContext)
}
} else {
p.setValue(key[len(key)-1], make(map[string]interface{}))
}
p.context = append(p.context, key[len(key)-1])
}
// setValue sets the given key to the given value in the current context.
// It will make sure that the key hasn't already been defined, account for
// implicit key groups.
func (p *parser) setValue(key string, value interface{}) {
var tmpHash interface{}
var ok bool
hash := p.mapping
keyContext := make(Key, 0)
for _, k := range p.context {
keyContext = append(keyContext, k)
if tmpHash, ok = hash[k]; !ok {
p.bug("Context for key '%s' has not been established.", keyContext)
}
switch t := tmpHash.(type) {
case []map[string]interface{}:
// The context is a table of hashes. Pick the most recent table
// defined as the current hash.
hash = t[len(t)-1]
case map[string]interface{}:
hash = t
default:
p.bug("Expected hash to have type 'map[string]interface{}', but "+
"it has '%T' instead.", tmpHash)
}
}
keyContext = append(keyContext, key)
if _, ok := hash[key]; ok {
// Typically, if the given key has already been set, then we have
// to raise an error since duplicate keys are disallowed. However,
// it's possible that a key was previously defined implicitly. In this
// case, it is allowed to be redefined concretely. (See the
// `tests/valid/implicit-and-explicit-after.toml` test in `toml-test`.)
//
// But we have to make sure to stop marking it as an implicit. (So that
// another redefinition provokes an error.)
//
// Note that since it has already been defined (as a hash), we don't
// want to overwrite it. So our business is done.
if p.isImplicit(keyContext) {
p.removeImplicit(keyContext)
return
}
// Otherwise, we have a concrete key trying to override a previous
// key, which is *always* wrong.
p.panicf("Key '%s' has already been defined.", keyContext)
}
hash[key] = value
}
// setType sets the type of a particular value at a given key.
// It should be called immediately AFTER setValue.
//
// Note that if `key` is empty, then the type given will be applied to the
// current context (which is either a table or an array of tables).
func (p *parser) setType(key string, typ tomlType) {
keyContext := make(Key, 0, len(p.context)+1)
for _, k := range p.context {
keyContext = append(keyContext, k)
}
if len(key) > 0 { // allow type setting for hashes
keyContext = append(keyContext, key)
}
p.types[keyContext.String()] = typ
}
// addImplicit sets the given Key as having been created implicitly.
func (p *parser) addImplicit(key Key) {
p.implicits[key.String()] = true
}
// removeImplicit stops tagging the given key as having been implicitly
// created.
func (p *parser) removeImplicit(key Key) {
p.implicits[key.String()] = false
}
// isImplicit returns true if the key group pointed to by the key was created
// implicitly.
func (p *parser) isImplicit(key Key) bool {
return p.implicits[key.String()]
}
// current returns the full key name of the current context.
func (p *parser) current() string {
if len(p.currentKey) == 0 {
return p.context.String()
}
if len(p.context) == 0 {
return p.currentKey
}
return fmt.Sprintf("%s.%s", p.context, p.currentKey)
}
func stripFirstNewline(s string) string {
if len(s) == 0 || s[0] != '\n' {
return s
}
return s[1:len(s)]
}
func stripEscapedWhitespace(s string) string {
esc := strings.Split(s, "\\\n")
if len(esc) > 1 {
for i := 1; i < len(esc); i++ {
esc[i] = strings.TrimLeftFunc(esc[i], unicode.IsSpace)
}
}
return strings.Join(esc, "")
}
func (p *parser) replaceEscapes(str string) string {
var replaced []rune
s := []byte(str)
r := 0
for r < len(s) {
if s[r] != '\\' {
c, size := utf8.DecodeRune(s[r:])
r += size
replaced = append(replaced, c)
continue
}
r += 1
if r >= len(s) {
p.bug("Escape sequence at end of string.")
return ""
}
switch s[r] {
default:
p.bug("Expected valid escape code after \\, but got %q.", s[r])
return ""
case 'b':
replaced = append(replaced, rune(0x0008))
r += 1
case 't':
replaced = append(replaced, rune(0x0009))
r += 1
case 'n':
replaced = append(replaced, rune(0x000A))
r += 1
case 'f':
replaced = append(replaced, rune(0x000C))
r += 1
case 'r':
replaced = append(replaced, rune(0x000D))
r += 1
case '"':
replaced = append(replaced, rune(0x0022))
r += 1
case '\\':
replaced = append(replaced, rune(0x005C))
r += 1
case 'u':
// At this point, we know we have a Unicode escape of the form
// `uXXXX` at [r, r+5). (Because the lexer guarantees this
// for us.)
escaped := p.asciiEscapeToUnicode(s[r+1 : r+5])
replaced = append(replaced, escaped)
r += 5
case 'U':
// At this point, we know we have a Unicode escape of the form
// `uXXXX` at [r, r+9). (Because the lexer guarantees this
// for us.)
escaped := p.asciiEscapeToUnicode(s[r+1 : r+9])
replaced = append(replaced, escaped)
r += 9
}
}
return string(replaced)
}
func (p *parser) asciiEscapeToUnicode(bs []byte) rune {
s := string(bs)
hex, err := strconv.ParseUint(strings.ToLower(s), 16, 32)
if err != nil {
p.bug("Could not parse '%s' as a hexadecimal number, but the "+
"lexer claims it's OK: %s", s, err)
}
// BUG(burntsushi)
// I honestly don't understand how this works. I can't seem
// to find a way to make this fail. I figured this would fail on invalid
// UTF-8 characters like U+DCFF, but it doesn't.
if !utf8.ValidString(string(rune(hex))) {
p.panicf("Escaped character '\\u%s' is not valid UTF-8.", s)
}
return rune(hex)
}
func isStringType(ty itemType) bool {
return ty == itemString || ty == itemMultilineString ||
ty == itemRawString || ty == itemRawMultilineString
}
-1
View File
@@ -1 +0,0 @@
au BufWritePost *.go silent!make tags > /dev/null 2>&1
-24
View File
@@ -1,24 +0,0 @@
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
.idea
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
*.iml
-24
View File
@@ -1,24 +0,0 @@
Common functions
===
[![Build Status](https://drone.io/github.com/Unknwon/com/status.png)](https://drone.io/github.com/Unknwon/com/latest) [![Go Walker](http://gowalker.org/api/v1/badge)](http://gowalker.org/github.com/Unknwon/com)
This is an open source project for commonly used functions for the Go programming language.
This package need >= **go 1.2**
Code Convention: based on [Go Code Convention](https://github.com/Unknwon/go-code-convention).
## Contribute
Your contribute is welcome, but you have to check following steps after you added some functions and commit them:
1. Make sure you wrote user-friendly comments for **all functions** .
2. Make sure you wrote test cases with any possible condition for **all functions** in file `*_test.go`.
3. Make sure you wrote benchmarks for **all functions** in file `*_test.go`.
4. Make sure you wrote useful examples for **all functions** in file `example_test.go`.
5. Make sure you ran `go test -bench="."` and got **PASS** .
## Performance
See results on [drone.io](https://drone.io/github.com/Unknwon/com/latest) by `go test -bench="."`.
-140
View File
@@ -1,140 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"fmt"
"runtime"
"strings"
"testing"
)
func TestColorLogS(t *testing.T) {
if runtime.GOOS != "windows" {
// Trace + path.
cls := ColorLogS("[TRAC] Trace level test with path( %s )", "/path/to/somethere")
clsR := fmt.Sprintf(
"[\033[%dmTRAC%s] Trace level test with path(\033[%dm%s%s)",
Blue, EndColor, Yellow, "/path/to/somethere", EndColor)
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Error + error.
cls = ColorLogS("[ERRO] Error level test with error[ %s ]", "test error")
clsR = fmt.Sprintf(
"[\033[%dmERRO%s] Error level test with error[\033[%dm%s%s]",
Red, EndColor, Red, "test error", EndColor)
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Warning + highlight.
cls = ColorLogS("[WARN] Warnning level test with highlight # %s #", "special offer!")
clsR = fmt.Sprintf(
"[\033[%dmWARN%s] Warnning level test with highlight \033[%dm%s%s",
Magenta, EndColor, Gray, "special offer!", EndColor)
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Success.
cls = ColorLogS("[SUCC] Success level test")
clsR = fmt.Sprintf(
"[\033[%dmSUCC%s] Success level test",
Green, EndColor)
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Default.
cls = ColorLogS("[INFO] Default level test")
clsR = fmt.Sprintf(
"[INFO] Default level test")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
} else {
// Trace + path.
cls := ColorLogS("[TRAC] Trace level test with path( %s )", "/path/to/somethere")
clsR := fmt.Sprintf(
"[TRAC] Trace level test with path(%s)",
"/path/to/somethere")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Error + error.
cls = ColorLogS("[ERRO] Error level test with error[ %s ]", "test error")
clsR = fmt.Sprintf(
"[ERRO] Error level test with error[%s]",
"test error")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Warning + highlight.
cls = ColorLogS("[WARN] Warnning level test with highlight # %s #", "special offer!")
clsR = fmt.Sprintf(
"[WARN] Warnning level test with highlight %s",
"special offer!")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Success.
cls = ColorLogS("[SUCC] Success level test")
clsR = fmt.Sprintf(
"[SUCC] Success level test")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
// Default.
cls = ColorLogS("[INFO] Default level test")
clsR = fmt.Sprintf(
"[INFO] Default level test")
if cls != clsR {
t.Errorf("ColorLogS:\n Expect => %s\n Got => %s\n", clsR, cls)
}
}
}
func TestExecCmd(t *testing.T) {
stdout, stderr, err := ExecCmd("go", "help", "get")
if err != nil {
t.Errorf("ExecCmd:\n Expect => %v\n Got => %v\n", nil, err)
} else if len(stderr) != 0 {
t.Errorf("ExecCmd:\n Expect => %s\n Got => %s\n", "", stderr)
} else if !strings.HasPrefix(stdout, "usage: go get") {
t.Errorf("ExecCmd:\n Expect => %s\n Got => %s\n", "usage: go get", stdout)
}
}
func BenchmarkColorLogS(b *testing.B) {
log := fmt.Sprintf(
"[WARN] This is a tesing log that should be colored, path( %s ),"+
" highlight # %s #, error [ %s ].",
"path to somewhere", "highlighted content", "tesing error")
for i := 0; i < b.N; i++ {
ColorLogS(log)
}
}
func BenchmarkExecCmd(b *testing.B) {
for i := 0; i < b.N; i++ {
ExecCmd("go", "help", "get")
}
}
-157
View File
@@ -1,157 +0,0 @@
// Copyright 2014 com authors
//
// 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.
package com
import (
"fmt"
"strconv"
)
// Convert string to specify type.
type StrTo string
func (f StrTo) Exist() bool {
return string(f) != string(0x1E)
}
func (f StrTo) Uint8() (uint8, error) {
v, err := strconv.ParseUint(f.String(), 10, 8)
return uint8(v), err
}
func (f StrTo) Int() (int, error) {
v, err := strconv.ParseInt(f.String(), 10, 32)
return int(v), err
}
func (f StrTo) Int64() (int64, error) {
v, err := strconv.ParseInt(f.String(), 10, 64)
return int64(v), err
}
func (f StrTo) MustUint8() uint8 {
v, _ := f.Uint8()
return v
}
func (f StrTo) MustInt() int {
v, _ := f.Int()
return v
}
func (f StrTo) MustInt64() int64 {
v, _ := f.Int64()
return v
}
func (f StrTo) String() string {
if f.Exist() {
return string(f)
}
return ""
}
// Convert any type to string.
func ToStr(value interface{}, args ...int) (s string) {
switch v := value.(type) {
case bool:
s = strconv.FormatBool(v)
case float32:
s = strconv.FormatFloat(float64(v), 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 32))
case float64:
s = strconv.FormatFloat(v, 'f', argInt(args).Get(0, -1), argInt(args).Get(1, 64))
case int:
s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
case int8:
s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
case int16:
s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
case int32:
s = strconv.FormatInt(int64(v), argInt(args).Get(0, 10))
case int64:
s = strconv.FormatInt(v, argInt(args).Get(0, 10))
case uint:
s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
case uint8:
s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
case uint16:
s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
case uint32:
s = strconv.FormatUint(uint64(v), argInt(args).Get(0, 10))
case uint64:
s = strconv.FormatUint(v, argInt(args).Get(0, 10))
case string:
s = v
case []byte:
s = string(v)
default:
s = fmt.Sprintf("%v", v)
}
return s
}
type argInt []int
func (a argInt) Get(i int, args ...int) (r int) {
if i >= 0 && i < len(a) {
r = a[i]
} else if len(args) > 0 {
r = args[0]
}
return
}
// HexStr2int converts hex format string to decimal number.
func HexStr2int(hexStr string) (int, error) {
num := 0
length := len(hexStr)
for i := 0; i < length; i++ {
char := hexStr[length-i-1]
factor := -1
switch {
case char >= '0' && char <= '9':
factor = int(char) - '0'
case char >= 'a' && char <= 'f':
factor = int(char) - 'a' + 10
default:
return -1, fmt.Errorf("invalid hex: %s", string(char))
}
num += factor * PowInt(16, i)
}
return num, nil
}
// Int2HexStr converts decimal number to hex format string.
func Int2HexStr(num int) (hex string) {
if num == 0 {
return "0"
}
for num > 0 {
r := num % 16
c := "?"
if r >= 0 && r <= 9 {
c = string(r + '0')
} else {
c = string(r + 'a' - 10)
}
hex = c + hex
num = num / 16
}
return hex
}
-56
View File
@@ -1,56 +0,0 @@
// Copyright 2014 com authors
//
// 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.
package com
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestHexStr2int(t *testing.T) {
Convey("Convert hex format string to decimal", t, func() {
hexDecs := map[string]int{
"1": 1,
"002": 2,
"011": 17,
"0a1": 161,
"35e": 862,
}
for hex, dec := range hexDecs {
val, err := HexStr2int(hex)
So(err, ShouldBeNil)
So(val, ShouldEqual, dec)
}
})
}
func TestInt2HexStr(t *testing.T) {
Convey("Convert decimal to hex format string", t, func() {
decHexs := map[int]string{
1: "1",
2: "2",
17: "11",
161: "a1",
862: "35e",
}
for dec, hex := range decHexs {
val := Int2HexStr(dec)
So(val, ShouldEqual, hex)
}
})
}
-58
View File
@@ -1,58 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"os"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestIsDir(t *testing.T) {
Convey("Check if given path is a directory", t, func() {
Convey("Pass a file name", func() {
So(IsDir("file.go"), ShouldEqual, false)
})
Convey("Pass a directory name", func() {
So(IsDir("testdata"), ShouldEqual, true)
})
Convey("Pass a invalid path", func() {
So(IsDir("foo"), ShouldEqual, false)
})
})
}
func TestCopyDir(t *testing.T) {
Convey("Items of two slices should be same", t, func() {
s1, err := StatDir("testdata", true)
So(err, ShouldEqual, nil)
err = CopyDir("testdata", "testdata2")
So(err, ShouldEqual, nil)
s2, err := StatDir("testdata2", true)
os.RemoveAll("testdata2")
So(err, ShouldEqual, nil)
So(CompareSliceStr(s1, s2), ShouldEqual, true)
})
}
func BenchmarkIsDir(b *testing.B) {
for i := 0; i < b.N; i++ {
IsDir("file.go")
}
}
-299
View File
@@ -1,299 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com_test
import (
"fmt"
"io/ioutil"
"net/http"
"github.com/Unknwon/com"
)
// ------------------------------
// cmd.go
// ------------------------------
func ExampleColorLogS() {
coloredLog := com.ColorLogS(fmt.Sprintf(
"[WARN] This is a tesing log that should be colored, path( %s ),"+
" highlight # %s #, error [ %s ].",
"path to somewhere", "highlighted content", "tesing error"))
fmt.Println(coloredLog)
}
func ExampleColorLog() {
com.ColorLog(fmt.Sprintf(
"[WARN] This is a tesing log that should be colored, path( %s ),"+
" highlight # %s #, error [ %s ].",
"path to somewhere", "highlighted content", "tesing error"))
}
func ExampleExecCmd() {
stdout, stderr, err := com.ExecCmd("go", "help", "get")
fmt.Println(stdout, stderr, err)
}
// ------------- END ------------
// ------------------------------
// html.go
// ------------------------------
func ExampleHtml2JS() {
htm := "<div id=\"button\" class=\"btn\">Click me</div>\n\r"
js := string(com.Html2JS([]byte(htm)))
fmt.Println(js)
// Output: <div id=\"button\" class=\"btn\">Click me</div>\n
}
// ------------- END ------------
// ------------------------------
// path.go
// ------------------------------
func ExampleGetGOPATHs() {
gps := com.GetGOPATHs()
fmt.Println(gps)
}
func ExampleGetSrcPath() {
srcPath, err := com.GetSrcPath("github.com/Unknwon/com")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(srcPath)
}
func ExampleHomeDir() {
hd, err := com.HomeDir()
fmt.Println(hd, err)
}
// ------------- END ------------
// ------------------------------
// file.go
// ------------------------------
func ExampleIsFile() {
if com.IsFile("file.go") {
fmt.Println("file.go exists")
return
}
fmt.Println("file.go is not a file or does not exist")
}
func ExampleIsExist() {
if com.IsExist("file.go") {
fmt.Println("file.go exists")
return
}
fmt.Println("file.go does not exist")
}
// ------------- END ------------
// ------------------------------
// dir.go
// ------------------------------
func ExampleIsDir() {
if com.IsDir("files") {
fmt.Println("directory 'files' exists")
return
}
fmt.Println("'files' is not a directory or does not exist")
}
// ------------- END ------------
// ------------------------------
// string.go
// ------------------------------
func ExampleIsLetter() {
fmt.Println(com.IsLetter('1'))
fmt.Println(com.IsLetter('['))
fmt.Println(com.IsLetter('a'))
fmt.Println(com.IsLetter('Z'))
// Output:
// false
// false
// true
// true
}
func ExampleExpand() {
match := map[string]string{
"domain": "gowalker.org",
"subdomain": "github.com",
}
s := "http://{domain}/{subdomain}/{0}/{1}"
fmt.Println(com.Expand(s, match, "Unknwon", "gowalker"))
// Output: http://gowalker.org/github.com/Unknwon/gowalker
}
// ------------- END ------------
// ------------------------------
// http.go
// ------------------------------
func ExampleHttpGet() ([]byte, error) {
rc, err := com.HttpGet(&http.Client{}, "http://gowalker.org", nil)
if err != nil {
return nil, err
}
p, err := ioutil.ReadAll(rc)
rc.Close()
return p, err
}
func ExampleHttpGetBytes() ([]byte, error) {
p, err := com.HttpGetBytes(&http.Client{}, "http://gowalker.org", nil)
return p, err
}
func ExampleHttpGetJSON() interface{} {
j := com.HttpGetJSON(&http.Client{}, "http://gowalker.org", nil)
return j
}
type rawFile struct {
name string
rawURL string
data []byte
}
func (rf *rawFile) Name() string {
return rf.name
}
func (rf *rawFile) RawUrl() string {
return rf.rawURL
}
func (rf *rawFile) Data() []byte {
return rf.data
}
func (rf *rawFile) SetData(p []byte) {
rf.data = p
}
func ExampleFetchFiles() {
// Code that should be outside of your function body.
// type rawFile struct {
// name string
// rawURL string
// data []byte
// }
// func (rf *rawFile) Name() string {
// return rf.name
// }
// func (rf *rawFile) RawUrl() string {
// return rf.rawURL
// }
// func (rf *rawFile) Data() []byte {
// return rf.data
// }
// func (rf *rawFile) SetData(p []byte) {
// rf.data = p
// }
files := []com.RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com/foo"},
}
err := com.FetchFiles(&http.Client{}, files, nil)
fmt.Println(err, len(files[0].Data()), len(files[1].Data()))
}
func ExampleFetchFilesCurl() {
// Code that should be outside of your function body.
// type rawFile struct {
// name string
// rawURL string
// data []byte
// }
// func (rf *rawFile) Name() string {
// return rf.name
// }
// func (rf *rawFile) RawUrl() string {
// return rf.rawURL
// }
// func (rf *rawFile) Data() []byte {
// return rf.data
// }
// func (rf *rawFile) SetData(p []byte) {
// rf.data = p
// }
files := []com.RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com/foo"},
}
err := com.FetchFilesCurl(files)
fmt.Println(err, len(files[0].Data()), len(files[1].Data()))
}
// ------------- END ------------
// ------------------------------
// regex.go
// ------------------------------
func ExampleIsEmail() {
fmt.Println(com.IsEmail("test@example.com"))
fmt.Println(com.IsEmail("@example.com"))
// Output:
// true
// false
}
func ExampleIsUrl() {
fmt.Println(com.IsUrl("http://example.com"))
fmt.Println(com.IsUrl("http//example.com"))
// Output:
// true
// false
}
// ------------- END ------------
// ------------------------------
// slice.go
// ------------------------------
func ExampleAppendStr() {
s := []string{"a"}
s = com.AppendStr(s, "a")
s = com.AppendStr(s, "b")
fmt.Println(s)
// Output: [a b]
}
// ------------- END ------------
-61
View File
@@ -1,61 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestIsFile(t *testing.T) {
if !IsFile("file.go") {
t.Errorf("IsExist:\n Expect => %v\n Got => %v\n", true, false)
}
if IsFile("testdata") {
t.Errorf("IsExist:\n Expect => %v\n Got => %v\n", false, true)
}
if IsFile("files.go") {
t.Errorf("IsExist:\n Expect => %v\n Got => %v\n", false, true)
}
}
func TestIsExist(t *testing.T) {
Convey("Check if file or directory exists", t, func() {
Convey("Pass a file name that exists", func() {
So(IsExist("file.go"), ShouldEqual, true)
})
Convey("Pass a directory name that exists", func() {
So(IsExist("testdata"), ShouldEqual, true)
})
Convey("Pass a directory name that does not exist", func() {
So(IsExist(".hg"), ShouldEqual, false)
})
})
}
func BenchmarkIsFile(b *testing.B) {
for i := 0; i < b.N; i++ {
IsFile("file.go")
}
}
func BenchmarkIsExist(b *testing.B) {
for i := 0; i < b.N; i++ {
IsExist("file.go")
}
}
-35
View File
@@ -1,35 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"testing"
)
func TestHtml2JS(t *testing.T) {
htm := "<div id=\"button\" class=\"btn\">Click me</div>\n\r"
js := string(Html2JS([]byte(htm)))
jsR := `<div id=\"button\" class=\"btn\">Click me</div>\n`
if js != jsR {
t.Errorf("Html2JS:\n Expect => %s\n Got => %s\n", jsR, js)
}
}
func BenchmarkHtml2JS(b *testing.B) {
htm := "<div id=\"button\" class=\"btn\">Click me</div>\n\r"
for i := 0; i < b.N; i++ {
Html2JS([]byte(htm))
}
}
-111
View File
@@ -1,111 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"io/ioutil"
"net/http"
"strings"
"testing"
)
var examplePrefix = `<!doctype html>
<html>
<head>
<title>Example Domain</title>
`
func TestHttpGet(t *testing.T) {
// 200.
rc, err := HttpGet(&http.Client{}, "http://example.com", nil)
if err != nil {
t.Fatalf("HttpGet:\n Expect => %v\n Got => %s\n", nil, err)
}
p, err := ioutil.ReadAll(rc)
if err != nil {
t.Errorf("HttpGet:\n Expect => %v\n Got => %s\n", nil, err)
}
s := string(p)
if !strings.HasPrefix(s, examplePrefix) {
t.Errorf("HttpGet:\n Expect => %s\n Got => %s\n", examplePrefix, s)
}
}
func TestHttpGetBytes(t *testing.T) {
p, err := HttpGetBytes(&http.Client{}, "http://example.com", nil)
if err != nil {
t.Errorf("HttpGetBytes:\n Expect => %v\n Got => %s\n", nil, err)
}
s := string(p)
if !strings.HasPrefix(s, examplePrefix) {
t.Errorf("HttpGet:\n Expect => %s\n Got => %s\n", examplePrefix, s)
}
}
func TestHttpGetJSON(t *testing.T) {
}
type rawFile struct {
name string
rawURL string
data []byte
}
func (rf *rawFile) Name() string {
return rf.name
}
func (rf *rawFile) RawUrl() string {
return rf.rawURL
}
func (rf *rawFile) Data() []byte {
return rf.data
}
func (rf *rawFile) SetData(p []byte) {
rf.data = p
}
func TestFetchFiles(t *testing.T) {
files := []RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com"},
}
err := FetchFiles(&http.Client{}, files, nil)
if err != nil {
t.Errorf("FetchFiles:\n Expect => %v\n Got => %s\n", nil, err)
} else if len(files[0].Data()) != 1270 {
t.Errorf("FetchFiles:\n Expect => %d\n Got => %d\n", 1270, len(files[0].Data()))
} else if len(files[1].Data()) != 1270 {
t.Errorf("FetchFiles:\n Expect => %d\n Got => %d\n", 1270, len(files[1].Data()))
}
}
func TestFetchFilesCurl(t *testing.T) {
files := []RawFile{
&rawFile{rawURL: "http://example.com"},
&rawFile{rawURL: "http://example.com"},
}
err := FetchFilesCurl(files)
if err != nil {
t.Errorf("FetchFilesCurl:\n Expect => %v\n Got => %s\n", nil, err)
} else if len(files[0].Data()) != 1270 {
t.Errorf("FetchFilesCurl:\n Expect => %d\n Got => %d\n", 1270, len(files[0].Data()))
} else if len(files[1].Data()) != 1270 {
t.Errorf("FetchFilesCurl:\n Expect => %d\n Got => %d\n", 1270, len(files[1].Data()))
}
}
-67
View File
@@ -1,67 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"os"
"runtime"
"testing"
)
func TestGetGOPATHs(t *testing.T) {
var gpsR []string
if runtime.GOOS != "windows" {
gpsR = []string{"path/to/gopath1", "path/to/gopath2", "path/to/gopath3"}
os.Setenv("GOPATH", "path/to/gopath1:path/to/gopath2:path/to/gopath3")
} else {
gpsR = []string{"path/to/gopath1", "path/to/gopath2", "path/to/gopath3"}
os.Setenv("GOPATH", "path\\to\\gopath1;path\\to\\gopath2;path\\to\\gopath3")
}
gps := GetGOPATHs()
if !CompareSliceStr(gps, gpsR) {
t.Errorf("GetGOPATHs:\n Expect => %s\n Got => %s\n", gpsR, gps)
}
}
func TestGetSrcPath(t *testing.T) {
}
func TestHomeDir(t *testing.T) {
_, err := HomeDir()
if err != nil {
t.Errorf("HomeDir:\n Expect => %v\n Got => %s\n", nil, err)
}
}
func BenchmarkGetGOPATHs(b *testing.B) {
for i := 0; i < b.N; i++ {
GetGOPATHs()
}
}
func BenchmarkGetSrcPath(b *testing.B) {
for i := 0; i < b.N; i++ {
GetSrcPath("github.com/Unknwon/com")
}
}
func BenchmarkHomeDir(b *testing.B) {
for i := 0; i < b.N; i++ {
HomeDir()
}
}
-70
View File
@@ -1,70 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"testing"
)
func TestIsEmail(t *testing.T) {
emails := map[string]bool{
`test@example.com`: true,
`single-character@b.org`: true,
`uncommon_address@test.museum`: true,
`local@sld.UPPER`: true,
`@missing.org`: false,
`missing@.com`: false,
`missing@qq.`: false,
`wrong-ip@127.1.1.1.26`: false,
}
for e, r := range emails {
b := IsEmail(e)
if b != r {
t.Errorf("IsEmail:\n Expect => %v\n Got => %v\n", r, b)
}
}
}
func TestIsUrl(t *testing.T) {
urls := map[string]bool{
"http://www.example.com": true,
"http://example.com": true,
"http://example.com?user=test&password=test": true,
"http://example.com?user=test#login": true,
"ftp://example.com": true,
"https://example.com": true,
"htp://example.com": false,
"http//example.com": false,
"http://example": true,
}
for u, r := range urls {
b := IsUrl(u)
if b != r {
t.Errorf("IsUrl:\n Expect => %v\n Got => %v\n", r, b)
}
}
}
func BenchmarkIsEmail(b *testing.B) {
for i := 0; i < b.N; i++ {
IsEmail("test@example.com")
}
}
func BenchmarkIsUrl(b *testing.B) {
for i := 0; i < b.N; i++ {
IsEmail("http://example.com")
}
}
-99
View File
@@ -1,99 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"fmt"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestAppendStr(t *testing.T) {
Convey("Append a string to a slice with no duplicates", t, func() {
s := []string{"a"}
Convey("Append a string that does not exist in slice", func() {
s = AppendStr(s, "b")
So(len(s), ShouldEqual, 2)
})
Convey("Append a string that does exist in slice", func() {
s = AppendStr(s, "b")
So(len(s), ShouldEqual, 2)
})
})
}
func TestCompareSliceStr(t *testing.T) {
Convey("Compares two 'string' type slices with elements and order", t, func() {
Convey("Compare two slices that do have same elements and order", func() {
So(CompareSliceStr(
[]string{"1", "2", "3"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
Convey("Compare two slices that do have same elements but does not have same order", func() {
So(!CompareSliceStr(
[]string{"2", "1", "3"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
Convey("Compare two slices that have different number of elements", func() {
So(!CompareSliceStr(
[]string{"2", "1"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
})
}
func TestCompareSliceStrU(t *testing.T) {
Convey("Compare two 'string' type slices with elements and ignore the order", t, func() {
Convey("Compare two slices that do have same elements and order", func() {
So(CompareSliceStrU(
[]string{"1", "2", "3"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
Convey("Compare two slices that do have same elements but does not have same order", func() {
So(CompareSliceStrU(
[]string{"2", "1", "3"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
Convey("Compare two slices that have different number of elements", func() {
So(!CompareSliceStrU(
[]string{"2", "1"}, []string{"1", "2", "3"}), ShouldBeTrue)
})
})
}
func BenchmarkAppendStr(b *testing.B) {
s := []string{"a"}
for i := 0; i < b.N; i++ {
s = AppendStr(s, fmt.Sprint(b.N%3))
}
}
func BenchmarkCompareSliceStr(b *testing.B) {
s1 := []string{"1", "2", "3"}
s2 := []string{"1", "2", "3"}
for i := 0; i < b.N; i++ {
CompareSliceStr(s1, s2)
}
}
func BenchmarkCompareSliceStrU(b *testing.B) {
s1 := []string{"1", "4", "2", "3"}
s2 := []string{"1", "2", "3", "4"}
for i := 0; i < b.N; i++ {
CompareSliceStrU(s1, s2)
}
}
-140
View File
@@ -1,140 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/base64"
"errors"
"io"
r "math/rand"
"strconv"
"strings"
"time"
)
// AESEncrypt encrypts text and given key with AES.
func AESEncrypt(key, text []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
b := base64.StdEncoding.EncodeToString(text)
ciphertext := make([]byte, aes.BlockSize+len(b))
iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return nil, err
}
cfb := cipher.NewCFBEncrypter(block, iv)
cfb.XORKeyStream(ciphertext[aes.BlockSize:], []byte(b))
return ciphertext, nil
}
// AESDecrypt decrypts text and given key with AES.
func AESDecrypt(key, text []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
if len(text) < aes.BlockSize {
return nil, errors.New("ciphertext too short")
}
iv := text[:aes.BlockSize]
text = text[aes.BlockSize:]
cfb := cipher.NewCFBDecrypter(block, iv)
cfb.XORKeyStream(text, text)
data, err := base64.StdEncoding.DecodeString(string(text))
if err != nil {
return nil, err
}
return data, nil
}
// IsLetter returns true if the 'l' is an English letter.
func IsLetter(l uint8) bool {
n := (l | 0x20) - 'a'
if n >= 0 && n < 26 {
return true
}
return false
}
// Expand replaces {k} in template with match[k] or subs[atoi(k)] if k is not in match.
func Expand(template string, match map[string]string, subs ...string) string {
var p []byte
var i int
for {
i = strings.Index(template, "{")
if i < 0 {
break
}
p = append(p, template[:i]...)
template = template[i+1:]
i = strings.Index(template, "}")
if s, ok := match[template[:i]]; ok {
p = append(p, s...)
} else {
j, _ := strconv.Atoi(template[:i])
if j >= len(subs) {
p = append(p, []byte("Missing")...)
} else {
p = append(p, subs[j]...)
}
}
template = template[i+1:]
}
p = append(p, template...)
return string(p)
}
// Reverse s string, support unicode
func Reverse(s string) string {
n := len(s)
runes := make([]rune, n)
for _, rune := range s {
n--
runes[n] = rune
}
return string(runes[n:])
}
// RandomCreateBytes generate random []byte by specify chars.
func RandomCreateBytes(n int, alphabets ...byte) []byte {
const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
var bytes = make([]byte, n)
var randby bool
if num, err := rand.Read(bytes); num != n || err != nil {
r.Seed(time.Now().UnixNano())
randby = true
}
for i, b := range bytes {
if len(alphabets) == 0 {
if randby {
bytes[i] = alphanum[r.Intn(len(alphanum))]
} else {
bytes[i] = alphanum[b%byte(len(alphanum))]
}
} else {
if randby {
bytes[i] = alphabets[r.Intn(len(alphabets))]
} else {
bytes[i] = alphabets[b%byte(len(alphabets))]
}
}
}
return bytes
}
-82
View File
@@ -1,82 +0,0 @@
// Copyright 2013 com authors
//
// 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.
package com
import (
"testing"
)
func TestIsLetter(t *testing.T) {
if IsLetter('1') {
t.Errorf("IsLetter:\n Expect => %v\n Got => %v\n", false, true)
}
if IsLetter('[') {
t.Errorf("IsLetter:\n Expect => %v\n Got => %v\n", false, true)
}
if !IsLetter('a') {
t.Errorf("IsLetter:\n Expect => %v\n Got => %v\n", true, false)
}
if !IsLetter('Z') {
t.Errorf("IsLetter:\n Expect => %v\n Got => %v\n", true, false)
}
}
func TestExpand(t *testing.T) {
match := map[string]string{
"domain": "gowalker.org",
"subdomain": "github.com",
}
s := "http://{domain}/{subdomain}/{0}/{1}"
sR := "http://gowalker.org/github.com/Unknwon/gowalker"
if Expand(s, match, "Unknwon", "gowalker") != sR {
t.Errorf("Expand:\n Expect => %s\n Got => %s\n", sR, s)
}
}
func TestReverse(t *testing.T) {
if Reverse("abcdefg") != "gfedcba" {
t.Errorf("Reverse:\n Except => %s\n Got =>%s\n", "gfedcba", Reverse("abcdefg"))
}
if Reverse("上善若水厚德载物") != "物载德厚水若善上" {
t.Errorf("Reverse:\n Except => %s\n Got =>%s\n", "物载德厚水若善上", Reverse("上善若水厚德载物"))
}
}
func BenchmarkIsLetter(b *testing.B) {
for i := 0; i < b.N; i++ {
IsLetter('a')
}
}
func BenchmarkExpand(b *testing.B) {
match := map[string]string{
"domain": "gowalker.org",
"subdomain": "github.com",
}
s := "http://{domain}/{subdomain}/{0}/{1}"
for i := 0; i < b.N; i++ {
Expand(s, match, "Unknwon", "gowalker")
}
}
func BenchmarkReverse(b *testing.B) {
s := "abscef中文"
for i := 0; i < b.N; i++ {
Reverse(s)
}
}
-1
View File
@@ -1 +0,0 @@
TestSaveFile
-1
View File
@@ -1 +0,0 @@
TestSaveFileS
@@ -1 +0,0 @@
TestSaveFile
@@ -1 +0,0 @@
TestSaveFileS
@@ -1 +0,0 @@
TestSaveFile
@@ -1 +0,0 @@
TestSaveFileS
-105
View File
@@ -1,105 +0,0 @@
// Package awserr represents API error interface accessors for the SDK.
package awserr
// An Error wraps lower level errors with code, message and an original error.
// The underlying concrete error type may also satisfy other interfaces which
// can be to used to obtain more specific information about the error.
//
// Calling Error() or String() will always include the full information about
// an error based on its underlying type.
//
// Example:
//
// output, err := s3manage.Upload(svc, input, opts)
// if err != nil {
// if awsErr, ok := err.(awserr.Error); ok {
// // Get error details
// log.Println("Error:", err.Code(), err.Message())
//
// // Prints out full error message, including original error if there was one.
// log.Println("Error:", err.Error())
//
// // Get original error
// if origErr := err.Err(); origErr != nil {
// // operate on original error.
// }
// } else {
// fmt.Println(err.Error())
// }
// }
//
type Error interface {
// Satisfy the generic error interface.
error
// Returns the short phrase depicting the classification of the error.
Code() string
// Returns the error details message.
Message() string
// Returns the original error if one was set. Nil is returned if not set.
OrigErr() error
}
// New returns an Error object described by the code, message, and origErr.
//
// If origErr satisfies the Error interface it will not be wrapped within a new
// Error object and will instead be returned.
func New(code, message string, origErr error) Error {
if e, ok := origErr.(Error); ok && e != nil {
return e
}
return newBaseError(code, message, origErr)
}
// A RequestFailure is an interface to extract request failure information from
// an Error such as the request ID of the failed request returned by a service.
// RequestFailures may not always have a requestID value if the request failed
// prior to reaching the service such as a connection error.
//
// Example:
//
// output, err := s3manage.Upload(svc, input, opts)
// if err != nil {
// if reqerr, ok := err.(RequestFailure); ok {
// log.Printf("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID())
// } else {
// log.Printf("Error:", err.Error()
// }
// }
//
// Combined with awserr.Error:
//
// output, err := s3manage.Upload(svc, input, opts)
// if err != nil {
// if awsErr, ok := err.(awserr.Error); ok {
// // Generic AWS Error with Code, Message, and original error (if any)
// fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr())
//
// if reqErr, ok := err.(awserr.RequestFailure); ok {
// // A service error occurred
// fmt.Println(reqErr.StatusCode(), reqErr.RequestID())
// }
// } else {
// fmt.Println(err.Error())
// }
// }
//
type RequestFailure interface {
Error
// The status code of the HTTP response.
StatusCode() int
// The request ID returned by the service for a request failure. This will
// be empty if no request ID is available such as the request failed due
// to a connection error.
RequestID() string
}
// NewRequestFailure returns a new request error wrapper for the given Error
// provided.
func NewRequestFailure(err Error, statusCode int, reqID string) RequestFailure {
return newRequestError(err, statusCode, reqID)
}
-135
View File
@@ -1,135 +0,0 @@
package awserr
import "fmt"
// SprintError returns a string of the formatted error code.
//
// Both extra and origErr are optional. If they are included their lines
// will be added, but if they are not included their lines will be ignored.
func SprintError(code, message, extra string, origErr error) string {
msg := fmt.Sprintf("%s: %s", code, message)
if extra != "" {
msg = fmt.Sprintf("%s\n\t%s", msg, extra)
}
if origErr != nil {
msg = fmt.Sprintf("%s\ncaused by: %s", msg, origErr.Error())
}
return msg
}
// A baseError wraps the code and message which defines an error. It also
// can be used to wrap an original error object.
//
// Should be used as the root for errors satisfying the awserr.Error. Also
// for any error which does not fit into a specific error wrapper type.
type baseError struct {
// Classification of error
code string
// Detailed information about error
message string
// Optional original error this error is based off of. Allows building
// chained errors.
origErr error
}
// newBaseError returns an error object for the code, message, and err.
//
// code is a short no whitespace phrase depicting the classification of
// the error that is being created.
//
// message is the free flow string containing detailed information about the error.
//
// origErr is the error object which will be nested under the new error to be returned.
func newBaseError(code, message string, origErr error) *baseError {
return &baseError{
code: code,
message: message,
origErr: origErr,
}
}
// Error returns the string representation of the error.
//
// See ErrorWithExtra for formatting.
//
// Satisfies the error interface.
func (b baseError) Error() string {
return SprintError(b.code, b.message, "", b.origErr)
}
// String returns the string representation of the error.
// Alias for Error to satisfy the stringer interface.
func (b baseError) String() string {
return b.Error()
}
// Code returns the short phrase depicting the classification of the error.
func (b baseError) Code() string {
return b.code
}
// Message returns the error details message.
func (b baseError) Message() string {
return b.message
}
// OrigErr returns the original error if one was set. Nil is returned if no error
// was set.
func (b baseError) OrigErr() error {
return b.origErr
}
// So that the Error interface type can be included as an anonymous field
// in the requestError struct and not conflict with the error.Error() method.
type awsError Error
// A requestError wraps a request or service error.
//
// Composed of baseError for code, message, and original error.
type requestError struct {
awsError
statusCode int
requestID string
}
// newRequestError returns a wrapped error with additional information for request
// status code, and service requestID.
//
// Should be used to wrap all request which involve service requests. Even if
// the request failed without a service response, but had an HTTP status code
// that may be meaningful.
//
// Also wraps original errors via the baseError.
func newRequestError(err Error, statusCode int, requestID string) *requestError {
return &requestError{
awsError: err,
statusCode: statusCode,
requestID: requestID,
}
}
// Error returns the string representation of the error.
// Satisfies the error interface.
func (r requestError) Error() string {
extra := fmt.Sprintf("status code: %d, request id: %s",
r.statusCode, r.requestID)
return SprintError(r.Code(), r.Message(), extra, r.OrigErr())
}
// String returns the string representation of the error.
// Alias for Error to satisfy the stringer interface.
func (r requestError) String() string {
return r.Error()
}
// StatusCode returns the wrapped status code for the error
func (r requestError) StatusCode() int {
return r.statusCode
}
// RequestID returns the wrapped requestID
func (r requestError) RequestID() string {
return r.requestID
}
-100
View File
@@ -1,100 +0,0 @@
package awsutil
import (
"io"
"reflect"
)
// Copy deeply copies a src structure to dst. Useful for copying request and
// response structures.
//
// Can copy between structs of different type, but will only copy fields which
// are assignable, and exist in both structs. Fields which are not assignable,
// or do not exist in both structs are ignored.
func Copy(dst, src interface{}) {
dstval := reflect.ValueOf(dst)
if !dstval.IsValid() {
panic("Copy dst cannot be nil")
}
rcopy(dstval, reflect.ValueOf(src), true)
}
// CopyOf returns a copy of src while also allocating the memory for dst.
// src must be a pointer type or this operation will fail.
func CopyOf(src interface{}) (dst interface{}) {
dsti := reflect.New(reflect.TypeOf(src).Elem())
dst = dsti.Interface()
rcopy(dsti, reflect.ValueOf(src), true)
return
}
// rcopy performs a recursive copy of values from the source to destination.
//
// root is used to skip certain aspects of the copy which are not valid
// for the root node of a object.
func rcopy(dst, src reflect.Value, root bool) {
if !src.IsValid() {
return
}
switch src.Kind() {
case reflect.Ptr:
if _, ok := src.Interface().(io.Reader); ok {
if dst.Kind() == reflect.Ptr && dst.Elem().CanSet() {
dst.Elem().Set(src)
} else if dst.CanSet() {
dst.Set(src)
}
} else {
e := src.Type().Elem()
if dst.CanSet() && !src.IsNil() {
dst.Set(reflect.New(e))
}
if src.Elem().IsValid() {
// Keep the current root state since the depth hasn't changed
rcopy(dst.Elem(), src.Elem(), root)
}
}
case reflect.Struct:
t := dst.Type()
for i := 0; i < t.NumField(); i++ {
name := t.Field(i).Name
srcVal := src.FieldByName(name)
dstVal := dst.FieldByName(name)
if srcVal.IsValid() && dstVal.CanSet() {
rcopy(dstVal, srcVal, false)
}
}
case reflect.Slice:
if src.IsNil() {
break
}
s := reflect.MakeSlice(src.Type(), src.Len(), src.Cap())
dst.Set(s)
for i := 0; i < src.Len(); i++ {
rcopy(dst.Index(i), src.Index(i), false)
}
case reflect.Map:
if src.IsNil() {
break
}
s := reflect.MakeMap(src.Type())
dst.Set(s)
for _, k := range src.MapKeys() {
v := src.MapIndex(k)
v2 := reflect.New(v.Type()).Elem()
rcopy(v2, v, false)
dst.SetMapIndex(k, v2)
}
default:
// Assign the value if possible. If its not assignable, the value would
// need to be converted and the impact of that may be unexpected, or is
// not compatible with the dst type.
if src.Type().AssignableTo(dst.Type()) {
dst.Set(src)
}
}
}
@@ -1,233 +0,0 @@
package awsutil_test
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"testing"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/stretchr/testify/assert"
)
func ExampleCopy() {
type Foo struct {
A int
B []*string
}
// Create the initial value
str1 := "hello"
str2 := "bye bye"
f1 := &Foo{A: 1, B: []*string{&str1, &str2}}
// Do the copy
var f2 Foo
awsutil.Copy(&f2, f1)
// Print the result
fmt.Println(awsutil.Prettify(f2))
// Output:
// {
// A: 1,
// B: ["hello","bye bye"]
// }
}
func TestCopy(t *testing.T) {
type Foo struct {
A int
B []*string
C map[string]*int
}
// Create the initial value
str1 := "hello"
str2 := "bye bye"
int1 := 1
int2 := 2
f1 := &Foo{
A: 1,
B: []*string{&str1, &str2},
C: map[string]*int{
"A": &int1,
"B": &int2,
},
}
// Do the copy
var f2 Foo
awsutil.Copy(&f2, f1)
// Values are equal
assert.Equal(t, f2.A, f1.A)
assert.Equal(t, f2.B, f1.B)
assert.Equal(t, f2.C, f1.C)
// But pointers are not!
str3 := "nothello"
int3 := 57
f2.A = 100
f2.B[0] = &str3
f2.C["B"] = &int3
assert.NotEqual(t, f2.A, f1.A)
assert.NotEqual(t, f2.B, f1.B)
assert.NotEqual(t, f2.C, f1.C)
}
func TestCopyNestedWithUnexported(t *testing.T) {
type Bar struct {
a int
B int
}
type Foo struct {
A string
B Bar
}
f1 := &Foo{A: "string", B: Bar{a: 1, B: 2}}
var f2 Foo
awsutil.Copy(&f2, f1)
// Values match
assert.Equal(t, f2.A, f1.A)
assert.NotEqual(t, f2.B, f1.B)
assert.NotEqual(t, f2.B.a, f1.B.a)
assert.Equal(t, f2.B.B, f2.B.B)
}
func TestCopyIgnoreNilMembers(t *testing.T) {
type Foo struct {
A *string
B []string
C map[string]string
}
f := &Foo{}
assert.Nil(t, f.A)
assert.Nil(t, f.B)
assert.Nil(t, f.C)
var f2 Foo
awsutil.Copy(&f2, f)
assert.Nil(t, f2.A)
assert.Nil(t, f2.B)
assert.Nil(t, f2.C)
fcopy := awsutil.CopyOf(f)
f3 := fcopy.(*Foo)
assert.Nil(t, f3.A)
assert.Nil(t, f3.B)
assert.Nil(t, f3.C)
}
func TestCopyPrimitive(t *testing.T) {
str := "hello"
var s string
awsutil.Copy(&s, &str)
assert.Equal(t, "hello", s)
}
func TestCopyNil(t *testing.T) {
var s string
awsutil.Copy(&s, nil)
assert.Equal(t, "", s)
}
func TestCopyReader(t *testing.T) {
var buf io.Reader = bytes.NewReader([]byte("hello world"))
var r io.Reader
awsutil.Copy(&r, buf)
b, err := ioutil.ReadAll(r)
assert.NoError(t, err)
assert.Equal(t, []byte("hello world"), b)
// empty bytes because this is not a deep copy
b, err = ioutil.ReadAll(buf)
assert.NoError(t, err)
assert.Equal(t, []byte(""), b)
}
func TestCopyDifferentStructs(t *testing.T) {
type SrcFoo struct {
A int
B []*string
C map[string]*int
SrcUnique string
SameNameDiffType int
unexportedPtr *int
ExportedPtr *int
}
type DstFoo struct {
A int
B []*string
C map[string]*int
DstUnique int
SameNameDiffType string
unexportedPtr *int
ExportedPtr *int
}
// Create the initial value
str1 := "hello"
str2 := "bye bye"
int1 := 1
int2 := 2
f1 := &SrcFoo{
A: 1,
B: []*string{&str1, &str2},
C: map[string]*int{
"A": &int1,
"B": &int2,
},
SrcUnique: "unique",
SameNameDiffType: 1,
unexportedPtr: &int1,
ExportedPtr: &int2,
}
// Do the copy
var f2 DstFoo
awsutil.Copy(&f2, f1)
// Values are equal
assert.Equal(t, f2.A, f1.A)
assert.Equal(t, f2.B, f1.B)
assert.Equal(t, f2.C, f1.C)
assert.Equal(t, "unique", f1.SrcUnique)
assert.Equal(t, 1, f1.SameNameDiffType)
assert.Equal(t, 0, f2.DstUnique)
assert.Equal(t, "", f2.SameNameDiffType)
assert.Equal(t, int1, *f1.unexportedPtr)
assert.Nil(t, f2.unexportedPtr)
assert.Equal(t, int2, *f1.ExportedPtr)
assert.Equal(t, int2, *f2.ExportedPtr)
}
func ExampleCopyOf() {
type Foo struct {
A int
B []*string
}
// Create the initial value
str1 := "hello"
str2 := "bye bye"
f1 := &Foo{A: 1, B: []*string{&str1, &str2}}
// Do the copy
v := awsutil.CopyOf(f1)
var f2 *Foo = v.(*Foo)
// Print the result
fmt.Println(awsutil.Prettify(f2))
// Output:
// {
// A: 1,
// B: ["hello","bye bye"]
// }
}
@@ -1,29 +0,0 @@
package awsutil_test
import (
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/stretchr/testify/assert"
)
func TestDeepEqual(t *testing.T) {
cases := []struct {
a, b interface{}
equal bool
}{
{"a", "a", true},
{"a", "b", false},
{"a", aws.String(""), false},
{"a", nil, false},
{"a", aws.String("a"), true},
{(*bool)(nil), (*bool)(nil), true},
{(*bool)(nil), (*string)(nil), false},
{nil, nil, true},
}
for i, c := range cases {
assert.Equal(t, c.equal, awsutil.DeepEqual(c.a, c.b), "%d, a:%v b:%v, %t", i, c.a, c.b, c.equal)
}
}
@@ -1,142 +0,0 @@
package awsutil_test
import (
"testing"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/stretchr/testify/assert"
)
type Struct struct {
A []Struct
z []Struct
B *Struct
D *Struct
C string
E map[string]string
}
var data = Struct{
A: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}},
z: []Struct{{C: "value1"}, {C: "value2"}, {C: "value3"}},
B: &Struct{B: &Struct{C: "terminal"}, D: &Struct{C: "terminal2"}},
C: "initial",
}
var data2 = Struct{A: []Struct{
{A: []Struct{{C: "1"}, {C: "1"}, {C: "1"}, {C: "1"}, {C: "1"}}},
{A: []Struct{{C: "2"}, {C: "2"}, {C: "2"}, {C: "2"}, {C: "2"}}},
}}
func TestValueAtPathSuccess(t *testing.T) {
var testCases = []struct {
expect []interface{}
data interface{}
path string
}{
{[]interface{}{"initial"}, data, "C"},
{[]interface{}{"value1"}, data, "A[0].C"},
{[]interface{}{"value2"}, data, "A[1].C"},
{[]interface{}{"value3"}, data, "A[2].C"},
{[]interface{}{"value3"}, data, "a[2].c"},
{[]interface{}{"value3"}, data, "A[-1].C"},
{[]interface{}{"value1", "value2", "value3"}, data, "A[].C"},
{[]interface{}{"terminal"}, data, "B . B . C"},
{[]interface{}{"initial"}, data, "A.D.X || C"},
{[]interface{}{"initial"}, data, "A[0].B || C"},
{[]interface{}{
Struct{A: []Struct{{C: "1"}, {C: "1"}, {C: "1"}, {C: "1"}, {C: "1"}}},
Struct{A: []Struct{{C: "2"}, {C: "2"}, {C: "2"}, {C: "2"}, {C: "2"}}},
}, data2, "A"},
}
for i, c := range testCases {
v, err := awsutil.ValuesAtPath(c.data, c.path)
assert.NoError(t, err, "case %d, expected no error, %s", i, c.path)
assert.Equal(t, c.expect, v, "case %d, %s", i, c.path)
}
}
func TestValueAtPathFailure(t *testing.T) {
var testCases = []struct {
expect []interface{}
errContains string
data interface{}
path string
}{
{nil, "", data, "C.x"},
{nil, "SyntaxError: Invalid token: tDot", data, ".x"},
{nil, "", data, "X.Y.Z"},
{nil, "", data, "A[100].C"},
{nil, "", data, "A[3].C"},
{nil, "", data, "B.B.C.Z"},
{nil, "", data, "z[-1].C"},
{nil, "", nil, "A.B.C"},
{[]interface{}{}, "", Struct{}, "A"},
{nil, "", data, "A[0].B.C"},
{nil, "", data, "D"},
}
for i, c := range testCases {
v, err := awsutil.ValuesAtPath(c.data, c.path)
if c.errContains != "" {
assert.Contains(t, err.Error(), c.errContains, "case %d, expected error, %s", i, c.path)
continue
} else {
assert.NoError(t, err, "case %d, expected no error, %s", i, c.path)
}
assert.Equal(t, c.expect, v, "case %d, %s", i, c.path)
}
}
func TestSetValueAtPathSuccess(t *testing.T) {
var s Struct
awsutil.SetValueAtPath(&s, "C", "test1")
awsutil.SetValueAtPath(&s, "B.B.C", "test2")
awsutil.SetValueAtPath(&s, "B.D.C", "test3")
assert.Equal(t, "test1", s.C)
assert.Equal(t, "test2", s.B.B.C)
assert.Equal(t, "test3", s.B.D.C)
awsutil.SetValueAtPath(&s, "B.*.C", "test0")
assert.Equal(t, "test0", s.B.B.C)
assert.Equal(t, "test0", s.B.D.C)
var s2 Struct
awsutil.SetValueAtPath(&s2, "b.b.c", "test0")
assert.Equal(t, "test0", s2.B.B.C)
awsutil.SetValueAtPath(&s2, "A", []Struct{{}})
assert.Equal(t, []Struct{{}}, s2.A)
str := "foo"
s3 := Struct{}
awsutil.SetValueAtPath(&s3, "b.b.c", str)
assert.Equal(t, "foo", s3.B.B.C)
s3 = Struct{B: &Struct{B: &Struct{C: str}}}
awsutil.SetValueAtPath(&s3, "b.b.c", nil)
assert.Equal(t, "", s3.B.B.C)
s3 = Struct{}
awsutil.SetValueAtPath(&s3, "b.b.c", nil)
assert.Equal(t, "", s3.B.B.C)
s3 = Struct{}
awsutil.SetValueAtPath(&s3, "b.b.c", &str)
assert.Equal(t, "foo", s3.B.B.C)
var s4 struct{ Name *string }
awsutil.SetValueAtPath(&s4, "Name", str)
assert.Equal(t, str, *s4.Name)
s4 = struct{ Name *string }{}
awsutil.SetValueAtPath(&s4, "Name", nil)
assert.Equal(t, (*string)(nil), s4.Name)
s4 = struct{ Name *string }{Name: &str}
awsutil.SetValueAtPath(&s4, "Name", nil)
assert.Equal(t, (*string)(nil), s4.Name)
s4 = struct{ Name *string }{}
awsutil.SetValueAtPath(&s4, "Name", &str)
assert.Equal(t, str, *s4.Name)
}
-120
View File
@@ -1,120 +0,0 @@
package client
import (
"fmt"
"io/ioutil"
"net/http/httputil"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
)
// A Config provides configuration to a service client instance.
type Config struct {
Config *aws.Config
Handlers request.Handlers
Endpoint, SigningRegion string
}
// ConfigProvider provides a generic way for a service client to receive
// the ClientConfig without circular dependencies.
type ConfigProvider interface {
ClientConfig(serviceName string, cfgs ...*aws.Config) Config
}
// A Client implements the base client request and response handling
// used by all service clients.
type Client struct {
request.Retryer
metadata.ClientInfo
Config aws.Config
Handlers request.Handlers
}
// New will return a pointer to a new initialized service client.
func New(cfg aws.Config, info metadata.ClientInfo, handlers request.Handlers, options ...func(*Client)) *Client {
svc := &Client{
Config: cfg,
ClientInfo: info,
Handlers: handlers,
}
switch retryer, ok := cfg.Retryer.(request.Retryer); {
case ok:
svc.Retryer = retryer
case cfg.Retryer != nil && cfg.Logger != nil:
s := fmt.Sprintf("WARNING: %T does not implement request.Retryer; using DefaultRetryer instead", cfg.Retryer)
cfg.Logger.Log(s)
fallthrough
default:
maxRetries := aws.IntValue(cfg.MaxRetries)
if cfg.MaxRetries == nil || maxRetries == aws.UseServiceDefaultRetries {
maxRetries = 3
}
svc.Retryer = DefaultRetryer{NumMaxRetries: maxRetries}
}
svc.AddDebugHandlers()
for _, option := range options {
option(svc)
}
return svc
}
// NewRequest returns a new Request pointer for the service API
// operation and parameters.
func (c *Client) NewRequest(operation *request.Operation, params interface{}, data interface{}) *request.Request {
return request.New(c.Config, c.ClientInfo, c.Handlers, c.Retryer, operation, params, data)
}
// AddDebugHandlers injects debug logging handlers into the service to log request
// debug information.
func (c *Client) AddDebugHandlers() {
if !c.Config.LogLevel.AtLeast(aws.LogDebug) {
return
}
c.Handlers.Send.PushFront(logRequest)
c.Handlers.Send.PushBack(logResponse)
}
const logReqMsg = `DEBUG: Request %s/%s Details:
---[ REQUEST POST-SIGN ]-----------------------------
%s
-----------------------------------------------------`
func logRequest(r *request.Request) {
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
dumpedBody, _ := httputil.DumpRequestOut(r.HTTPRequest, logBody)
if logBody {
// Reset the request body because dumpRequest will re-wrap the r.HTTPRequest's
// Body as a NoOpCloser and will not be reset after read by the HTTP
// client reader.
r.Body.Seek(r.BodyStart, 0)
r.HTTPRequest.Body = ioutil.NopCloser(r.Body)
}
r.Config.Logger.Log(fmt.Sprintf(logReqMsg, r.ClientInfo.ServiceName, r.Operation.Name, string(dumpedBody)))
}
const logRespMsg = `DEBUG: Response %s/%s Details:
---[ RESPONSE ]--------------------------------------
%s
-----------------------------------------------------`
func logResponse(r *request.Request) {
var msg = "no reponse data"
if r.HTTPResponse != nil {
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
dumpedBody, _ := httputil.DumpResponse(r.HTTPResponse, logBody)
msg = string(dumpedBody)
} else if r.Error != nil {
msg = r.Error.Error()
}
r.Config.Logger.Log(fmt.Sprintf(logRespMsg, r.ClientInfo.ServiceName, r.Operation.Name, msg))
}
@@ -1,45 +0,0 @@
package client
import (
"math"
"math/rand"
"time"
"github.com/aws/aws-sdk-go/aws/request"
)
// DefaultRetryer implements basic retry logic using exponential backoff for
// most services. If you want to implement custom retry logic, implement the
// request.Retryer interface or create a structure type that composes this
// struct and override the specific methods. For example, to override only
// the MaxRetries method:
//
// type retryer struct {
// service.DefaultRetryer
// }
//
// // This implementation always has 100 max retries
// func (d retryer) MaxRetries() uint { return 100 }
type DefaultRetryer struct {
NumMaxRetries int
}
// MaxRetries returns the number of maximum returns the service will use to make
// an individual API request.
func (d DefaultRetryer) MaxRetries() int {
return d.NumMaxRetries
}
// RetryRules returns the delay duration before retrying this request again
func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {
delay := int(math.Pow(2, float64(r.RetryCount))) * (rand.Intn(30) + 30)
return time.Duration(delay) * time.Millisecond
}
// ShouldRetry returns if the request should be retried.
func (d DefaultRetryer) ShouldRetry(r *request.Request) bool {
if r.HTTPResponse.StatusCode >= 500 {
return true
}
return r.IsErrorRetryable()
}
-270
View File
@@ -1,270 +0,0 @@
package aws
import (
"net/http"
"time"
"github.com/aws/aws-sdk-go/aws/credentials"
)
// UseServiceDefaultRetries instructs the config to use the service's own default
// number of retries. This will be the default action if Config.MaxRetries
// is nil also.
const UseServiceDefaultRetries = -1
// RequestRetryer is an alias for a type that implements the request.Retryer interface.
type RequestRetryer interface{}
// A Config provides service configuration for service clients. By default,
// all clients will use the {defaults.DefaultConfig} structure.
type Config struct {
// The credentials object to use when signing requests. Defaults to
// a chain of credential providers to search for credentials in environment
// variables, shared credential file, and EC2 Instance Roles.
Credentials *credentials.Credentials
// An optional endpoint URL (hostname only or fully qualified URI)
// that overrides the default generated endpoint for a client. Set this
// to `""` to use the default generated endpoint.
//
// @note You must still provide a `Region` value when specifying an
// endpoint for a client.
Endpoint *string
// The region to send requests to. This parameter is required and must
// be configured globally or on a per-client basis unless otherwise
// noted. A full list of regions is found in the "Regions and Endpoints"
// document.
//
// @see http://docs.aws.amazon.com/general/latest/gr/rande.html
// AWS Regions and Endpoints
Region *string
// Set this to `true` to disable SSL when sending requests. Defaults
// to `false`.
DisableSSL *bool
// The HTTP client to use when sending requests. Defaults to
// `http.DefaultClient`.
HTTPClient *http.Client
// An integer value representing the logging level. The default log level
// is zero (LogOff), which represents no logging. To enable logging set
// to a LogLevel Value.
LogLevel *LogLevelType
// The logger writer interface to write logging messages to. Defaults to
// standard out.
Logger Logger
// The maximum number of times that a request will be retried for failures.
// Defaults to -1, which defers the max retry setting to the service specific
// configuration.
MaxRetries *int
// Retryer guides how HTTP requests should be retried in case of recoverable failures.
//
// When nil or the value does not implement the request.Retryer interface,
// the request.DefaultRetryer will be used.
//
// When both Retryer and MaxRetries are non-nil, the former is used and
// the latter ignored.
//
// To set the Retryer field in a type-safe manner and with chaining, use
// the request.WithRetryer helper function:
//
// cfg := request.WithRetryer(aws.NewConfig(), myRetryer)
//
Retryer RequestRetryer
// Disables semantic parameter validation, which validates input for missing
// required fields and/or other semantic request input errors.
DisableParamValidation *bool
// Disables the computation of request and response checksums, e.g.,
// CRC32 checksums in Amazon DynamoDB.
DisableComputeChecksums *bool
// Set this to `true` to force the request to use path-style addressing,
// i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client will
// use virtual hosted bucket addressing when possible
// (`http://BUCKET.s3.amazonaws.com/KEY`).
//
// @note This configuration option is specific to the Amazon S3 service.
// @see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
// Amazon S3: Virtual Hosting of Buckets
S3ForcePathStyle *bool
SleepDelay func(time.Duration)
}
// NewConfig returns a new Config pointer that can be chained with builder methods to
// set multiple configuration values inline without using pointers.
//
// svc := s3.New(aws.NewConfig().WithRegion("us-west-2").WithMaxRetries(10))
//
func NewConfig() *Config {
return &Config{}
}
// WithCredentials sets a config Credentials value returning a Config pointer
// for chaining.
func (c *Config) WithCredentials(creds *credentials.Credentials) *Config {
c.Credentials = creds
return c
}
// WithEndpoint sets a config Endpoint value returning a Config pointer for
// chaining.
func (c *Config) WithEndpoint(endpoint string) *Config {
c.Endpoint = &endpoint
return c
}
// WithRegion sets a config Region value returning a Config pointer for
// chaining.
func (c *Config) WithRegion(region string) *Config {
c.Region = &region
return c
}
// WithDisableSSL sets a config DisableSSL value returning a Config pointer
// for chaining.
func (c *Config) WithDisableSSL(disable bool) *Config {
c.DisableSSL = &disable
return c
}
// WithHTTPClient sets a config HTTPClient value returning a Config pointer
// for chaining.
func (c *Config) WithHTTPClient(client *http.Client) *Config {
c.HTTPClient = client
return c
}
// WithMaxRetries sets a config MaxRetries value returning a Config pointer
// for chaining.
func (c *Config) WithMaxRetries(max int) *Config {
c.MaxRetries = &max
return c
}
// WithDisableParamValidation sets a config DisableParamValidation value
// returning a Config pointer for chaining.
func (c *Config) WithDisableParamValidation(disable bool) *Config {
c.DisableParamValidation = &disable
return c
}
// WithDisableComputeChecksums sets a config DisableComputeChecksums value
// returning a Config pointer for chaining.
func (c *Config) WithDisableComputeChecksums(disable bool) *Config {
c.DisableComputeChecksums = &disable
return c
}
// WithLogLevel sets a config LogLevel value returning a Config pointer for
// chaining.
func (c *Config) WithLogLevel(level LogLevelType) *Config {
c.LogLevel = &level
return c
}
// WithLogger sets a config Logger value returning a Config pointer for
// chaining.
func (c *Config) WithLogger(logger Logger) *Config {
c.Logger = logger
return c
}
// WithS3ForcePathStyle sets a config S3ForcePathStyle value returning a Config
// pointer for chaining.
func (c *Config) WithS3ForcePathStyle(force bool) *Config {
c.S3ForcePathStyle = &force
return c
}
// WithSleepDelay overrides the function used to sleep while waiting for the
// next retry. Defaults to time.Sleep.
func (c *Config) WithSleepDelay(fn func(time.Duration)) *Config {
c.SleepDelay = fn
return c
}
// MergeIn merges the passed in configs into the existing config object.
func (c *Config) MergeIn(cfgs ...*Config) {
for _, other := range cfgs {
mergeInConfig(c, other)
}
}
func mergeInConfig(dst *Config, other *Config) {
if other == nil {
return
}
if other.Credentials != nil {
dst.Credentials = other.Credentials
}
if other.Endpoint != nil {
dst.Endpoint = other.Endpoint
}
if other.Region != nil {
dst.Region = other.Region
}
if other.DisableSSL != nil {
dst.DisableSSL = other.DisableSSL
}
if other.HTTPClient != nil {
dst.HTTPClient = other.HTTPClient
}
if other.LogLevel != nil {
dst.LogLevel = other.LogLevel
}
if other.Logger != nil {
dst.Logger = other.Logger
}
if other.MaxRetries != nil {
dst.MaxRetries = other.MaxRetries
}
if other.Retryer != nil {
dst.Retryer = other.Retryer
}
if other.DisableParamValidation != nil {
dst.DisableParamValidation = other.DisableParamValidation
}
if other.DisableComputeChecksums != nil {
dst.DisableComputeChecksums = other.DisableComputeChecksums
}
if other.S3ForcePathStyle != nil {
dst.S3ForcePathStyle = other.S3ForcePathStyle
}
if other.SleepDelay != nil {
dst.SleepDelay = other.SleepDelay
}
}
// Copy will return a shallow copy of the Config object. If any additional
// configurations are provided they will be merged into the new config returned.
func (c *Config) Copy(cfgs ...*Config) *Config {
dst := &Config{}
dst.MergeIn(c)
for _, cfg := range cfgs {
dst.MergeIn(cfg)
}
return dst
}
-86
View File
@@ -1,86 +0,0 @@
package aws
import (
"net/http"
"reflect"
"testing"
"github.com/aws/aws-sdk-go/aws/credentials"
)
var testCredentials = credentials.NewStaticCredentials("AKID", "SECRET", "SESSION")
var copyTestConfig = Config{
Credentials: testCredentials,
Endpoint: String("CopyTestEndpoint"),
Region: String("COPY_TEST_AWS_REGION"),
DisableSSL: Bool(true),
HTTPClient: http.DefaultClient,
LogLevel: LogLevel(LogDebug),
Logger: NewDefaultLogger(),
MaxRetries: Int(3),
DisableParamValidation: Bool(true),
DisableComputeChecksums: Bool(true),
S3ForcePathStyle: Bool(true),
}
func TestCopy(t *testing.T) {
want := copyTestConfig
got := copyTestConfig.Copy()
if !reflect.DeepEqual(*got, want) {
t.Errorf("Copy() = %+v", got)
t.Errorf(" want %+v", want)
}
got.Region = String("other")
if got.Region == want.Region {
t.Errorf("Expect setting copy values not not reflect in source")
}
}
func TestCopyReturnsNewInstance(t *testing.T) {
want := copyTestConfig
got := copyTestConfig.Copy()
if got == &want {
t.Errorf("Copy() = %p; want different instance as source %p", got, &want)
}
}
var mergeTestZeroValueConfig = Config{}
var mergeTestConfig = Config{
Credentials: testCredentials,
Endpoint: String("MergeTestEndpoint"),
Region: String("MERGE_TEST_AWS_REGION"),
DisableSSL: Bool(true),
HTTPClient: http.DefaultClient,
LogLevel: LogLevel(LogDebug),
Logger: NewDefaultLogger(),
MaxRetries: Int(10),
DisableParamValidation: Bool(true),
DisableComputeChecksums: Bool(true),
S3ForcePathStyle: Bool(true),
}
var mergeTests = []struct {
cfg *Config
in *Config
want *Config
}{
{&Config{}, nil, &Config{}},
{&Config{}, &mergeTestZeroValueConfig, &Config{}},
{&Config{}, &mergeTestConfig, &mergeTestConfig},
}
func TestMerge(t *testing.T) {
for i, tt := range mergeTests {
got := tt.cfg.Copy()
got.MergeIn(tt.in)
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("Config %d %+v", i, tt.cfg)
t.Errorf(" Merge(%+v)", tt.in)
t.Errorf(" got %+v", got)
t.Errorf(" want %+v", tt.want)
}
}
}
@@ -1,437 +0,0 @@
package aws
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
)
var testCasesStringSlice = [][]string{
{"a", "b", "c", "d", "e"},
{"a", "b", "", "", "e"},
}
func TestStringSlice(t *testing.T) {
for idx, in := range testCasesStringSlice {
if in == nil {
continue
}
out := StringSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := StringValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesStringValueSlice = [][]*string{
{String("a"), String("b"), nil, String("c")},
}
func TestStringValueSlice(t *testing.T) {
for idx, in := range testCasesStringValueSlice {
if in == nil {
continue
}
out := StringValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := StringSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesStringMap = []map[string]string{
{"a": "1", "b": "2", "c": "3"},
}
func TestStringMap(t *testing.T) {
for idx, in := range testCasesStringMap {
if in == nil {
continue
}
out := StringMap(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := StringValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesBoolSlice = [][]bool{
{true, true, false, false},
}
func TestBoolSlice(t *testing.T) {
for idx, in := range testCasesBoolSlice {
if in == nil {
continue
}
out := BoolSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := BoolValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesBoolValueSlice = [][]*bool{}
func TestBoolValueSlice(t *testing.T) {
for idx, in := range testCasesBoolValueSlice {
if in == nil {
continue
}
out := BoolValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := BoolSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesBoolMap = []map[string]bool{
{"a": true, "b": false, "c": true},
}
func TestBoolMap(t *testing.T) {
for idx, in := range testCasesBoolMap {
if in == nil {
continue
}
out := BoolMap(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := BoolValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesIntSlice = [][]int{
{1, 2, 3, 4},
}
func TestIntSlice(t *testing.T) {
for idx, in := range testCasesIntSlice {
if in == nil {
continue
}
out := IntSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := IntValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesIntValueSlice = [][]*int{}
func TestIntValueSlice(t *testing.T) {
for idx, in := range testCasesIntValueSlice {
if in == nil {
continue
}
out := IntValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := IntSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesIntMap = []map[string]int{
{"a": 3, "b": 2, "c": 1},
}
func TestIntMap(t *testing.T) {
for idx, in := range testCasesIntMap {
if in == nil {
continue
}
out := IntMap(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := IntValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesInt64Slice = [][]int64{
{1, 2, 3, 4},
}
func TestInt64Slice(t *testing.T) {
for idx, in := range testCasesInt64Slice {
if in == nil {
continue
}
out := Int64Slice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := Int64ValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesInt64ValueSlice = [][]*int64{}
func TestInt64ValueSlice(t *testing.T) {
for idx, in := range testCasesInt64ValueSlice {
if in == nil {
continue
}
out := Int64ValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := Int64Slice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesInt64Map = []map[string]int64{
{"a": 3, "b": 2, "c": 1},
}
func TestInt64Map(t *testing.T) {
for idx, in := range testCasesInt64Map {
if in == nil {
continue
}
out := Int64Map(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := Int64ValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesFloat64Slice = [][]float64{
{1, 2, 3, 4},
}
func TestFloat64Slice(t *testing.T) {
for idx, in := range testCasesFloat64Slice {
if in == nil {
continue
}
out := Float64Slice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := Float64ValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesFloat64ValueSlice = [][]*float64{}
func TestFloat64ValueSlice(t *testing.T) {
for idx, in := range testCasesFloat64ValueSlice {
if in == nil {
continue
}
out := Float64ValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := Float64Slice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesFloat64Map = []map[string]float64{
{"a": 3, "b": 2, "c": 1},
}
func TestFloat64Map(t *testing.T) {
for idx, in := range testCasesFloat64Map {
if in == nil {
continue
}
out := Float64Map(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := Float64ValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesTimeSlice = [][]time.Time{
{time.Now(), time.Now().AddDate(100, 0, 0)},
}
func TestTimeSlice(t *testing.T) {
for idx, in := range testCasesTimeSlice {
if in == nil {
continue
}
out := TimeSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := TimeValueSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
var testCasesTimeValueSlice = [][]*time.Time{}
func TestTimeValueSlice(t *testing.T) {
for idx, in := range testCasesTimeValueSlice {
if in == nil {
continue
}
out := TimeValueSlice(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
if in[i] == nil {
assert.Empty(t, out[i], "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, *(in[i]), out[i], "Unexpected value at idx %d", idx)
}
}
out2 := TimeSlice(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
for i := range out2 {
if in[i] == nil {
assert.Empty(t, *(out2[i]), "Unexpected value at idx %d", idx)
} else {
assert.Equal(t, in[i], out2[i], "Unexpected value at idx %d", idx)
}
}
}
}
var testCasesTimeMap = []map[string]time.Time{
{"a": time.Now().AddDate(-100, 0, 0), "b": time.Now()},
}
func TestTimeMap(t *testing.T) {
for idx, in := range testCasesTimeMap {
if in == nil {
continue
}
out := TimeMap(in)
assert.Len(t, out, len(in), "Unexpected len at idx %d", idx)
for i := range out {
assert.Equal(t, in[i], *(out[i]), "Unexpected value at idx %d", idx)
}
out2 := TimeValueMap(out)
assert.Len(t, out2, len(in), "Unexpected len at idx %d", idx)
assert.Equal(t, in, out2, "Unexpected value at idx %d", idx)
}
}
@@ -1,139 +0,0 @@
package corehandlers
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"regexp"
"runtime"
"strconv"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
)
// Interface for matching types which also have a Len method.
type lener interface {
Len() int
}
// BuildContentLengthHandler builds the content length of a request based on the body,
// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable
// to determine request body length and no "Content-Length" was specified it will panic.
var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLengthHandler", Fn: func(r *request.Request) {
if slength := r.HTTPRequest.Header.Get("Content-Length"); slength != "" {
length, _ := strconv.ParseInt(slength, 10, 64)
r.HTTPRequest.ContentLength = length
return
}
var length int64
switch body := r.Body.(type) {
case nil:
length = 0
case lener:
length = int64(body.Len())
case io.Seeker:
r.BodyStart, _ = body.Seek(0, 1)
end, _ := body.Seek(0, 2)
body.Seek(r.BodyStart, 0) // make sure to seek back to original location
length = end - r.BodyStart
default:
panic("Cannot get length of body, must provide `ContentLength`")
}
r.HTTPRequest.ContentLength = length
r.HTTPRequest.Header.Set("Content-Length", fmt.Sprintf("%d", length))
}}
// SDKVersionUserAgentHandler is a request handler for adding the SDK Version to the user agent.
var SDKVersionUserAgentHandler = request.NamedHandler{
Name: "core.SDKVersionUserAgentHandler",
Fn: request.MakeAddToUserAgentHandler(aws.SDKName, aws.SDKVersion,
runtime.Version(), runtime.GOOS, runtime.GOARCH),
}
var reStatusCode = regexp.MustCompile(`^(\d{3})`)
// SendHandler is a request handler to send service request using HTTP client.
var SendHandler = request.NamedHandler{Name: "core.SendHandler", Fn: func(r *request.Request) {
var err error
r.HTTPResponse, err = r.Config.HTTPClient.Do(r.HTTPRequest)
if err != nil {
// Capture the case where url.Error is returned for error processing
// response. e.g. 301 without location header comes back as string
// error and r.HTTPResponse is nil. Other url redirect errors will
// comeback in a similar method.
if e, ok := err.(*url.Error); ok && e.Err != nil {
if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil {
code, _ := strconv.ParseInt(s[1], 10, 64)
r.HTTPResponse = &http.Response{
StatusCode: int(code),
Status: http.StatusText(int(code)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
return
}
}
if r.HTTPResponse == nil {
// Add a dummy request response object to ensure the HTTPResponse
// value is consistent.
r.HTTPResponse = &http.Response{
StatusCode: int(0),
Status: http.StatusText(int(0)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
}
// Catch all other request errors.
r.Error = awserr.New("RequestError", "send request failed", err)
r.Retryable = aws.Bool(true) // network errors are retryable
}
}}
// ValidateResponseHandler is a request handler to validate service response.
var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseHandler", Fn: func(r *request.Request) {
if r.HTTPResponse.StatusCode == 0 || r.HTTPResponse.StatusCode >= 300 {
// this may be replaced by an UnmarshalError handler
r.Error = awserr.New("UnknownError", "unknown error", nil)
}
}}
// AfterRetryHandler performs final checks to determine if the request should
// be retried and how long to delay.
var AfterRetryHandler = request.NamedHandler{Name: "core.AfterRetryHandler", Fn: func(r *request.Request) {
// If one of the other handlers already set the retry state
// we don't want to override it based on the service's state
if r.Retryable == nil {
r.Retryable = aws.Bool(r.ShouldRetry(r))
}
if r.WillRetry() {
r.RetryDelay = r.RetryRules(r)
r.Config.SleepDelay(r.RetryDelay)
// when the expired token exception occurs the credentials
// need to be expired locally so that the next request to
// get credentials will trigger a credentials refresh.
if r.IsErrorExpired() {
r.Config.Credentials.Expire()
}
r.RetryCount++
r.Error = nil
}
}}
// ValidateEndpointHandler is a request handler to validate a request had the
// appropriate Region and Endpoint set. Will set r.Error if the endpoint or
// region is not valid.
var ValidateEndpointHandler = request.NamedHandler{Name: "core.ValidateEndpointHandler", Fn: func(r *request.Request) {
if r.ClientInfo.SigningRegion == "" && aws.StringValue(r.Config.Region) == "" {
r.Error = aws.ErrMissingRegion
} else if r.ClientInfo.Endpoint == "" {
r.Error = aws.ErrMissingEndpoint
}
}}
@@ -1,113 +0,0 @@
package corehandlers_test
import (
"fmt"
"net/http"
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/awstesting"
)
func TestValidateEndpointHandler(t *testing.T) {
os.Clearenv()
svc := awstesting.NewClient(aws.NewConfig().WithRegion("us-west-2"))
svc.Handlers.Clear()
svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
err := req.Build()
assert.NoError(t, err)
}
func TestValidateEndpointHandlerErrorRegion(t *testing.T) {
os.Clearenv()
svc := awstesting.NewClient()
svc.Handlers.Clear()
svc.Handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
err := req.Build()
assert.Error(t, err)
assert.Equal(t, aws.ErrMissingRegion, err)
}
type mockCredsProvider struct {
expired bool
retrieveCalled bool
}
func (m *mockCredsProvider) Retrieve() (credentials.Value, error) {
m.retrieveCalled = true
return credentials.Value{}, nil
}
func (m *mockCredsProvider) IsExpired() bool {
return m.expired
}
func TestAfterRetryRefreshCreds(t *testing.T) {
os.Clearenv()
credProvider := &mockCredsProvider{}
svc := awstesting.NewClient(&aws.Config{
Credentials: credentials.NewCredentials(credProvider),
MaxRetries: aws.Int(1),
})
svc.Handlers.Clear()
svc.Handlers.ValidateResponse.PushBack(func(r *request.Request) {
r.Error = awserr.New("UnknownError", "", nil)
r.HTTPResponse = &http.Response{StatusCode: 400}
})
svc.Handlers.UnmarshalError.PushBack(func(r *request.Request) {
r.Error = awserr.New("ExpiredTokenException", "", nil)
})
svc.Handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)
assert.True(t, svc.Config.Credentials.IsExpired(), "Expect to start out expired")
assert.False(t, credProvider.retrieveCalled)
req := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
req.Send()
assert.True(t, svc.Config.Credentials.IsExpired())
assert.False(t, credProvider.retrieveCalled)
_, err := svc.Config.Credentials.Get()
assert.NoError(t, err)
assert.True(t, credProvider.retrieveCalled)
}
type testSendHandlerTransport struct{}
func (t *testSendHandlerTransport) RoundTrip(r *http.Request) (*http.Response, error) {
return nil, fmt.Errorf("mock error")
}
func TestSendHandlerError(t *testing.T) {
svc := awstesting.NewClient(&aws.Config{
HTTPClient: &http.Client{
Transport: &testSendHandlerTransport{},
},
})
svc.Handlers.Clear()
svc.Handlers.Send.PushBackNamed(corehandlers.SendHandler)
r := svc.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
r.Send()
assert.Error(t, r.Error)
assert.NotNil(t, r.HTTPResponse)
}
@@ -1,144 +0,0 @@
package corehandlers
import (
"fmt"
"reflect"
"strconv"
"strings"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
)
// ValidateParametersHandler is a request handler to validate the input parameters.
// Validating parameters only has meaning if done prior to the request being sent.
var ValidateParametersHandler = request.NamedHandler{Name: "core.ValidateParametersHandler", Fn: func(r *request.Request) {
if r.ParamsFilled() {
v := validator{errors: []string{}}
v.validateAny(reflect.ValueOf(r.Params), "")
if count := len(v.errors); count > 0 {
format := "%d validation errors:\n- %s"
msg := fmt.Sprintf(format, count, strings.Join(v.errors, "\n- "))
r.Error = awserr.New("InvalidParameter", msg, nil)
}
}
}}
// A validator validates values. Collects validations errors which occurs.
type validator struct {
errors []string
}
// validateAny will validate any struct, slice or map type. All validations
// are also performed recursively for nested types.
func (v *validator) validateAny(value reflect.Value, path string) {
value = reflect.Indirect(value)
if !value.IsValid() {
return
}
switch value.Kind() {
case reflect.Struct:
v.validateStruct(value, path)
case reflect.Slice:
for i := 0; i < value.Len(); i++ {
v.validateAny(value.Index(i), path+fmt.Sprintf("[%d]", i))
}
case reflect.Map:
for _, n := range value.MapKeys() {
v.validateAny(value.MapIndex(n), path+fmt.Sprintf("[%q]", n.String()))
}
}
}
// validateStruct will validate the struct value's fields. If the structure has
// nested types those types will be validated also.
func (v *validator) validateStruct(value reflect.Value, path string) {
prefix := "."
if path == "" {
prefix = ""
}
for i := 0; i < value.Type().NumField(); i++ {
f := value.Type().Field(i)
if strings.ToLower(f.Name[0:1]) == f.Name[0:1] {
continue
}
fvalue := value.FieldByName(f.Name)
err := validateField(f, fvalue, validateFieldRequired, validateFieldMin)
if err != nil {
v.errors = append(v.errors, fmt.Sprintf("%s: %s", err.Error(), path+prefix+f.Name))
continue
}
v.validateAny(fvalue, path+prefix+f.Name)
}
}
type validatorFunc func(f reflect.StructField, fvalue reflect.Value) error
func validateField(f reflect.StructField, fvalue reflect.Value, funcs ...validatorFunc) error {
for _, fn := range funcs {
if err := fn(f, fvalue); err != nil {
return err
}
}
return nil
}
// Validates that a field has a valid value provided for required fields.
func validateFieldRequired(f reflect.StructField, fvalue reflect.Value) error {
if f.Tag.Get("required") == "" {
return nil
}
switch fvalue.Kind() {
case reflect.Ptr, reflect.Slice, reflect.Map:
if fvalue.IsNil() {
return fmt.Errorf("missing required parameter")
}
default:
if !fvalue.IsValid() {
return fmt.Errorf("missing required parameter")
}
}
return nil
}
// Validates that if a value is provided for a field, that value must be at
// least a minimum length.
func validateFieldMin(f reflect.StructField, fvalue reflect.Value) error {
minStr := f.Tag.Get("min")
if minStr == "" {
return nil
}
min, _ := strconv.ParseInt(minStr, 10, 64)
kind := fvalue.Kind()
if kind == reflect.Ptr {
if fvalue.IsNil() {
return nil
}
fvalue = fvalue.Elem()
}
switch fvalue.Kind() {
case reflect.String:
if int64(fvalue.Len()) < min {
return fmt.Errorf("field too short, minimum length %d", min)
}
case reflect.Slice, reflect.Map:
if fvalue.IsNil() {
return nil
}
if int64(fvalue.Len()) < min {
return fmt.Errorf("field too short, minimum length %d", min)
}
// TODO min can also apply to number minimum value.
}
return nil
}
@@ -1,134 +0,0 @@
package corehandlers_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/stretchr/testify/require"
)
var testSvc = func() *client.Client {
s := &client.Client{
Config: aws.Config{},
ClientInfo: metadata.ClientInfo{
ServiceName: "mock-service",
APIVersion: "2015-01-01",
},
}
return s
}()
type StructShape struct {
RequiredList []*ConditionalStructShape `required:"true"`
RequiredMap map[string]*ConditionalStructShape `required:"true"`
RequiredBool *bool `required:"true"`
OptionalStruct *ConditionalStructShape
hiddenParameter *string
metadataStructureShape
}
type metadataStructureShape struct {
SDKShapeTraits bool
}
type ConditionalStructShape struct {
Name *string `required:"true"`
SDKShapeTraits bool
}
func TestNoErrors(t *testing.T) {
input := &StructShape{
RequiredList: []*ConditionalStructShape{},
RequiredMap: map[string]*ConditionalStructShape{
"key1": {Name: aws.String("Name")},
"key2": {Name: aws.String("Name")},
},
RequiredBool: aws.Bool(true),
OptionalStruct: &ConditionalStructShape{Name: aws.String("Name")},
}
req := testSvc.NewRequest(&request.Operation{}, input, nil)
corehandlers.ValidateParametersHandler.Fn(req)
require.NoError(t, req.Error)
}
func TestMissingRequiredParameters(t *testing.T) {
input := &StructShape{}
req := testSvc.NewRequest(&request.Operation{}, input, nil)
corehandlers.ValidateParametersHandler.Fn(req)
require.Error(t, req.Error)
assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList\n- missing required parameter: RequiredMap\n- missing required parameter: RequiredBool", req.Error.(awserr.Error).Message())
}
func TestNestedMissingRequiredParameters(t *testing.T) {
input := &StructShape{
RequiredList: []*ConditionalStructShape{{}},
RequiredMap: map[string]*ConditionalStructShape{
"key1": {Name: aws.String("Name")},
"key2": {},
},
RequiredBool: aws.Bool(true),
OptionalStruct: &ConditionalStructShape{},
}
req := testSvc.NewRequest(&request.Operation{}, input, nil)
corehandlers.ValidateParametersHandler.Fn(req)
require.Error(t, req.Error)
assert.Equal(t, "InvalidParameter", req.Error.(awserr.Error).Code())
assert.Equal(t, "3 validation errors:\n- missing required parameter: RequiredList[0].Name\n- missing required parameter: RequiredMap[\"key2\"].Name\n- missing required parameter: OptionalStruct.Name", req.Error.(awserr.Error).Message())
}
type testInput struct {
StringField string `min:"5"`
PtrStrField *string `min:"2"`
ListField []string `min:"3"`
MapField map[string]string `min:"4"`
}
var testsFieldMin = []struct {
err awserr.Error
in testInput
}{
{
err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 5: StringField", nil),
in: testInput{StringField: "abcd"},
},
{
err: awserr.New("InvalidParameter", "2 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField", nil),
in: testInput{StringField: "abcd", ListField: []string{"a", "b"}},
},
{
err: awserr.New("InvalidParameter", "3 validation errors:\n- field too short, minimum length 5: StringField\n- field too short, minimum length 3: ListField\n- field too short, minimum length 4: MapField", nil),
in: testInput{StringField: "abcd", ListField: []string{"a", "b"}, MapField: map[string]string{"a": "a", "b": "b"}},
},
{
err: awserr.New("InvalidParameter", "1 validation errors:\n- field too short, minimum length 2: PtrStrField", nil),
in: testInput{StringField: "abcde", PtrStrField: aws.String("v")},
},
{
err: nil,
in: testInput{StringField: "abcde", PtrStrField: aws.String("value"),
ListField: []string{"a", "b", "c"}, MapField: map[string]string{"a": "a", "b": "b", "c": "c", "d": "d"}},
},
}
func TestValidateFieldMinParameter(t *testing.T) {
for i, c := range testsFieldMin {
req := testSvc.NewRequest(&request.Operation{}, &c.in, nil)
corehandlers.ValidateParametersHandler.Fn(req)
require.Equal(t, c.err, req.Error, "%d case failed", i)
}
}
@@ -1,85 +0,0 @@
package credentials
import (
"github.com/aws/aws-sdk-go/aws/awserr"
)
var (
// ErrNoValidProvidersFoundInChain Is returned when there are no valid
// providers in the ChainProvider.
//
// @readonly
ErrNoValidProvidersFoundInChain = awserr.New("NoCredentialProviders", "no valid providers in chain", nil)
)
// A ChainProvider will search for a provider which returns credentials
// and cache that provider until Retrieve is called again.
//
// The ChainProvider provides a way of chaining multiple providers together
// which will pick the first available using priority order of the Providers
// in the list.
//
// If none of the Providers retrieve valid credentials Value, ChainProvider's
// Retrieve() will return the error ErrNoValidProvidersFoundInChain.
//
// If a Provider is found which returns valid credentials Value ChainProvider
// will cache that Provider for all calls to IsExpired(), until Retrieve is
// called again.
//
// Example of ChainProvider to be used with an EnvProvider and EC2RoleProvider.
// In this example EnvProvider will first check if any credentials are available
// vai the environment variables. If there are none ChainProvider will check
// the next Provider in the list, EC2RoleProvider in this case. If EC2RoleProvider
// does not return any credentials ChainProvider will return the error
// ErrNoValidProvidersFoundInChain
//
// creds := NewChainCredentials(
// []Provider{
// &EnvProvider{},
// &EC2RoleProvider{},
// })
//
// // Usage of ChainCredentials with aws.Config
// svc := ec2.New(&aws.Config{Credentials: creds})
//
type ChainProvider struct {
Providers []Provider
curr Provider
}
// NewChainCredentials returns a pointer to a new Credentials object
// wrapping a chain of providers.
func NewChainCredentials(providers []Provider) *Credentials {
return NewCredentials(&ChainProvider{
Providers: append([]Provider{}, providers...),
})
}
// Retrieve returns the credentials value or error if no provider returned
// without error.
//
// If a provider is found it will be cached and any calls to IsExpired()
// will return the expired state of the cached provider.
func (c *ChainProvider) Retrieve() (Value, error) {
for _, p := range c.Providers {
if creds, err := p.Retrieve(); err == nil {
c.curr = p
return creds, nil
}
}
c.curr = nil
// TODO better error reporting. maybe report error for each failed retrieve?
return Value{}, ErrNoValidProvidersFoundInChain
}
// IsExpired will returned the expired state of the currently cached provider
// if there is one. If there is no current provider, true will be returned.
func (c *ChainProvider) IsExpired() bool {
if c.curr != nil {
return c.curr.IsExpired()
}
return true
}
@@ -1,73 +0,0 @@
package credentials
import (
"testing"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/stretchr/testify/assert"
)
func TestChainProviderGet(t *testing.T) {
p := &ChainProvider{
Providers: []Provider{
&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
&stubProvider{
creds: Value{
AccessKeyID: "AKID",
SecretAccessKey: "SECRET",
SessionToken: "",
},
},
},
}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
}
func TestChainProviderIsExpired(t *testing.T) {
stubProvider := &stubProvider{expired: true}
p := &ChainProvider{
Providers: []Provider{
stubProvider,
},
}
assert.True(t, p.IsExpired(), "Expect expired to be true before any Retrieve")
_, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
stubProvider.expired = true
assert.True(t, p.IsExpired(), "Expect return of expired provider")
_, err = p.Retrieve()
assert.False(t, p.IsExpired(), "Expect not expired after retrieve")
}
func TestChainProviderWithNoProvider(t *testing.T) {
p := &ChainProvider{
Providers: []Provider{},
}
assert.True(t, p.IsExpired(), "Expect expired with no providers")
_, err := p.Retrieve()
assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
}
func TestChainProviderWithNoValidProvider(t *testing.T) {
p := &ChainProvider{
Providers: []Provider{
&stubProvider{err: awserr.New("FirstError", "first provider error", nil)},
&stubProvider{err: awserr.New("SecondError", "second provider error", nil)},
},
}
assert.True(t, p.IsExpired(), "Expect expired with no providers")
_, err := p.Retrieve()
assert.Equal(t, ErrNoValidProvidersFoundInChain, err, "Expect no providers error returned")
}
@@ -1,220 +0,0 @@
// Package credentials provides credential retrieval and management
//
// The Credentials is the primary method of getting access to and managing
// credentials Values. Using dependency injection retrieval of the credential
// values is handled by a object which satisfies the Provider interface.
//
// By default the Credentials.Get() will cache the successful result of a
// Provider's Retrieve() until Provider.IsExpired() returns true. At which
// point Credentials will call Provider's Retrieve() to get new credential Value.
//
// The Provider is responsible for determining when credentials Value have expired.
// It is also important to note that Credentials will always call Retrieve the
// first time Credentials.Get() is called.
//
// Example of using the environment variable credentials.
//
// creds := NewEnvCredentials()
//
// // Retrieve the credentials value
// credValue, err := creds.Get()
// if err != nil {
// // handle error
// }
//
// Example of forcing credentials to expire and be refreshed on the next Get().
// This may be helpful to proactively expire credentials and refresh them sooner
// than they would naturally expire on their own.
//
// creds := NewCredentials(&EC2RoleProvider{})
// creds.Expire()
// credsValue, err := creds.Get()
// // New credentials will be retrieved instead of from cache.
//
//
// Custom Provider
//
// Each Provider built into this package also provides a helper method to generate
// a Credentials pointer setup with the provider. To use a custom Provider just
// create a type which satisfies the Provider interface and pass it to the
// NewCredentials method.
//
// type MyProvider struct{}
// func (m *MyProvider) Retrieve() (Value, error) {...}
// func (m *MyProvider) IsExpired() bool {...}
//
// creds := NewCredentials(&MyProvider{})
// credValue, err := creds.Get()
//
package credentials
import (
"sync"
"time"
)
// AnonymousCredentials is an empty Credential object that can be used as
// dummy placeholder credentials for requests that do not need signed.
//
// This Credentials can be used to configure a service to not sign requests
// when making service API calls. For example, when accessing public
// s3 buckets.
//
// svc := s3.New(&aws.Config{Credentials: AnonymousCredentials})
// // Access public S3 buckets.
//
// @readonly
var AnonymousCredentials = NewStaticCredentials("", "", "")
// A Value is the AWS credentials value for individual credential fields.
type Value struct {
// AWS Access key ID
AccessKeyID string
// AWS Secret Access Key
SecretAccessKey string
// AWS Session Token
SessionToken string
}
// A Provider is the interface for any component which will provide credentials
// Value. A provider is required to manage its own Expired state, and what to
// be expired means.
//
// The Provider should not need to implement its own mutexes, because
// that will be managed by Credentials.
type Provider interface {
// Refresh returns nil if it successfully retrieved the value.
// Error is returned if the value were not obtainable, or empty.
Retrieve() (Value, error)
// IsExpired returns if the credentials are no longer valid, and need
// to be retrieved.
IsExpired() bool
}
// A Expiry provides shared expiration logic to be used by credentials
// providers to implement expiry functionality.
//
// The best method to use this struct is as an anonymous field within the
// provider's struct.
//
// Example:
// type EC2RoleProvider struct {
// Expiry
// ...
// }
type Expiry struct {
// The date/time when to expire on
expiration time.Time
// If set will be used by IsExpired to determine the current time.
// Defaults to time.Now if CurrentTime is not set. Available for testing
// to be able to mock out the current time.
CurrentTime func() time.Time
}
// SetExpiration sets the expiration IsExpired will check when called.
//
// If window is greater than 0 the expiration time will be reduced by the
// window value.
//
// Using a window is helpful to trigger credentials to expire sooner than
// the expiration time given to ensure no requests are made with expired
// tokens.
func (e *Expiry) SetExpiration(expiration time.Time, window time.Duration) {
e.expiration = expiration
if window > 0 {
e.expiration = e.expiration.Add(-window)
}
}
// IsExpired returns if the credentials are expired.
func (e *Expiry) IsExpired() bool {
if e.CurrentTime == nil {
e.CurrentTime = time.Now
}
return e.expiration.Before(e.CurrentTime())
}
// A Credentials provides synchronous safe retrieval of AWS credentials Value.
// Credentials will cache the credentials value until they expire. Once the value
// expires the next Get will attempt to retrieve valid credentials.
//
// Credentials is safe to use across multiple goroutines and will manage the
// synchronous state so the Providers do not need to implement their own
// synchronization.
//
// The first Credentials.Get() will always call Provider.Retrieve() to get the
// first instance of the credentials Value. All calls to Get() after that
// will return the cached credentials Value until IsExpired() returns true.
type Credentials struct {
creds Value
forceRefresh bool
m sync.Mutex
provider Provider
}
// NewCredentials returns a pointer to a new Credentials with the provider set.
func NewCredentials(provider Provider) *Credentials {
return &Credentials{
provider: provider,
forceRefresh: true,
}
}
// Get returns the credentials value, or error if the credentials Value failed
// to be retrieved.
//
// Will return the cached credentials Value if it has not expired. If the
// credentials Value has expired the Provider's Retrieve() will be called
// to refresh the credentials.
//
// If Credentials.Expire() was called the credentials Value will be force
// expired, and the next call to Get() will cause them to be refreshed.
func (c *Credentials) Get() (Value, error) {
c.m.Lock()
defer c.m.Unlock()
if c.isExpired() {
creds, err := c.provider.Retrieve()
if err != nil {
return Value{}, err
}
c.creds = creds
c.forceRefresh = false
}
return c.creds, nil
}
// Expire expires the credentials and forces them to be retrieved on the
// next call to Get().
//
// This will override the Provider's expired state, and force Credentials
// to call the Provider's Retrieve().
func (c *Credentials) Expire() {
c.m.Lock()
defer c.m.Unlock()
c.forceRefresh = true
}
// IsExpired returns if the credentials are no longer valid, and need
// to be retrieved.
//
// If the Credentials were forced to be expired with Expire() this will
// reflect that override.
func (c *Credentials) IsExpired() bool {
c.m.Lock()
defer c.m.Unlock()
return c.isExpired()
}
// isExpired helper method wrapping the definition of expired credentials.
func (c *Credentials) isExpired() bool {
return c.forceRefresh || c.provider.IsExpired()
}
@@ -1,62 +0,0 @@
package credentials
import (
"testing"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/stretchr/testify/assert"
)
type stubProvider struct {
creds Value
expired bool
err error
}
func (s *stubProvider) Retrieve() (Value, error) {
s.expired = false
return s.creds, s.err
}
func (s *stubProvider) IsExpired() bool {
return s.expired
}
func TestCredentialsGet(t *testing.T) {
c := NewCredentials(&stubProvider{
creds: Value{
AccessKeyID: "AKID",
SecretAccessKey: "SECRET",
SessionToken: "",
},
expired: true,
})
creds, err := c.Get()
assert.Nil(t, err, "Expected no error")
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect session token to be empty")
}
func TestCredentialsGetWithError(t *testing.T) {
c := NewCredentials(&stubProvider{err: awserr.New("provider error", "", nil), expired: true})
_, err := c.Get()
assert.Equal(t, "provider error", err.(awserr.Error).Code(), "Expected provider error")
}
func TestCredentialsExpire(t *testing.T) {
stub := &stubProvider{}
c := NewCredentials(stub)
stub.expired = false
assert.True(t, c.IsExpired(), "Expected to start out expired")
c.Expire()
assert.True(t, c.IsExpired(), "Expected to be expired")
c.forceRefresh = false
assert.False(t, c.IsExpired(), "Expected not to be expired")
stub.expired = true
assert.True(t, c.IsExpired(), "Expected to be expired")
}
@@ -1,159 +0,0 @@
package ec2rolecreds_test
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/session"
)
const credsRespTmpl = `{
"Code": "Success",
"Type": "AWS-HMAC",
"AccessKeyId" : "accessKey",
"SecretAccessKey" : "secret",
"Token" : "token",
"Expiration" : "%s",
"LastUpdated" : "2009-11-23T0:00:00Z"
}`
const credsFailRespTmpl = `{
"Code": "ErrorCode",
"Message": "ErrorMsg",
"LastUpdated": "2009-11-23T0:00:00Z"
}`
func initTestServer(expireOn string, failAssume bool) *httptest.Server {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/latest/meta-data/iam/security-credentials" {
fmt.Fprintln(w, "RoleName")
} else if r.URL.Path == "/latest/meta-data/iam/security-credentials/RoleName" {
if failAssume {
fmt.Fprintf(w, credsFailRespTmpl)
} else {
fmt.Fprintf(w, credsRespTmpl, expireOn)
}
} else {
http.Error(w, "bad request", http.StatusBadRequest)
}
}))
return server
}
func TestEC2RoleProvider(t *testing.T) {
server := initTestServer("2014-12-16T01:51:37Z", false)
defer server.Close()
p := &ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error, %v", err)
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
}
func TestEC2RoleProviderFailAssume(t *testing.T) {
server := initTestServer("2014-12-16T01:51:37Z", true)
defer server.Close()
p := &ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
}
creds, err := p.Retrieve()
assert.Error(t, err, "Expect error")
e := err.(awserr.Error)
assert.Equal(t, "ErrorCode", e.Code())
assert.Equal(t, "ErrorMsg", e.Message())
assert.Nil(t, e.OrigErr())
assert.Equal(t, "", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "", creds.SessionToken, "Expect session token to match")
}
func TestEC2RoleProviderIsExpired(t *testing.T) {
server := initTestServer("2014-12-16T01:51:37Z", false)
defer server.Close()
p := &ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
}
p.CurrentTime = func() time.Time {
return time.Date(2014, 12, 15, 21, 26, 0, 0, time.UTC)
}
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
_, err := p.Retrieve()
assert.Nil(t, err, "Expect no error, %v", err)
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
p.CurrentTime = func() time.Time {
return time.Date(3014, 12, 15, 21, 26, 0, 0, time.UTC)
}
assert.True(t, p.IsExpired(), "Expect creds to be expired.")
}
func TestEC2RoleProviderExpiryWindowIsExpired(t *testing.T) {
server := initTestServer("2014-12-16T01:51:37Z", false)
defer server.Close()
p := &ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
ExpiryWindow: time.Hour * 1,
}
p.CurrentTime = func() time.Time {
return time.Date(2014, 12, 15, 0, 51, 37, 0, time.UTC)
}
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve.")
_, err := p.Retrieve()
assert.Nil(t, err, "Expect no error, %v", err)
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve.")
p.CurrentTime = func() time.Time {
return time.Date(2014, 12, 16, 0, 55, 37, 0, time.UTC)
}
assert.True(t, p.IsExpired(), "Expect creds to be expired.")
}
func BenchmarkEC3RoleProvider(b *testing.B) {
server := initTestServer("2014-12-16T01:51:37Z", false)
defer server.Close()
p := &ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")}),
}
_, err := p.Retrieve()
if err != nil {
b.Fatal(err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
if _, err := p.Retrieve(); err != nil {
b.Fatal(err)
}
}
}
@@ -1,70 +0,0 @@
package credentials
import (
"github.com/stretchr/testify/assert"
"os"
"testing"
)
func TestEnvProviderRetrieve(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_ACCESS_KEY_ID", "access")
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
os.Setenv("AWS_SESSION_TOKEN", "token")
e := EnvProvider{}
creds, err := e.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "access", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
}
func TestEnvProviderIsExpired(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_ACCESS_KEY_ID", "access")
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
os.Setenv("AWS_SESSION_TOKEN", "token")
e := EnvProvider{}
assert.True(t, e.IsExpired(), "Expect creds to be expired before retrieve.")
_, err := e.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.False(t, e.IsExpired(), "Expect creds to not be expired after retrieve.")
}
func TestEnvProviderNoAccessKeyID(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_SECRET_ACCESS_KEY", "secret")
e := EnvProvider{}
creds, err := e.Retrieve()
assert.Equal(t, ErrAccessKeyIDNotFound, err, "ErrAccessKeyIDNotFound expected, but was %#v error: %#v", creds, err)
}
func TestEnvProviderNoSecretAccessKey(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_ACCESS_KEY_ID", "access")
e := EnvProvider{}
creds, err := e.Retrieve()
assert.Equal(t, ErrSecretAccessKeyNotFound, err, "ErrSecretAccessKeyNotFound expected, but was %#v error: %#v", creds, err)
}
func TestEnvProviderAlternateNames(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_ACCESS_KEY", "access")
os.Setenv("AWS_SECRET_KEY", "secret")
e := EnvProvider{}
creds, err := e.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "access", creds.AccessKeyID, "Expected access key ID")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expected secret access key")
assert.Empty(t, creds.SessionToken, "Expected no token")
}
@@ -1,12 +0,0 @@
[default]
aws_access_key_id = accessKey
aws_secret_access_key = secret
aws_session_token = token
[no_token]
aws_access_key_id = accessKey
aws_secret_access_key = secret
[with_colon]
aws_access_key_id: accessKey
aws_secret_access_key: secret
@@ -1,147 +0,0 @@
package credentials
import (
"fmt"
"os"
"path/filepath"
"github.com/go-ini/ini"
"github.com/aws/aws-sdk-go/aws/awserr"
)
var (
// ErrSharedCredentialsHomeNotFound is emitted when the user directory cannot be found.
//
// @readonly
ErrSharedCredentialsHomeNotFound = awserr.New("UserHomeNotFound", "user home directory not found.", nil)
)
// A SharedCredentialsProvider retrieves credentials from the current user's home
// directory, and keeps track if those credentials are expired.
//
// Profile ini file example: $HOME/.aws/credentials
type SharedCredentialsProvider struct {
// Path to the shared credentials file.
//
// If empty will look for "AWS_SHARED_CREDENTIALS_FILE" env variable. If the
// env value is empty will default to current user's home directory.
// Linux/OSX: "$HOME/.aws/credentials"
// Windows: "%USERPROFILE%\.aws\credentials"
Filename string
// AWS Profile to extract credentials from the shared credentials file. If empty
// will default to environment variable "AWS_PROFILE" or "default" if
// environment variable is also not set.
Profile string
// retrieved states if the credentials have been successfully retrieved.
retrieved bool
}
// NewSharedCredentials returns a pointer to a new Credentials object
// wrapping the Profile file provider.
func NewSharedCredentials(filename, profile string) *Credentials {
return NewCredentials(&SharedCredentialsProvider{
Filename: filename,
Profile: profile,
})
}
// Retrieve reads and extracts the shared credentials from the current
// users home directory.
func (p *SharedCredentialsProvider) Retrieve() (Value, error) {
p.retrieved = false
filename, err := p.filename()
if err != nil {
return Value{}, err
}
creds, err := loadProfile(filename, p.profile())
if err != nil {
return Value{}, err
}
p.retrieved = true
return creds, nil
}
// IsExpired returns if the shared credentials have expired.
func (p *SharedCredentialsProvider) IsExpired() bool {
return !p.retrieved
}
// loadProfiles loads from the file pointed to by shared credentials filename for profile.
// The credentials retrieved from the profile will be returned or error. Error will be
// returned if it fails to read from the file, or the data is invalid.
func loadProfile(filename, profile string) (Value, error) {
config, err := ini.Load(filename)
if err != nil {
return Value{}, awserr.New("SharedCredsLoad", "failed to load shared credentials file", err)
}
iniProfile, err := config.GetSection(profile)
if err != nil {
return Value{}, awserr.New("SharedCredsLoad", "failed to get profile", err)
}
id, err := iniProfile.GetKey("aws_access_key_id")
if err != nil {
return Value{}, awserr.New("SharedCredsAccessKey",
fmt.Sprintf("shared credentials %s in %s did not contain aws_access_key_id", profile, filename),
err)
}
secret, err := iniProfile.GetKey("aws_secret_access_key")
if err != nil {
return Value{}, awserr.New("SharedCredsSecret",
fmt.Sprintf("shared credentials %s in %s did not contain aws_secret_access_key", profile, filename),
nil)
}
// Default to empty string if not found
token := iniProfile.Key("aws_session_token")
return Value{
AccessKeyID: id.String(),
SecretAccessKey: secret.String(),
SessionToken: token.String(),
}, nil
}
// filename returns the filename to use to read AWS shared credentials.
//
// Will return an error if the user's home directory path cannot be found.
func (p *SharedCredentialsProvider) filename() (string, error) {
if p.Filename == "" {
if p.Filename = os.Getenv("AWS_SHARED_CREDENTIALS_FILE"); p.Filename != "" {
return p.Filename, nil
}
homeDir := os.Getenv("HOME") // *nix
if homeDir == "" { // Windows
homeDir = os.Getenv("USERPROFILE")
}
if homeDir == "" {
return "", ErrSharedCredentialsHomeNotFound
}
p.Filename = filepath.Join(homeDir, ".aws", "credentials")
}
return p.Filename, nil
}
// profile returns the AWS shared credentials profile. If empty will read
// environment variable "AWS_PROFILE". If that is not set profile will
// return "default".
func (p *SharedCredentialsProvider) profile() string {
if p.Profile == "" {
p.Profile = os.Getenv("AWS_PROFILE")
}
if p.Profile == "" {
p.Profile = "default"
}
return p.Profile
}
@@ -1,100 +0,0 @@
package credentials
import (
"github.com/stretchr/testify/assert"
"os"
"testing"
)
func TestSharedCredentialsProvider(t *testing.T) {
os.Clearenv()
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
}
func TestSharedCredentialsProviderIsExpired(t *testing.T) {
os.Clearenv()
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
assert.True(t, p.IsExpired(), "Expect creds to be expired before retrieve")
_, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.False(t, p.IsExpired(), "Expect creds to not be expired after retrieve")
}
func TestSharedCredentialsProviderWithAWS_SHARED_CREDENTIALS_FILE(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_SHARED_CREDENTIALS_FILE", "example.ini")
p := SharedCredentialsProvider{}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "token", creds.SessionToken, "Expect session token to match")
}
func TestSharedCredentialsProviderWithAWS_PROFILE(t *testing.T) {
os.Clearenv()
os.Setenv("AWS_PROFILE", "no_token")
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect no token")
}
func TestSharedCredentialsProviderWithoutTokenFromProfile(t *testing.T) {
os.Clearenv()
p := SharedCredentialsProvider{Filename: "example.ini", Profile: "no_token"}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect no token")
}
func TestSharedCredentialsProviderColonInCredFile(t *testing.T) {
os.Clearenv()
p := SharedCredentialsProvider{Filename: "example.ini", Profile: "with_colon"}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "accessKey", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "secret", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect no token")
}
func BenchmarkSharedCredentialsProvider(b *testing.B) {
os.Clearenv()
p := SharedCredentialsProvider{Filename: "example.ini", Profile: ""}
_, err := p.Retrieve()
if err != nil {
b.Fatal(err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := p.Retrieve()
if err != nil {
b.Fatal(err)
}
}
}
@@ -1,44 +0,0 @@
package credentials
import (
"github.com/aws/aws-sdk-go/aws/awserr"
)
var (
// ErrStaticCredentialsEmpty is emitted when static credentials are empty.
//
// @readonly
ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil)
)
// A StaticProvider is a set of credentials which are set pragmatically,
// and will never expire.
type StaticProvider struct {
Value
}
// NewStaticCredentials returns a pointer to a new Credentials object
// wrapping a static credentials value provider.
func NewStaticCredentials(id, secret, token string) *Credentials {
return NewCredentials(&StaticProvider{Value: Value{
AccessKeyID: id,
SecretAccessKey: secret,
SessionToken: token,
}})
}
// Retrieve returns the credentials or error if the credentials are invalid.
func (s *StaticProvider) Retrieve() (Value, error) {
if s.AccessKeyID == "" || s.SecretAccessKey == "" {
return Value{}, ErrStaticCredentialsEmpty
}
return s.Value, nil
}
// IsExpired returns if the credentials are expired.
//
// For StaticProvider, the credentials never expired.
func (s *StaticProvider) IsExpired() bool {
return false
}
@@ -1,34 +0,0 @@
package credentials
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestStaticProviderGet(t *testing.T) {
s := StaticProvider{
Value: Value{
AccessKeyID: "AKID",
SecretAccessKey: "SECRET",
SessionToken: "",
},
}
creds, err := s.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "AKID", creds.AccessKeyID, "Expect access key ID to match")
assert.Equal(t, "SECRET", creds.SecretAccessKey, "Expect secret access key to match")
assert.Empty(t, creds.SessionToken, "Expect no session token")
}
func TestStaticProviderIsExpired(t *testing.T) {
s := StaticProvider{
Value: Value{
AccessKeyID: "AKID",
SecretAccessKey: "SECRET",
SessionToken: "",
},
}
assert.False(t, s.IsExpired(), "Expect static credentials to never expire")
}
@@ -1,130 +0,0 @@
// Package stscreds are credential Providers to retrieve STS AWS credentials.
//
// STS provides multiple ways to retrieve credentials which can be used when making
// future AWS service API operation calls.
package stscreds
import (
"fmt"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/service/sts"
)
// AssumeRoler represents the minimal subset of the STS client API used by this provider.
type AssumeRoler interface {
AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)
}
// DefaultDuration is the default amount of time in minutes that the credentials
// will be valid for.
var DefaultDuration = time.Duration(15) * time.Minute
// AssumeRoleProvider retrieves temporary credentials from the STS service, and
// keeps track of their expiration time. This provider must be used explicitly,
// as it is not included in the credentials chain.
type AssumeRoleProvider struct {
credentials.Expiry
// STS client to make assume role request with.
Client AssumeRoler
// Role to be assumed.
RoleARN string
// Session name, if you wish to reuse the credentials elsewhere.
RoleSessionName string
// Expiry duration of the STS credentials. Defaults to 15 minutes if not set.
Duration time.Duration
// Optional ExternalID to pass along, defaults to nil if not set.
ExternalID *string
// ExpiryWindow will allow the credentials to trigger refreshing prior to
// the credentials actually expiring. This is beneficial so race conditions
// with expiring credentials do not cause request to fail unexpectedly
// due to ExpiredTokenException exceptions.
//
// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true
// 10 seconds before the credentials are actually expired.
//
// If ExpiryWindow is 0 or less it will be ignored.
ExpiryWindow time.Duration
}
// NewCredentials returns a pointer to a new Credentials object wrapping the
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
// role will be named after a nanosecond timestamp of this operation.
//
// Takes a Config provider to create the STS client. The ConfigProvider is
// satisfied by the session.Session type.
func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {
p := &AssumeRoleProvider{
Client: sts.New(c),
RoleARN: roleARN,
Duration: DefaultDuration,
}
for _, option := range options {
option(p)
}
return credentials.NewCredentials(p)
}
// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
// role will be named after a nanosecond timestamp of this operation.
//
// Takes an AssumeRoler which can be satisfiede by the STS client.
func NewCredentialsWithClient(svc AssumeRoler, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {
p := &AssumeRoleProvider{
Client: svc,
RoleARN: roleARN,
Duration: DefaultDuration,
}
for _, option := range options {
option(p)
}
return credentials.NewCredentials(p)
}
// Retrieve generates a new set of temporary credentials using STS.
func (p *AssumeRoleProvider) Retrieve() (credentials.Value, error) {
// Apply defaults where parameters are not set.
if p.RoleSessionName == "" {
// Try to work out a role name that will hopefully end up unique.
p.RoleSessionName = fmt.Sprintf("%d", time.Now().UTC().UnixNano())
}
if p.Duration == 0 {
// Expire as often as AWS permits.
p.Duration = DefaultDuration
}
roleOutput, err := p.Client.AssumeRole(&sts.AssumeRoleInput{
DurationSeconds: aws.Int64(int64(p.Duration / time.Second)),
RoleArn: aws.String(p.RoleARN),
RoleSessionName: aws.String(p.RoleSessionName),
ExternalId: p.ExternalID,
})
if err != nil {
return credentials.Value{}, err
}
// We will proactively generate new credentials before they expire.
p.SetExpiration(*roleOutput.Credentials.Expiration, p.ExpiryWindow)
return credentials.Value{
AccessKeyID: *roleOutput.Credentials.AccessKeyId,
SecretAccessKey: *roleOutput.Credentials.SecretAccessKey,
SessionToken: *roleOutput.Credentials.SessionToken,
}, nil
}
@@ -1,56 +0,0 @@
package stscreds
import (
"testing"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/sts"
"github.com/stretchr/testify/assert"
)
type stubSTS struct {
}
func (s *stubSTS) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) {
expiry := time.Now().Add(60 * time.Minute)
return &sts.AssumeRoleOutput{
Credentials: &sts.Credentials{
// Just reflect the role arn to the provider.
AccessKeyId: input.RoleArn,
SecretAccessKey: aws.String("assumedSecretAccessKey"),
SessionToken: aws.String("assumedSessionToken"),
Expiration: &expiry,
},
}, nil
}
func TestAssumeRoleProvider(t *testing.T) {
stub := &stubSTS{}
p := &AssumeRoleProvider{
Client: stub,
RoleARN: "roleARN",
}
creds, err := p.Retrieve()
assert.Nil(t, err, "Expect no error")
assert.Equal(t, "roleARN", creds.AccessKeyID, "Expect access key ID to be reflected role ARN")
assert.Equal(t, "assumedSecretAccessKey", creds.SecretAccessKey, "Expect secret access key to match")
assert.Equal(t, "assumedSessionToken", creds.SessionToken, "Expect session token to match")
}
func BenchmarkAssumeRoleProvider(b *testing.B) {
stub := &stubSTS{}
p := &AssumeRoleProvider{
Client: stub,
RoleARN: "roleARN",
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
if _, err := p.Retrieve(); err != nil {
b.Fatal(err)
}
}
}
@@ -1,76 +0,0 @@
// Package defaults is a collection of helpers to retrieve the SDK's default
// configuration and handlers.
package defaults
import (
"net/http"
"os"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/private/endpoints"
)
// A Defaults provides a collection of default values for SDK clients.
type Defaults struct {
Config *aws.Config
Handlers request.Handlers
}
// Get returns the SDK's default values with Config and handlers pre-configured.
func Get() Defaults {
cfg := Config()
handlers := Handlers()
cfg.Credentials = CredChain(cfg, handlers)
return Defaults{
Config: cfg,
Handlers: handlers,
}
}
// Config returns the default configuration.
func Config() *aws.Config {
return aws.NewConfig().
WithCredentials(credentials.AnonymousCredentials).
WithRegion(os.Getenv("AWS_REGION")).
WithHTTPClient(http.DefaultClient).
WithMaxRetries(aws.UseServiceDefaultRetries).
WithLogger(aws.NewDefaultLogger()).
WithLogLevel(aws.LogOff).
WithSleepDelay(time.Sleep)
}
// Handlers returns the default request handlers.
func Handlers() request.Handlers {
var handlers request.Handlers
handlers.Validate.PushBackNamed(corehandlers.ValidateEndpointHandler)
handlers.Build.PushBackNamed(corehandlers.SDKVersionUserAgentHandler)
handlers.Sign.PushBackNamed(corehandlers.BuildContentLengthHandler)
handlers.Send.PushBackNamed(corehandlers.SendHandler)
handlers.AfterRetry.PushBackNamed(corehandlers.AfterRetryHandler)
handlers.ValidateResponse.PushBackNamed(corehandlers.ValidateResponseHandler)
return handlers
}
// CredChain returns the default credential chain.
func CredChain(cfg *aws.Config, handlers request.Handlers) *credentials.Credentials {
endpoint, signingRegion := endpoints.EndpointForRegion(ec2metadata.ServiceName, *cfg.Region, true)
return credentials.NewChainCredentials(
[]credentials.Provider{
&credentials.EnvProvider{},
&credentials.SharedCredentialsProvider{Filename: "", Profile: ""},
&ec2rolecreds.EC2RoleProvider{
Client: ec2metadata.NewClient(*cfg, handlers, endpoint, signingRegion),
ExpiryWindow: 5 * time.Minute,
},
})
}
-43
View File
@@ -1,43 +0,0 @@
package ec2metadata
import (
"path"
"github.com/aws/aws-sdk-go/aws/request"
)
// GetMetadata uses the path provided to request
func (c *EC2Metadata) GetMetadata(p string) (string, error) {
op := &request.Operation{
Name: "GetMetadata",
HTTPMethod: "GET",
HTTPPath: path.Join("/", "meta-data", p),
}
output := &metadataOutput{}
req := c.NewRequest(op, nil, output)
return output.Content, req.Send()
}
// Region returns the region the instance is running in.
func (c *EC2Metadata) Region() (string, error) {
resp, err := c.GetMetadata("placement/availability-zone")
if err != nil {
return "", err
}
// returns region without the suffix. Eg: us-west-2a becomes us-west-2
return resp[:len(resp)-1], nil
}
// Available returns if the application has access to the EC2 Metadata service.
// Can be used to determine if application is running within an EC2 Instance and
// the metadata service is available.
func (c *EC2Metadata) Available() bool {
if _, err := c.GetMetadata("instance-id"); err != nil {
return false
}
return true
}
@@ -1,101 +0,0 @@
package ec2metadata_test
import (
"bytes"
"io/ioutil"
"net/http"
"net/http/httptest"
"path"
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/ec2metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/session"
)
func initTestServer(path string, resp string) *httptest.Server {
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.RequestURI != path {
http.Error(w, "not found", http.StatusNotFound)
return
}
w.Write([]byte(resp))
}))
}
func TestEndpoint(t *testing.T) {
c := ec2metadata.New(session.New())
op := &request.Operation{
Name: "GetMetadata",
HTTPMethod: "GET",
HTTPPath: path.Join("/", "meta-data", "testpath"),
}
req := c.NewRequest(op, nil, nil)
assert.Equal(t, "http://169.254.169.254/latest", req.ClientInfo.Endpoint)
assert.Equal(t, "http://169.254.169.254/latest/meta-data/testpath", req.HTTPRequest.URL.String())
}
func TestGetMetadata(t *testing.T) {
server := initTestServer(
"/latest/meta-data/some/path",
"success", // real response includes suffix
)
defer server.Close()
c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
resp, err := c.GetMetadata("some/path")
assert.NoError(t, err)
assert.Equal(t, "success", resp)
}
func TestGetRegion(t *testing.T) {
server := initTestServer(
"/latest/meta-data/placement/availability-zone",
"us-west-2a", // real response includes suffix
)
defer server.Close()
c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
region, err := c.Region()
assert.NoError(t, err)
assert.Equal(t, "us-west-2", region)
}
func TestMetadataAvailable(t *testing.T) {
server := initTestServer(
"/latest/meta-data/instance-id",
"instance-id",
)
defer server.Close()
c := ec2metadata.New(session.New(), &aws.Config{Endpoint: aws.String(server.URL + "/latest")})
available := c.Available()
assert.True(t, available)
}
func TestMetadataNotAvailable(t *testing.T) {
c := ec2metadata.New(session.New())
c.Handlers.Send.Clear()
c.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &http.Response{
StatusCode: int(0),
Status: http.StatusText(int(0)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
r.Error = awserr.New("RequestError", "send request failed", nil)
r.Retryable = aws.Bool(true) // network errors are retryable
})
available := c.Available()
assert.False(t, available)
}
@@ -1,116 +0,0 @@
// Package ec2metadata provides the client for making API calls to the
// EC2 Metadata service.
package ec2metadata
import (
"io/ioutil"
"net"
"net/http"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
)
// ServiceName is the name of the service.
const ServiceName = "ec2metadata"
// A EC2Metadata is an EC2 Metadata service Client.
type EC2Metadata struct {
*client.Client
}
// New creates a new instance of the EC2Metadata client with a session.
// This client is safe to use across multiple goroutines.
//
// Example:
// // Create a EC2Metadata client from just a session.
// svc := ec2metadata.New(mySession)
//
// // Create a EC2Metadata client with additional configuration
// svc := ec2metadata.New(mySession, aws.NewConfig().WithLogLevel(aws.LogDebugHTTPBody))
func New(p client.ConfigProvider, cfgs ...*aws.Config) *EC2Metadata {
c := p.ClientConfig(ServiceName, cfgs...)
return NewClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
}
// NewClient returns a new EC2Metadata client. Should be used to create
// a client when not using a session. Generally using just New with a session
// is preferred.
func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string, opts ...func(*client.Client)) *EC2Metadata {
// If the default http client is provided, replace it with a custom
// client using default timeouts.
if cfg.HTTPClient == http.DefaultClient {
cfg.HTTPClient = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
// use a shorter timeout than default because the metadata
// service is local if it is running, and to fail faster
// if not running on an ec2 instance.
Timeout: 5 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
TLSHandshakeTimeout: 10 * time.Second,
},
}
}
svc := &EC2Metadata{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: ServiceName,
Endpoint: endpoint,
APIVersion: "latest",
},
handlers,
),
}
svc.Handlers.Unmarshal.PushBack(unmarshalHandler)
svc.Handlers.UnmarshalError.PushBack(unmarshalError)
svc.Handlers.Validate.Clear()
svc.Handlers.Validate.PushBack(validateEndpointHandler)
// Add additional options to the service config
for _, option := range opts {
option(svc.Client)
}
return svc
}
type metadataOutput struct {
Content string
}
func unmarshalHandler(r *request.Request) {
defer r.HTTPResponse.Body.Close()
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
if err != nil {
r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata respose", err)
}
data := r.Data.(*metadataOutput)
data.Content = string(b)
}
func unmarshalError(r *request.Request) {
defer r.HTTPResponse.Body.Close()
_, err := ioutil.ReadAll(r.HTTPResponse.Body)
if err != nil {
r.Error = awserr.New("SerializationError", "unable to unmarshal EC2 metadata error respose", err)
}
// TODO extract the error...
}
func validateEndpointHandler(r *request.Request) {
if r.ClientInfo.Endpoint == "" {
r.Error = aws.ErrMissingEndpoint
}
}
-98
View File
@@ -1,98 +0,0 @@
package aws
import (
"log"
"os"
)
// A LogLevelType defines the level logging should be performed at. Used to instruct
// the SDK which statements should be logged.
type LogLevelType uint
// LogLevel returns the pointer to a LogLevel. Should be used to workaround
// not being able to take the address of a non-composite literal.
func LogLevel(l LogLevelType) *LogLevelType {
return &l
}
// Value returns the LogLevel value or the default value LogOff if the LogLevel
// is nil. Safe to use on nil value LogLevelTypes.
func (l *LogLevelType) Value() LogLevelType {
if l != nil {
return *l
}
return LogOff
}
// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be
// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If
// LogLevel is nill, will default to LogOff comparison.
func (l *LogLevelType) Matches(v LogLevelType) bool {
c := l.Value()
return c&v == v
}
// AtLeast returns true if this LogLevel is at least high enough to satisfies v.
// Is safe to use on nil value LogLevelTypes. If LogLevel is nill, will default
// to LogOff comparison.
func (l *LogLevelType) AtLeast(v LogLevelType) bool {
c := l.Value()
return c >= v
}
const (
// LogOff states that no logging should be performed by the SDK. This is the
// default state of the SDK, and should be use to disable all logging.
LogOff LogLevelType = iota * 0x1000
// LogDebug state that debug output should be logged by the SDK. This should
// be used to inspect request made and responses received.
LogDebug
)
// Debug Logging Sub Levels
const (
// LogDebugWithSigning states that the SDK should log request signing and
// presigning events. This should be used to log the signing details of
// requests for debugging. Will also enable LogDebug.
LogDebugWithSigning LogLevelType = LogDebug | (1 << iota)
// LogDebugWithHTTPBody states the SDK should log HTTP request and response
// HTTP bodys in addition to the headers and path. This should be used to
// see the body content of requests and responses made while using the SDK
// Will also enable LogDebug.
LogDebugWithHTTPBody
// LogDebugWithRequestRetries states the SDK should log when service requests will
// be retried. This should be used to log when you want to log when service
// requests are being retried. Will also enable LogDebug.
LogDebugWithRequestRetries
// LogDebugWithRequestErrors states the SDK should log when service requests fail
// to build, send, validate, or unmarshal.
LogDebugWithRequestErrors
)
// A Logger is a minimalistic interface for the SDK to log messages to. Should
// be used to provide custom logging writers for the SDK to use.
type Logger interface {
Log(...interface{})
}
// NewDefaultLogger returns a Logger which will write log messages to stdout, and
// use same formatting runes as the stdlib log.Logger
func NewDefaultLogger() Logger {
return &defaultLogger{
logger: log.New(os.Stdout, "", log.LstdFlags),
}
}
// A defaultLogger provides a minimalistic logger satisfying the Logger interface.
type defaultLogger struct {
logger *log.Logger
}
// Log logs the parameters to the stdlib logger. See log.Println.
func (l defaultLogger) Log(args ...interface{}) {
l.logger.Println(args...)
}
-140
View File
@@ -1,140 +0,0 @@
package request
import (
"fmt"
"strings"
)
// A Handlers provides a collection of request handlers for various
// stages of handling requests.
type Handlers struct {
Validate HandlerList
Build HandlerList
Sign HandlerList
Send HandlerList
ValidateResponse HandlerList
Unmarshal HandlerList
UnmarshalMeta HandlerList
UnmarshalError HandlerList
Retry HandlerList
AfterRetry HandlerList
}
// Copy returns of this handler's lists.
func (h *Handlers) Copy() Handlers {
return Handlers{
Validate: h.Validate.copy(),
Build: h.Build.copy(),
Sign: h.Sign.copy(),
Send: h.Send.copy(),
ValidateResponse: h.ValidateResponse.copy(),
Unmarshal: h.Unmarshal.copy(),
UnmarshalError: h.UnmarshalError.copy(),
UnmarshalMeta: h.UnmarshalMeta.copy(),
Retry: h.Retry.copy(),
AfterRetry: h.AfterRetry.copy(),
}
}
// Clear removes callback functions for all handlers
func (h *Handlers) Clear() {
h.Validate.Clear()
h.Build.Clear()
h.Send.Clear()
h.Sign.Clear()
h.Unmarshal.Clear()
h.UnmarshalMeta.Clear()
h.UnmarshalError.Clear()
h.ValidateResponse.Clear()
h.Retry.Clear()
h.AfterRetry.Clear()
}
// A HandlerList manages zero or more handlers in a list.
type HandlerList struct {
list []NamedHandler
}
// A NamedHandler is a struct that contains a name and function callback.
type NamedHandler struct {
Name string
Fn func(*Request)
}
// copy creates a copy of the handler list.
func (l *HandlerList) copy() HandlerList {
var n HandlerList
n.list = append([]NamedHandler{}, l.list...)
return n
}
// Clear clears the handler list.
func (l *HandlerList) Clear() {
l.list = []NamedHandler{}
}
// Len returns the number of handlers in the list.
func (l *HandlerList) Len() int {
return len(l.list)
}
// PushBack pushes handler f to the back of the handler list.
func (l *HandlerList) PushBack(f func(*Request)) {
l.list = append(l.list, NamedHandler{"__anonymous", f})
}
// PushFront pushes handler f to the front of the handler list.
func (l *HandlerList) PushFront(f func(*Request)) {
l.list = append([]NamedHandler{{"__anonymous", f}}, l.list...)
}
// PushBackNamed pushes named handler f to the back of the handler list.
func (l *HandlerList) PushBackNamed(n NamedHandler) {
l.list = append(l.list, n)
}
// PushFrontNamed pushes named handler f to the front of the handler list.
func (l *HandlerList) PushFrontNamed(n NamedHandler) {
l.list = append([]NamedHandler{n}, l.list...)
}
// Remove removes a NamedHandler n
func (l *HandlerList) Remove(n NamedHandler) {
newlist := []NamedHandler{}
for _, m := range l.list {
if m.Name != n.Name {
newlist = append(newlist, m)
}
}
l.list = newlist
}
// Run executes all handlers in the list with a given request object.
func (l *HandlerList) Run(r *Request) {
for _, f := range l.list {
f.Fn(r)
}
}
// MakeAddToUserAgentHandler will add the name/version pair to the User-Agent request
// header. If the extra parameters are provided they will be added as metadata to the
// name/version pair resulting in the following format.
// "name/version (extra0; extra1; ...)"
// The user agent part will be concatenated with this current request's user agent string.
func MakeAddToUserAgentHandler(name, version string, extra ...string) func(*Request) {
ua := fmt.Sprintf("%s/%s", name, version)
if len(extra) > 0 {
ua += fmt.Sprintf(" (%s)", strings.Join(extra, "; "))
}
return func(r *Request) {
AddToUserAgent(r, ua)
}
}
// MakeAddToUserAgentFreeFormHandler adds the input to the User-Agent request header.
// The input string will be concatenated with the current request's user agent string.
func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) {
return func(r *Request) {
AddToUserAgent(r, s)
}
}
@@ -1,47 +0,0 @@
package request_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/request"
)
func TestHandlerList(t *testing.T) {
s := ""
r := &request.Request{}
l := request.HandlerList{}
l.PushBack(func(r *request.Request) {
s += "a"
r.Data = s
})
l.Run(r)
assert.Equal(t, "a", s)
assert.Equal(t, "a", r.Data)
}
func TestMultipleHandlers(t *testing.T) {
r := &request.Request{}
l := request.HandlerList{}
l.PushBack(func(r *request.Request) { r.Data = nil })
l.PushFront(func(r *request.Request) { r.Data = aws.Bool(true) })
l.Run(r)
if r.Data != nil {
t.Error("Expected handler to execute")
}
}
func TestNamedHandlers(t *testing.T) {
l := request.HandlerList{}
named := request.NamedHandler{Name: "Name", Fn: func(r *request.Request) {}}
named2 := request.NamedHandler{Name: "NotName", Fn: func(r *request.Request) {}}
l.PushBackNamed(named)
l.PushBackNamed(named)
l.PushBackNamed(named2)
l.PushBack(func(r *request.Request) {})
assert.Equal(t, 4, l.Len())
l.Remove(named)
assert.Equal(t, 2, l.Len())
}
-279
View File
@@ -1,279 +0,0 @@
package request
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"reflect"
"strings"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client/metadata"
)
// A Request is the service request to be made.
type Request struct {
Config aws.Config
ClientInfo metadata.ClientInfo
Handlers Handlers
Retryer
Time time.Time
ExpireTime time.Duration
Operation *Operation
HTTPRequest *http.Request
HTTPResponse *http.Response
Body io.ReadSeeker
BodyStart int64 // offset from beginning of Body that the request body starts
Params interface{}
Error error
Data interface{}
RequestID string
RetryCount int
Retryable *bool
RetryDelay time.Duration
built bool
}
// An Operation is the service API operation to be made.
type Operation struct {
Name string
HTTPMethod string
HTTPPath string
*Paginator
}
// Paginator keeps track of pagination configuration for an API operation.
type Paginator struct {
InputTokens []string
OutputTokens []string
LimitToken string
TruncationToken string
}
// New returns a new Request pointer for the service API
// operation and parameters.
//
// Params is any value of input parameters to be the request payload.
// Data is pointer value to an object which the request's response
// payload will be deserialized to.
func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
retryer Retryer, operation *Operation, params interface{}, data interface{}) *Request {
method := operation.HTTPMethod
if method == "" {
method = "POST"
}
p := operation.HTTPPath
if p == "" {
p = "/"
}
httpReq, _ := http.NewRequest(method, "", nil)
httpReq.URL, _ = url.Parse(clientInfo.Endpoint + p)
r := &Request{
Config: cfg,
ClientInfo: clientInfo,
Handlers: handlers.Copy(),
Retryer: retryer,
Time: time.Now(),
ExpireTime: 0,
Operation: operation,
HTTPRequest: httpReq,
Body: nil,
Params: params,
Error: nil,
Data: data,
}
r.SetBufferBody([]byte{})
return r
}
// WillRetry returns if the request's can be retried.
func (r *Request) WillRetry() bool {
return r.Error != nil && aws.BoolValue(r.Retryable) && r.RetryCount < r.MaxRetries()
}
// ParamsFilled returns if the request's parameters have been populated
// and the parameters are valid. False is returned if no parameters are
// provided or invalid.
func (r *Request) ParamsFilled() bool {
return r.Params != nil && reflect.ValueOf(r.Params).Elem().IsValid()
}
// DataFilled returns true if the request's data for response deserialization
// target has been set and is a valid. False is returned if data is not
// set, or is invalid.
func (r *Request) DataFilled() bool {
return r.Data != nil && reflect.ValueOf(r.Data).Elem().IsValid()
}
// SetBufferBody will set the request's body bytes that will be sent to
// the service API.
func (r *Request) SetBufferBody(buf []byte) {
r.SetReaderBody(bytes.NewReader(buf))
}
// SetStringBody sets the body of the request to be backed by a string.
func (r *Request) SetStringBody(s string) {
r.SetReaderBody(strings.NewReader(s))
}
// SetReaderBody will set the request's body reader.
func (r *Request) SetReaderBody(reader io.ReadSeeker) {
r.HTTPRequest.Body = ioutil.NopCloser(reader)
r.Body = reader
}
// Presign returns the request's signed URL. Error will be returned
// if the signing fails.
func (r *Request) Presign(expireTime time.Duration) (string, error) {
r.ExpireTime = expireTime
r.Sign()
if r.Error != nil {
return "", r.Error
}
return r.HTTPRequest.URL.String(), nil
}
func debugLogReqError(r *Request, stage string, retrying bool, err error) {
if !r.Config.LogLevel.Matches(aws.LogDebugWithRequestErrors) {
return
}
retryStr := "not retrying"
if retrying {
retryStr = "will retry"
}
r.Config.Logger.Log(fmt.Sprintf("DEBUG: %s %s/%s failed, %s, error %v",
stage, r.ClientInfo.ServiceName, r.Operation.Name, retryStr, err))
}
// Build will build the request's object so it can be signed and sent
// to the service. Build will also validate all the request's parameters.
// Anny additional build Handlers set on this request will be run
// in the order they were set.
//
// The request will only be built once. Multiple calls to build will have
// no effect.
//
// If any Validate or Build errors occur the build will stop and the error
// which occurred will be returned.
func (r *Request) Build() error {
if !r.built {
r.Error = nil
r.Handlers.Validate.Run(r)
if r.Error != nil {
debugLogReqError(r, "Validate Request", false, r.Error)
return r.Error
}
r.Handlers.Build.Run(r)
r.built = true
}
return r.Error
}
// Sign will sign the request retuning error if errors are encountered.
//
// Send will build the request prior to signing. All Sign Handlers will
// be executed in the order they were set.
func (r *Request) Sign() error {
r.Build()
if r.Error != nil {
debugLogReqError(r, "Build Request", false, r.Error)
return r.Error
}
r.Handlers.Sign.Run(r)
return r.Error
}
// Send will send the request returning error if errors are encountered.
//
// Send will sign the request prior to sending. All Send Handlers will
// be executed in the order they were set.
func (r *Request) Send() error {
for {
r.Sign()
if r.Error != nil {
return r.Error
}
if aws.BoolValue(r.Retryable) {
if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
}
// Re-seek the body back to the original point in for a retry so that
// send will send the body's contents again in the upcoming request.
r.Body.Seek(r.BodyStart, 0)
r.HTTPRequest.Body = ioutil.NopCloser(r.Body)
}
r.Retryable = nil
r.Handlers.Send.Run(r)
if r.Error != nil {
err := r.Error
r.Handlers.Retry.Run(r)
r.Handlers.AfterRetry.Run(r)
if r.Error != nil {
debugLogReqError(r, "Send Request", false, r.Error)
return r.Error
}
debugLogReqError(r, "Send Request", true, err)
continue
}
r.Handlers.UnmarshalMeta.Run(r)
r.Handlers.ValidateResponse.Run(r)
if r.Error != nil {
err := r.Error
r.Handlers.UnmarshalError.Run(r)
r.Handlers.Retry.Run(r)
r.Handlers.AfterRetry.Run(r)
if r.Error != nil {
debugLogReqError(r, "Validate Response", false, r.Error)
return r.Error
}
debugLogReqError(r, "Validate Response", true, err)
continue
}
r.Handlers.Unmarshal.Run(r)
if r.Error != nil {
err := r.Error
r.Handlers.Retry.Run(r)
r.Handlers.AfterRetry.Run(r)
if r.Error != nil {
debugLogReqError(r, "Unmarshal Response", false, r.Error)
return r.Error
}
debugLogReqError(r, "Unmarshal Response", true, err)
continue
}
break
}
return nil
}
// AddToUserAgent adds the string to the end of the request's current user agent.
func AddToUserAgent(r *Request, s string) {
curUA := r.HTTPRequest.Header.Get("User-Agent")
if len(curUA) > 0 {
s = curUA + " " + s
}
r.HTTPRequest.Header.Set("User-Agent", s)
}
@@ -1,104 +0,0 @@
package request
import (
"reflect"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awsutil"
)
//type Paginater interface {
// HasNextPage() bool
// NextPage() *Request
// EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error
//}
// HasNextPage returns true if this request has more pages of data available.
func (r *Request) HasNextPage() bool {
return len(r.nextPageTokens()) > 0
}
// nextPageTokens returns the tokens to use when asking for the next page of
// data.
func (r *Request) nextPageTokens() []interface{} {
if r.Operation.Paginator == nil {
return nil
}
if r.Operation.TruncationToken != "" {
tr, _ := awsutil.ValuesAtPath(r.Data, r.Operation.TruncationToken)
if len(tr) == 0 {
return nil
}
switch v := tr[0].(type) {
case *bool:
if !aws.BoolValue(v) {
return nil
}
case bool:
if v == false {
return nil
}
}
}
tokens := []interface{}{}
tokenAdded := false
for _, outToken := range r.Operation.OutputTokens {
v, _ := awsutil.ValuesAtPath(r.Data, outToken)
if len(v) > 0 {
tokens = append(tokens, v[0])
tokenAdded = true
} else {
tokens = append(tokens, nil)
}
}
if !tokenAdded {
return nil
}
return tokens
}
// NextPage returns a new Request that can be executed to return the next
// page of result data. Call .Send() on this request to execute it.
func (r *Request) NextPage() *Request {
tokens := r.nextPageTokens()
if len(tokens) == 0 {
return nil
}
data := reflect.New(reflect.TypeOf(r.Data).Elem()).Interface()
nr := New(r.Config, r.ClientInfo, r.Handlers, r.Retryer, r.Operation, awsutil.CopyOf(r.Params), data)
for i, intok := range nr.Operation.InputTokens {
awsutil.SetValueAtPath(nr.Params, intok, tokens[i])
}
return nr
}
// EachPage iterates over each page of a paginated request object. The fn
// parameter should be a function with the following sample signature:
//
// func(page *T, lastPage bool) bool {
// return true // return false to stop iterating
// }
//
// Where "T" is the structure type matching the output structure of the given
// operation. For example, a request object generated by
// DynamoDB.ListTablesRequest() would expect to see dynamodb.ListTablesOutput
// as the structure "T". The lastPage value represents whether the page is
// the last page of data or not. The return value of this function should
// return true to keep iterating or false to stop.
func (r *Request) EachPage(fn func(data interface{}, isLastPage bool) (shouldContinue bool)) error {
for page := r; page != nil; page = page.NextPage() {
if err := page.Send(); err != nil {
return err
}
if getNextPage := fn(page.Data, !page.HasNextPage()); !getNextPage {
return page.Error
}
}
return nil
}
@@ -1,455 +0,0 @@
package request_test
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/awstesting/unit"
"github.com/aws/aws-sdk-go/service/dynamodb"
"github.com/aws/aws-sdk-go/service/route53"
"github.com/aws/aws-sdk-go/service/s3"
)
// Use DynamoDB methods for simplicity
func TestPaginationQueryPage(t *testing.T) {
db := dynamodb.New(unit.Session)
tokens, pages, numPages, gotToEnd := []map[string]*dynamodb.AttributeValue{}, []map[string]*dynamodb.AttributeValue{}, 0, false
reqNum := 0
resps := []*dynamodb.QueryOutput{
{
LastEvaluatedKey: map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
Count: aws.Int64(1),
Items: []map[string]*dynamodb.AttributeValue{
map[string]*dynamodb.AttributeValue{
"key": {S: aws.String("key1")},
},
},
},
{
LastEvaluatedKey: map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
Count: aws.Int64(1),
Items: []map[string]*dynamodb.AttributeValue{
map[string]*dynamodb.AttributeValue{
"key": {S: aws.String("key2")},
},
},
},
{
LastEvaluatedKey: map[string]*dynamodb.AttributeValue{},
Count: aws.Int64(1),
Items: []map[string]*dynamodb.AttributeValue{
map[string]*dynamodb.AttributeValue{
"key": {S: aws.String("key3")},
},
},
},
}
db.Handlers.Send.Clear() // mock sending
db.Handlers.Unmarshal.Clear()
db.Handlers.UnmarshalMeta.Clear()
db.Handlers.ValidateResponse.Clear()
db.Handlers.Build.PushBack(func(r *request.Request) {
in := r.Params.(*dynamodb.QueryInput)
if in == nil {
tokens = append(tokens, nil)
} else if len(in.ExclusiveStartKey) != 0 {
tokens = append(tokens, in.ExclusiveStartKey)
}
})
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &dynamodb.QueryInput{
Limit: aws.Int64(2),
TableName: aws.String("tablename"),
}
err := db.QueryPages(params, func(p *dynamodb.QueryOutput, last bool) bool {
numPages++
for _, item := range p.Items {
pages = append(pages, item)
}
if last {
if gotToEnd {
assert.Fail(t, "last=true happened twice")
}
gotToEnd = true
}
return true
})
assert.Nil(t, err)
assert.Equal(t,
[]map[string]*dynamodb.AttributeValue{
map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
}, tokens)
assert.Equal(t,
[]map[string]*dynamodb.AttributeValue{
map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key1")}},
map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key2")}},
map[string]*dynamodb.AttributeValue{"key": {S: aws.String("key3")}},
}, pages)
assert.Equal(t, 3, numPages)
assert.True(t, gotToEnd)
assert.Nil(t, params.ExclusiveStartKey)
}
// Use DynamoDB methods for simplicity
func TestPagination(t *testing.T) {
db := dynamodb.New(unit.Session)
tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
reqNum := 0
resps := []*dynamodb.ListTablesOutput{
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
{TableNames: []*string{aws.String("Table5")}},
}
db.Handlers.Send.Clear() // mock sending
db.Handlers.Unmarshal.Clear()
db.Handlers.UnmarshalMeta.Clear()
db.Handlers.ValidateResponse.Clear()
db.Handlers.Build.PushBack(func(r *request.Request) {
in := r.Params.(*dynamodb.ListTablesInput)
if in == nil {
tokens = append(tokens, "")
} else if in.ExclusiveStartTableName != nil {
tokens = append(tokens, *in.ExclusiveStartTableName)
}
})
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
numPages++
for _, t := range p.TableNames {
pages = append(pages, *t)
}
if last {
if gotToEnd {
assert.Fail(t, "last=true happened twice")
}
gotToEnd = true
}
return true
})
assert.Equal(t, []string{"Table2", "Table4"}, tokens)
assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
assert.Equal(t, 3, numPages)
assert.True(t, gotToEnd)
assert.Nil(t, err)
assert.Nil(t, params.ExclusiveStartTableName)
}
// Use DynamoDB methods for simplicity
func TestPaginationEachPage(t *testing.T) {
db := dynamodb.New(unit.Session)
tokens, pages, numPages, gotToEnd := []string{}, []string{}, 0, false
reqNum := 0
resps := []*dynamodb.ListTablesOutput{
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
{TableNames: []*string{aws.String("Table5")}},
}
db.Handlers.Send.Clear() // mock sending
db.Handlers.Unmarshal.Clear()
db.Handlers.UnmarshalMeta.Clear()
db.Handlers.ValidateResponse.Clear()
db.Handlers.Build.PushBack(func(r *request.Request) {
in := r.Params.(*dynamodb.ListTablesInput)
if in == nil {
tokens = append(tokens, "")
} else if in.ExclusiveStartTableName != nil {
tokens = append(tokens, *in.ExclusiveStartTableName)
}
})
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
req, _ := db.ListTablesRequest(params)
err := req.EachPage(func(p interface{}, last bool) bool {
numPages++
for _, t := range p.(*dynamodb.ListTablesOutput).TableNames {
pages = append(pages, *t)
}
if last {
if gotToEnd {
assert.Fail(t, "last=true happened twice")
}
gotToEnd = true
}
return true
})
assert.Equal(t, []string{"Table2", "Table4"}, tokens)
assert.Equal(t, []string{"Table1", "Table2", "Table3", "Table4", "Table5"}, pages)
assert.Equal(t, 3, numPages)
assert.True(t, gotToEnd)
assert.Nil(t, err)
}
// Use DynamoDB methods for simplicity
func TestPaginationEarlyExit(t *testing.T) {
db := dynamodb.New(unit.Session)
numPages, gotToEnd := 0, false
reqNum := 0
resps := []*dynamodb.ListTablesOutput{
{TableNames: []*string{aws.String("Table1"), aws.String("Table2")}, LastEvaluatedTableName: aws.String("Table2")},
{TableNames: []*string{aws.String("Table3"), aws.String("Table4")}, LastEvaluatedTableName: aws.String("Table4")},
{TableNames: []*string{aws.String("Table5")}},
}
db.Handlers.Send.Clear() // mock sending
db.Handlers.Unmarshal.Clear()
db.Handlers.UnmarshalMeta.Clear()
db.Handlers.ValidateResponse.Clear()
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
err := db.ListTablesPages(params, func(p *dynamodb.ListTablesOutput, last bool) bool {
numPages++
if numPages == 2 {
return false
}
if last {
if gotToEnd {
assert.Fail(t, "last=true happened twice")
}
gotToEnd = true
}
return true
})
assert.Equal(t, 2, numPages)
assert.False(t, gotToEnd)
assert.Nil(t, err)
}
func TestSkipPagination(t *testing.T) {
client := s3.New(unit.Session)
client.Handlers.Send.Clear() // mock sending
client.Handlers.Unmarshal.Clear()
client.Handlers.UnmarshalMeta.Clear()
client.Handlers.ValidateResponse.Clear()
client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = &s3.HeadBucketOutput{}
})
req, _ := client.HeadBucketRequest(&s3.HeadBucketInput{Bucket: aws.String("bucket")})
numPages, gotToEnd := 0, false
req.EachPage(func(p interface{}, last bool) bool {
numPages++
if last {
gotToEnd = true
}
return true
})
assert.Equal(t, 1, numPages)
assert.True(t, gotToEnd)
}
// Use S3 for simplicity
func TestPaginationTruncation(t *testing.T) {
client := s3.New(unit.Session)
reqNum := 0
resps := []*s3.ListObjectsOutput{
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key1")}}},
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key2")}}},
{IsTruncated: aws.Bool(false), Contents: []*s3.Object{{Key: aws.String("Key3")}}},
{IsTruncated: aws.Bool(true), Contents: []*s3.Object{{Key: aws.String("Key4")}}},
}
client.Handlers.Send.Clear() // mock sending
client.Handlers.Unmarshal.Clear()
client.Handlers.UnmarshalMeta.Clear()
client.Handlers.ValidateResponse.Clear()
client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &s3.ListObjectsInput{Bucket: aws.String("bucket")}
results := []string{}
err := client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
results = append(results, *p.Contents[0].Key)
return true
})
assert.Equal(t, []string{"Key1", "Key2", "Key3"}, results)
assert.Nil(t, err)
// Try again without truncation token at all
reqNum = 0
resps[1].IsTruncated = nil
resps[2].IsTruncated = aws.Bool(true)
results = []string{}
err = client.ListObjectsPages(params, func(p *s3.ListObjectsOutput, last bool) bool {
results = append(results, *p.Contents[0].Key)
return true
})
assert.Equal(t, []string{"Key1", "Key2"}, results)
assert.Nil(t, err)
}
func TestPaginationNilToken(t *testing.T) {
client := route53.New(unit.Session)
reqNum := 0
resps := []*route53.ListResourceRecordSetsOutput{
{
ResourceRecordSets: []*route53.ResourceRecordSet{
{Name: aws.String("first.example.com.")},
},
IsTruncated: aws.Bool(true),
NextRecordName: aws.String("second.example.com."),
NextRecordType: aws.String("MX"),
NextRecordIdentifier: aws.String("second"),
MaxItems: aws.String("1"),
},
{
ResourceRecordSets: []*route53.ResourceRecordSet{
{Name: aws.String("second.example.com.")},
},
IsTruncated: aws.Bool(true),
NextRecordName: aws.String("third.example.com."),
NextRecordType: aws.String("MX"),
MaxItems: aws.String("1"),
},
{
ResourceRecordSets: []*route53.ResourceRecordSet{
{Name: aws.String("third.example.com.")},
},
IsTruncated: aws.Bool(false),
MaxItems: aws.String("1"),
},
}
client.Handlers.Send.Clear() // mock sending
client.Handlers.Unmarshal.Clear()
client.Handlers.UnmarshalMeta.Clear()
client.Handlers.ValidateResponse.Clear()
idents := []string{}
client.Handlers.Build.PushBack(func(r *request.Request) {
p := r.Params.(*route53.ListResourceRecordSetsInput)
idents = append(idents, aws.StringValue(p.StartRecordIdentifier))
})
client.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = resps[reqNum]
reqNum++
})
params := &route53.ListResourceRecordSetsInput{
HostedZoneId: aws.String("id-zone"),
}
results := []string{}
err := client.ListResourceRecordSetsPages(params, func(p *route53.ListResourceRecordSetsOutput, last bool) bool {
results = append(results, *p.ResourceRecordSets[0].Name)
return true
})
assert.NoError(t, err)
assert.Equal(t, []string{"", "second", ""}, idents)
assert.Equal(t, []string{"first.example.com.", "second.example.com.", "third.example.com."}, results)
}
// Benchmarks
var benchResps = []*dynamodb.ListTablesOutput{
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE"), aws.String("NXT")}, LastEvaluatedTableName: aws.String("NXT")},
{TableNames: []*string{aws.String("TABLE")}},
}
var benchDb = func() *dynamodb.DynamoDB {
db := dynamodb.New(unit.Session)
db.Handlers.Send.Clear() // mock sending
db.Handlers.Unmarshal.Clear()
db.Handlers.UnmarshalMeta.Clear()
db.Handlers.ValidateResponse.Clear()
return db
}
func BenchmarkCodegenIterator(b *testing.B) {
reqNum := 0
db := benchDb()
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = benchResps[reqNum]
reqNum++
})
input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
iter := func(fn func(*dynamodb.ListTablesOutput, bool) bool) error {
page, _ := db.ListTablesRequest(input)
for ; page != nil; page = page.NextPage() {
page.Send()
out := page.Data.(*dynamodb.ListTablesOutput)
if result := fn(out, !page.HasNextPage()); page.Error != nil || !result {
return page.Error
}
}
return nil
}
for i := 0; i < b.N; i++ {
reqNum = 0
iter(func(p *dynamodb.ListTablesOutput, last bool) bool {
return true
})
}
}
func BenchmarkEachPageIterator(b *testing.B) {
reqNum := 0
db := benchDb()
db.Handlers.Unmarshal.PushBack(func(r *request.Request) {
r.Data = benchResps[reqNum]
reqNum++
})
input := &dynamodb.ListTablesInput{Limit: aws.Int64(2)}
for i := 0; i < b.N; i++ {
reqNum = 0
req, _ := db.ListTablesRequest(input)
req.EachPage(func(p interface{}, last bool) bool {
return true
})
}
}
@@ -1,261 +0,0 @@
package request_test
import (
"bytes"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"runtime"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/awstesting"
)
type testData struct {
Data string
}
func body(str string) io.ReadCloser {
return ioutil.NopCloser(bytes.NewReader([]byte(str)))
}
func unmarshal(req *request.Request) {
defer req.HTTPResponse.Body.Close()
if req.Data != nil {
json.NewDecoder(req.HTTPResponse.Body).Decode(req.Data)
}
return
}
func unmarshalError(req *request.Request) {
bodyBytes, err := ioutil.ReadAll(req.HTTPResponse.Body)
if err != nil {
req.Error = awserr.New("UnmarshaleError", req.HTTPResponse.Status, err)
return
}
if len(bodyBytes) == 0 {
req.Error = awserr.NewRequestFailure(
awserr.New("UnmarshaleError", req.HTTPResponse.Status, fmt.Errorf("empty body")),
req.HTTPResponse.StatusCode,
"",
)
return
}
var jsonErr jsonErrorResponse
if err := json.Unmarshal(bodyBytes, &jsonErr); err != nil {
req.Error = awserr.New("UnmarshaleError", "JSON unmarshal", err)
return
}
req.Error = awserr.NewRequestFailure(
awserr.New(jsonErr.Code, jsonErr.Message, nil),
req.HTTPResponse.StatusCode,
"",
)
}
type jsonErrorResponse struct {
Code string `json:"__type"`
Message string `json:"message"`
}
// test that retries occur for 5xx status codes
func TestRequestRecoverRetry5xx(t *testing.T) {
reqNum := 0
reqs := []http.Response{
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
{StatusCode: 501, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
}
s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
s.Handlers.Validate.Clear()
s.Handlers.Unmarshal.PushBack(unmarshal)
s.Handlers.UnmarshalError.PushBack(unmarshalError)
s.Handlers.Send.Clear() // mock sending
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &reqs[reqNum]
reqNum++
})
out := &testData{}
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
err := r.Send()
assert.Nil(t, err)
assert.Equal(t, 2, int(r.RetryCount))
assert.Equal(t, "valid", out.Data)
}
// test that retries occur for 4xx status codes with a response type that can be retried - see `shouldRetry`
func TestRequestRecoverRetry4xxRetryable(t *testing.T) {
reqNum := 0
reqs := []http.Response{
{StatusCode: 400, Body: body(`{"__type":"Throttling","message":"Rate exceeded."}`)},
{StatusCode: 429, Body: body(`{"__type":"ProvisionedThroughputExceededException","message":"Rate exceeded."}`)},
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
}
s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
s.Handlers.Validate.Clear()
s.Handlers.Unmarshal.PushBack(unmarshal)
s.Handlers.UnmarshalError.PushBack(unmarshalError)
s.Handlers.Send.Clear() // mock sending
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &reqs[reqNum]
reqNum++
})
out := &testData{}
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
err := r.Send()
assert.Nil(t, err)
assert.Equal(t, 2, int(r.RetryCount))
assert.Equal(t, "valid", out.Data)
}
// test that retries don't occur for 4xx status codes with a response type that can't be retried
func TestRequest4xxUnretryable(t *testing.T) {
s := awstesting.NewClient(aws.NewConfig().WithMaxRetries(10))
s.Handlers.Validate.Clear()
s.Handlers.Unmarshal.PushBack(unmarshal)
s.Handlers.UnmarshalError.PushBack(unmarshalError)
s.Handlers.Send.Clear() // mock sending
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &http.Response{StatusCode: 401, Body: body(`{"__type":"SignatureDoesNotMatch","message":"Signature does not match."}`)}
})
out := &testData{}
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
err := r.Send()
assert.NotNil(t, err)
if e, ok := err.(awserr.RequestFailure); ok {
assert.Equal(t, 401, e.StatusCode())
} else {
assert.Fail(t, "Expected error to be a service failure")
}
assert.Equal(t, "SignatureDoesNotMatch", err.(awserr.Error).Code())
assert.Equal(t, "Signature does not match.", err.(awserr.Error).Message())
assert.Equal(t, 0, int(r.RetryCount))
}
func TestRequestExhaustRetries(t *testing.T) {
delays := []time.Duration{}
sleepDelay := func(delay time.Duration) {
delays = append(delays, delay)
}
reqNum := 0
reqs := []http.Response{
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
{StatusCode: 500, Body: body(`{"__type":"UnknownError","message":"An error occurred."}`)},
}
s := awstesting.NewClient(aws.NewConfig().WithSleepDelay(sleepDelay))
s.Handlers.Validate.Clear()
s.Handlers.Unmarshal.PushBack(unmarshal)
s.Handlers.UnmarshalError.PushBack(unmarshalError)
s.Handlers.Send.Clear() // mock sending
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &reqs[reqNum]
reqNum++
})
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, nil)
err := r.Send()
assert.NotNil(t, err)
if e, ok := err.(awserr.RequestFailure); ok {
assert.Equal(t, 500, e.StatusCode())
} else {
assert.Fail(t, "Expected error to be a service failure")
}
assert.Equal(t, "UnknownError", err.(awserr.Error).Code())
assert.Equal(t, "An error occurred.", err.(awserr.Error).Message())
assert.Equal(t, 3, int(r.RetryCount))
expectDelays := []struct{ min, max time.Duration }{{30, 59}, {60, 118}, {120, 236}}
for i, v := range delays {
min := expectDelays[i].min * time.Millisecond
max := expectDelays[i].max * time.Millisecond
assert.True(t, min <= v && v <= max,
"Expect delay to be within range, i:%d, v:%s, min:%s, max:%s", i, v, min, max)
}
}
// test that the request is retried after the credentials are expired.
func TestRequestRecoverExpiredCreds(t *testing.T) {
reqNum := 0
reqs := []http.Response{
{StatusCode: 400, Body: body(`{"__type":"ExpiredTokenException","message":"expired token"}`)},
{StatusCode: 200, Body: body(`{"data":"valid"}`)},
}
s := awstesting.NewClient(&aws.Config{MaxRetries: aws.Int(10), Credentials: credentials.NewStaticCredentials("AKID", "SECRET", "")})
s.Handlers.Validate.Clear()
s.Handlers.Unmarshal.PushBack(unmarshal)
s.Handlers.UnmarshalError.PushBack(unmarshalError)
credExpiredBeforeRetry := false
credExpiredAfterRetry := false
s.Handlers.AfterRetry.PushBack(func(r *request.Request) {
credExpiredAfterRetry = r.Config.Credentials.IsExpired()
})
s.Handlers.Sign.Clear()
s.Handlers.Sign.PushBack(func(r *request.Request) {
r.Config.Credentials.Get()
})
s.Handlers.Send.Clear() // mock sending
s.Handlers.Send.PushBack(func(r *request.Request) {
r.HTTPResponse = &reqs[reqNum]
reqNum++
})
out := &testData{}
r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
err := r.Send()
assert.Nil(t, err)
assert.False(t, credExpiredBeforeRetry, "Expect valid creds before retry check")
assert.True(t, credExpiredAfterRetry, "Expect expired creds after retry check")
assert.False(t, s.Config.Credentials.IsExpired(), "Expect valid creds after cred expired recovery")
assert.Equal(t, 1, int(r.RetryCount))
assert.Equal(t, "valid", out.Data)
}
func TestMakeAddtoUserAgentHandler(t *testing.T) {
fn := request.MakeAddToUserAgentHandler("name", "version", "extra1", "extra2")
r := &request.Request{HTTPRequest: &http.Request{Header: http.Header{}}}
r.HTTPRequest.Header.Set("User-Agent", "foo/bar")
fn(r)
assert.Equal(t, "foo/bar name/version (extra1; extra2)", r.HTTPRequest.Header.Get("User-Agent"))
}
func TestMakeAddtoUserAgentFreeFormHandler(t *testing.T) {
fn := request.MakeAddToUserAgentFreeFormHandler("name/version (extra1; extra2)")
r := &request.Request{HTTPRequest: &http.Request{Header: http.Header{}}}
r.HTTPRequest.Header.Set("User-Agent", "foo/bar")
fn(r)
assert.Equal(t, "foo/bar name/version (extra1; extra2)", r.HTTPRequest.Header.Get("User-Agent"))
}
func TestRequestUserAgent(t *testing.T) {
s := awstesting.NewClient(&aws.Config{Region: aws.String("us-east-1")})
// s.Handlers.Validate.Clear()
req := s.NewRequest(&request.Operation{Name: "Operation"}, nil, &testData{})
req.HTTPRequest.Header.Set("User-Agent", "foo/bar")
assert.NoError(t, req.Build())
expectUA := fmt.Sprintf("foo/bar %s/%s (%s; %s; %s)",
aws.SDKName, aws.SDKVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
assert.Equal(t, expectUA, req.HTTPRequest.Header.Get("User-Agent"))
}
-82
View File
@@ -1,82 +0,0 @@
package request
import (
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
)
// Retryer is an interface to control retry logic for a given service.
// The default implementation used by most services is the service.DefaultRetryer
// structure, which contains basic retry logic using exponential backoff.
type Retryer interface {
RetryRules(*Request) time.Duration
ShouldRetry(*Request) bool
MaxRetries() int
}
// WithRetryer sets a config Retryer value to the given Config returning it
// for chaining.
func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config {
cfg.Retryer = retryer
return cfg
}
// retryableCodes is a collection of service response codes which are retry-able
// without any further action.
var retryableCodes = map[string]struct{}{
"RequestError": {},
"RequestTimeout": {},
"ProvisionedThroughputExceededException": {},
"Throttling": {},
"ThrottlingException": {},
"RequestLimitExceeded": {},
"RequestThrottled": {},
"LimitExceededException": {}, // Deleting 10+ DynamoDb tables at once
"TooManyRequestsException": {}, // Lambda functions
}
// credsExpiredCodes is a collection of error codes which signify the credentials
// need to be refreshed. Expired tokens require refreshing of credentials, and
// resigning before the request can be retried.
var credsExpiredCodes = map[string]struct{}{
"ExpiredToken": {},
"ExpiredTokenException": {},
"RequestExpired": {}, // EC2 Only
}
func isCodeRetryable(code string) bool {
if _, ok := retryableCodes[code]; ok {
return true
}
return isCodeExpiredCreds(code)
}
func isCodeExpiredCreds(code string) bool {
_, ok := credsExpiredCodes[code]
return ok
}
// IsErrorRetryable returns whether the error is retryable, based on its Code.
// Returns false if the request has no Error set.
func (r *Request) IsErrorRetryable() bool {
if r.Error != nil {
if err, ok := r.Error.(awserr.Error); ok {
return isCodeRetryable(err.Code())
}
}
return false
}
// IsErrorExpired returns whether the error code is a credential expiry error.
// Returns false if the request has no Error set.
func (r *Request) IsErrorExpired() bool {
if r.Error != nil {
if err, ok := r.Error.(awserr.Error); ok {
return isCodeExpiredCreds(err.Code())
}
}
return false
}
-105
View File
@@ -1,105 +0,0 @@
// Package session provides a way to create service clients with shared configuration
// and handlers.
package session
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/defaults"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/private/endpoints"
)
// A Session provides a central location to create service clients from and
// store configurations and request handlers for those services.
//
// Sessions are safe to create service clients concurrently, but it is not safe
// to mutate the session concurrently.
type Session struct {
Config *aws.Config
Handlers request.Handlers
}
// New creates a new instance of the handlers merging in the provided Configs
// on top of the SDK's default configurations. Once the session is created it
// can be mutated to modify Configs or Handlers. The session is safe to be read
// concurrently, but it should not be written to concurrently.
//
// Example:
// // Create a session with the default config and request handlers.
// sess := session.New()
//
// // Create a session with a custom region
// sess := session.New(&aws.Config{Region: aws.String("us-east-1")})
//
// // Create a session, and add additional handlers for all service
// // clients created with the session to inherit. Adds logging handler.
// sess := session.New()
// sess.Handlers.Send.PushFront(func(r *request.Request) {
// // Log every request made and its payload
// logger.Println("Request: %s/%s, Payload: %s", r.ClientInfo.ServiceName, r.Operation, r.Params)
// })
//
// // Create a S3 client instance from a session
// sess := session.New()
// svc := s3.New(sess)
func New(cfgs ...*aws.Config) *Session {
def := defaults.Get()
s := &Session{
Config: def.Config,
Handlers: def.Handlers,
}
s.Config.MergeIn(cfgs...)
initHandlers(s)
return s
}
func initHandlers(s *Session) {
// Add the Validate parameter handler if it is not disabled.
s.Handlers.Validate.Remove(corehandlers.ValidateParametersHandler)
if !aws.BoolValue(s.Config.DisableParamValidation) {
s.Handlers.Validate.PushBackNamed(corehandlers.ValidateParametersHandler)
}
}
// Copy creates and returns a copy of the current session, coping the config
// and handlers. If any additional configs are provided they will be merged
// on top of the session's copied config.
//
// Example:
// // Create a copy of the current session, configured for the us-west-2 region.
// sess.Copy(&aws.Config{Region: aws.String("us-west-2"})
func (s *Session) Copy(cfgs ...*aws.Config) *Session {
newSession := &Session{
Config: s.Config.Copy(cfgs...),
Handlers: s.Handlers.Copy(),
}
initHandlers(newSession)
return newSession
}
// ClientConfig satisfies the client.ConfigProvider interface and is used to
// configure the service client instances. Passing the Session to the service
// client's constructor (New) will use this method to configure the client.
//
// Example:
// sess := session.New()
// s3.New(sess)
func (s *Session) ClientConfig(serviceName string, cfgs ...*aws.Config) client.Config {
s = s.Copy(cfgs...)
endpoint, signingRegion := endpoints.NormalizeEndpoint(
aws.StringValue(s.Config.Endpoint), serviceName,
aws.StringValue(s.Config.Region), aws.BoolValue(s.Config.DisableSSL))
return client.Config{
Config: s.Config,
Handlers: s.Handlers,
Endpoint: endpoint,
SigningRegion: signingRegion,
}
}
@@ -1,20 +0,0 @@
package session_test
import (
"net/http"
"testing"
"github.com/stretchr/testify/assert"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
)
func TestNewDefaultSession(t *testing.T) {
s := session.New(&aws.Config{Region: aws.String("region")})
assert.Equal(t, "region", *s.Config.Region)
assert.Equal(t, http.DefaultClient, s.Config.HTTPClient)
assert.NotNil(t, s.Config.Logger)
assert.Equal(t, aws.LogOff, *s.Config.LogLevel)
}
-88
View File
@@ -1,88 +0,0 @@
package aws
import (
"io"
"sync"
)
// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser
func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
return ReaderSeekerCloser{r}
}
// ReaderSeekerCloser represents a reader that can also delegate io.Seeker and
// io.Closer interfaces to the underlying object if they are available.
type ReaderSeekerCloser struct {
r io.Reader
}
// Read reads from the reader up to size of p. The number of bytes read, and
// error if it occurred will be returned.
//
// If the reader is not an io.Reader zero bytes read, and nil error will be returned.
//
// Performs the same functionality as io.Reader Read
func (r ReaderSeekerCloser) Read(p []byte) (int, error) {
switch t := r.r.(type) {
case io.Reader:
return t.Read(p)
}
return 0, nil
}
// Seek sets the offset for the next Read to offset, interpreted according to
// whence: 0 means relative to the origin of the file, 1 means relative to the
// current offset, and 2 means relative to the end. Seek returns the new offset
// and an error, if any.
//
// If the ReaderSeekerCloser is not an io.Seeker nothing will be done.
func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) {
switch t := r.r.(type) {
case io.Seeker:
return t.Seek(offset, whence)
}
return int64(0), nil
}
// Close closes the ReaderSeekerCloser.
//
// If the ReaderSeekerCloser is not an io.Closer nothing will be done.
func (r ReaderSeekerCloser) Close() error {
switch t := r.r.(type) {
case io.Closer:
return t.Close()
}
return nil
}
// A WriteAtBuffer provides a in memory buffer supporting the io.WriterAt interface
// Can be used with the s3manager.Downloader to download content to a buffer
// in memory. Safe to use concurrently.
type WriteAtBuffer struct {
buf []byte
m sync.Mutex
}
// WriteAt writes a slice of bytes to a buffer starting at the position provided
// The number of bytes written will be returned, or error. Can overwrite previous
// written slices if the write ats overlap.
func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) {
b.m.Lock()
defer b.m.Unlock()
expLen := pos + int64(len(p))
if int64(len(b.buf)) < expLen {
newBuf := make([]byte, expLen)
copy(newBuf, b.buf)
b.buf = newBuf
}
copy(b.buf[pos:], p)
return len(p), nil
}
// Bytes returns a slice of bytes written to the buffer.
func (b *WriteAtBuffer) Bytes() []byte {
b.m.Lock()
defer b.m.Unlock()
return b.buf[:len(b.buf):len(b.buf)]
}
-56
View File
@@ -1,56 +0,0 @@
package aws
import (
"math/rand"
"testing"
"github.com/stretchr/testify/assert"
)
func TestWriteAtBuffer(t *testing.T) {
b := &WriteAtBuffer{}
n, err := b.WriteAt([]byte{1}, 0)
assert.NoError(t, err)
assert.Equal(t, 1, n)
n, err = b.WriteAt([]byte{1, 1, 1}, 5)
assert.NoError(t, err)
assert.Equal(t, 3, n)
n, err = b.WriteAt([]byte{2}, 1)
assert.NoError(t, err)
assert.Equal(t, 1, n)
n, err = b.WriteAt([]byte{3}, 2)
assert.NoError(t, err)
assert.Equal(t, 1, n)
assert.Equal(t, []byte{1, 2, 3, 0, 0, 1, 1, 1}, b.Bytes())
}
func BenchmarkWriteAtBuffer(b *testing.B) {
buf := &WriteAtBuffer{}
r := rand.New(rand.NewSource(1))
b.ResetTimer()
for i := 0; i < b.N; i++ {
to := r.Intn(10) * 4096
bs := make([]byte, to)
buf.WriteAt(bs, r.Int63n(10)*4096)
}
}
func BenchmarkWriteAtBufferParallel(b *testing.B) {
buf := &WriteAtBuffer{}
r := rand.New(rand.NewSource(1))
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
to := r.Intn(10) * 4096
bs := make([]byte, to)
buf.WriteAt(bs, r.Int63n(10)*4096)
}
})
}

Some files were not shown because too many files have changed in this diff Show More