Commit Graph

380 Commits

Author SHA1 Message Date
Joshua Piccari
5fa5d4bdd5 CloudWatch: Avoid exception while accessing results (#17283)
When accessing the `series` property of query results, if a query is
hidden, an exception is thrown. This is caused by lack of checks to
verify that the query result exists before accessing the `series`
property.

Closes #17112
2019-05-29 09:10:09 +02:00
Utkarsh Bhatnagar
8e434ad163 CloudWatch: Made region visible for AWS Cloudwatch Expressions (#17243)
Fixes #14933
2019-05-23 12:02:19 +02:00
Ryan McKinley
1033f0f905 DataSourceMeta: add an option to get hidden queries (#17124)
* add an option to get hidden queries

* make sure you have meta

* supportsHiddenQueries

* remove spaces

* DataSources: hidden queries flag
2019-05-21 13:46:19 +02:00
Ryan McKinley
1d7bb2a763 DataSourceApi: convert interface to abstract class (#16979)
* DataSourceApi as class

* add diff signature

* Prometheus: moved directUrl to jsonData
2019-05-10 11:37:43 +02:00
Torkel Ödegaard
e1d408a66f
AddDataSource: Updated page design & categories (#16971)
* minor refactoring

* Added category

* Minor progress

* Progres

* Updated descriptions

* Added custom sort

* NewDataSource: progress

* Updated design

* NewDataSource: Updated design

* Updated link

* Feedback changes
2019-05-09 11:45:39 +02:00
Ryan McKinley
1d8786e3a6 DataSource Plugins: consistent generics order <TQuery,TOptions> (#16936)
* consistent TQuery,TOptions

* add json for azure

* cloudwatch
2019-05-08 09:37:50 +02:00
Ryan McKinley
d881976c9d Refactor: move datemath to grafana/ui (#16890)
* move datemath to grafana/ui

* don't reference @grafana/ui from its own component
2019-05-06 12:36:42 +02:00
Ryan McKinley
4e54509dde
Refactor: improvements to PanelQueryRunner (#16678)
merged DataQueryOptions + DataRequestInfo info: DataQueryRequest
2019-04-18 21:56:27 -07:00
Mitsuhiro Tanda
864a6262fe CloudWatch: GetMetricData refactoring & fix label handling (#16383)
* fix label handling

* SEARCH() results could have multiple namespace, remove from legend

* divide GetMetricStatistics related code

* divide GetMetricData related code

* divide parseGetMetricDataResponse()

* divide parseGetMetricDataQuery()

* divide test code

* add test for GetMetricData

* add test for GetMetricData parse response

* fix bug of terminating gap

* fix gofmt
2019-04-15 17:55:07 +02:00
Hugo Häggmark
7eabc282e9
Chore: Adds typings to lodash (#16590) 2019-04-15 12:11:52 +02:00
Mitsuhiro Tanda
8f167c47e3 CloudWatch: Fix template variable expand bug (#16405)
CloudWatch: Fix template variable issues
2019-04-12 14:00:41 +02:00
Mitsuhiro Tanda
d7d20a5b10 CloudWatch: fix color order (#16408)
* fix cloudwatch color order

* fix test

* use for-of
2019-04-12 13:57:39 +02:00
Mitsuhiro Tanda
58eb74660d Fix: Cloudwatch fix for dimension value (#16356)
Fixes autocomplete suggestion after changing dimension key

Fixes #15984
2019-04-03 09:23:15 +02:00
Johannes Schill
e7297fef06 fix: Add class for input fields with help icon to avoid icon hiding the text #15771 2019-03-06 14:45:13 +01:00
ryan
909d425008 cleanup plugin versions 2019-03-05 23:40:03 -08:00
Torkel Ödegaard
cfea8bdcae Prettier had not been running as a precommit hook for some time so had to run in on all files again 2019-02-13 11:14:53 +01:00
jeroenvollenbrock
28aafcd789 cloudwatch: Add tests for resource_arn template query 2019-02-05 18:37:05 +01:00
jeroenvollenbrock
fa977ce090 cloudwatch: Add resource_arns template query function
Implements feature request #8207
2019-02-05 18:37:04 +01:00
Torkel Ödegaard
9e4547f787 fixed cloudwatch issue 2018-12-14 14:25:35 +01:00
Torkel Ödegaard
29e18fddd0 refactored how testing state was handled, using redux for this felt way to require way to much code 2018-11-07 14:28:44 -08:00
Mitsuhiro Tanda
08631ea23f support template variable in stat field 2018-10-25 13:03:20 +09:00
Torkel Ödegaard
4f4bba7f8c
Merge pull request #13578 from grafana/react-panels-step1
WIP: React panels step1
2018-10-19 12:59:09 +02:00
Torkel Ödegaard
dddbe62d6c Merge branch 'master' into react-panels-step1 2018-10-19 09:15:37 +02:00
Mitsuhiro Tanda
4687ce2f7b allow unit override if cloudwatch response unit is none 2018-10-18 20:51:46 +09:00
Mitsuhiro Tanda
c64a5a6e0e re-add hard coded region list 2018-10-17 14:02:02 +09:00
Mitsuhiro Tanda
fce50cf1b8 return default region list from backend 2018-10-16 12:20:39 +09:00
Mitsuhiro Tanda
a417d6fa21 don't merge hard coded region list 2018-10-16 12:03:33 +09:00
Mitsuhiro Tanda
61e2710961 add error message 2018-10-16 12:03:33 +09:00
Mitsuhiro Tanda
6564abd5f3 get regions from after datasource save 2018-10-16 12:03:33 +09:00
Mitsuhiro Tanda
f6cb01d38a show all CloudWatch regions 2018-10-16 12:03:33 +09:00
Torkel Ödegaard
cd4619dad1 working on react data / query exectution 2018-10-14 15:39:34 +02:00
Torkel Ödegaard
4aa7dc0c85 minor change to cloudwatch code formatting 2018-10-11 12:58:17 -07:00
Adam Palaniuk
58a156ba03 Update check for invalid percentile statistics 2018-10-11 14:00:34 -05:00
Marcus Efraimsson
5f69854e2a
Merge pull request #13571 from mtanda/cw_unit
cloudwatch: automatically set graph yaxis unit 

fixes #13575
2018-10-10 09:52:10 +02:00
Mitsuhiro Tanda
6e32c9bb3f fix id validation 2018-10-10 12:19:57 +09:00
Mitsuhiro Tanda
6ed1cbd5bb set unit for CloudWatch GetMetricStatistics result 2018-10-09 17:02:56 +09:00
David Kaltschmidt
54c9beb146 Explore: jump to explore from panels with mixed datasources
- extends handlers for panel menu and keypress 'x'
- in a mixed-datasource panel finds first datasource that supports
  explore and collects its targets
- passes those targets to the found datasource to be serialized for
  explore state
- removed `supportMetrics` and `supportsExplore`
- use datasource metadata instead (set in plugin.json)
- Use angular timeout to wrap url change for explore jump
- Extract getExploreUrl into core/utils/explore
2018-10-01 12:03:57 +02:00
Steve Kreitzer
55e4db5cfc Adding AWS Isolated Regions 2018-09-27 19:58:07 -04:00
Torkel Ödegaard
432e203df1 Merge branch '12918-only-arrow-functions3' 2018-09-05 11:26:30 +02:00
Patrick O'Carroll
0f326f18dc changed functions to arrowfunctions for only-arrow-functions rule (#13127) 2018-09-04 15:55:41 +02:00
Patrick O'Carroll
19b7ad61dd Changed functions to arrow functions for only-arrow-functions rule. 2018-09-04 14:27:03 +02:00
Patrick O'Carroll
b8d82df97e added no-angle-bracket-type-assertion rule and updatet files to follow rule (#13115) 2018-09-03 11:30:44 +02:00
Patrick O'Carroll
abbb6f933c added jsdoc-format rule and fixed files that didn't follow new rule (#13107) 2018-08-31 16:40:43 +02:00
Patrick O'Carroll
552a61b6ae changed var to let in 50 files (#13075) 2018-08-30 09:03:11 +02:00
Patrick O'Carroll
a702603e7b changed var to const 2 (#13068)
* changed var to const

* fixed typo created in last commit

* added or empty object to options in prometheus/datasource
2018-08-29 14:27:29 +02:00
Patrick O'Carroll
5e0d0c5816 changed var to const (#13061) 2018-08-29 14:26:50 +02:00
Torkel Ödegaard
314b645857
tslint: changing vars -> const (#13034) 2018-08-26 18:43:07 +02:00
Torkel Ödegaard
9b978b7203
tslint: autofix of let -> const (#13033) 2018-08-26 17:14:40 +02:00
Tobias Skarhed
a65589a5fb Rename test files 2018-08-14 10:52:41 +02:00
Mitsuhiro Tanda
fb4546b811 Id validation of CloudWatch GetMetricData 2018-07-23 17:58:54 +09:00
Daniel Lee
5129ea8f87
Merge pull request #11624 from mtanda/cw_get_metric_data
CloudWatch GetMetricData support
2018-07-22 21:34:07 +02:00
Mitsuhiro Tanda
9b50c9038b skip backend request if extended statistics is invalid. (#12495)
* check extended statistics pattern

* check extended statistics pattern

* Revert "check extended statistics pattern"

This reverts commit 52c7b1a972636d5f5729e64ae5e00e6fae329257.

* add test

* fix test
2018-07-11 11:23:38 -07:00
Tobias Skarhed
e51f208a49 Cleanup and remove some jest.fn() 2018-07-09 15:42:34 +02:00
Tobias Skarhed
6670acd082 Remove irrelevant tests and templateSrv stub 2018-07-09 12:52:56 +02:00
Mitsuhiro Tanda
4c59be4f5b generate unique id when variable is multi 2018-07-09 13:11:50 +09:00
Mitsuhiro Tanda
40ed235b3b support GetMetricData 2018-07-09 13:11:50 +09:00
Tobias Skarhed
74bf80962d Add mock to test files 2018-07-04 14:32:22 +02:00
Tobias Skarhed
a37a0c7be3 Remove comments 2018-07-04 14:32:22 +02:00
Tobias Skarhed
42ba0dc73f Karma to Jest: Cloudwatch datasource 2018-07-04 14:32:22 +02:00
Daniel Lee
b2187b70a7
Merge pull request #11990 from mtanda/issue_11925
fix "Cloudwatch panel does not allow arbitrary variable values in query"
2018-06-21 18:00:49 +02:00
Tobias Skarhed
8666c77cc9 Karma to Jest: time_srv (#12303)
* Begin Karma to Jest: time_srv

* Remove experimental fix

* location search stubs for each test

* Fix issue where time service was not available for other tests
2018-06-18 09:47:23 -07:00
Mitsuhiro Tanda
e65cf5cbb5 fix directly specified variable rendering 2018-05-28 11:28:08 +09:00
Carl Bergquist
e94d23e5ff
Merge pull request #10873 from willyhutw/cloudwatch_dimension_values_add_dimension_filter
Cloudwatch dimension_values add dimension filter.
2018-03-12 14:24:26 +01:00
bergquist
71df2760a1 Merge branch 'cw_high_resolution' of https://github.com/mtanda/grafana
* 'cw_high_resolution' of https://github.com/mtanda/grafana:
  fix, set default highResolution setting
  support cloudwatch high resolution query
2018-03-08 18:02:35 +01: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
Mitsuhiro Tanda
18c54a9341 support cloudwatch high resolution query 2018-02-15 23:35:01 +09:00
Willy Hu (IS-TW)
725e23ef7d Cloudwatch dimension_values add dimension filter.
issue #10029

e.g.
- dimension_values($region, $namespace, cpu_usage_system, cpu)
- dimension_values($region, $namespace, disk_used_percent, device, {"InstanceId": "$instance_id"})
- dimension_values($region, $namespace, disk_used_percent, path, {"InstanceId": "$instance_id", "device": "$device"})
2018-02-12 10:13:55 +00:00
Chris Rice
dba93d8240 Renamed "Period" to "Min period" in CloudWatch query editor (#10665) 2018-01-31 14:14:34 +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
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
Torkel Ödegaard
27835f373e cleanup: removed unused typescript typings import 2018-01-04 10:12:02 +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
Patrick O'Carroll
54c502ae4d fixed error 2017-12-28 09:44:37 +01:00
Patrick O'Carroll
0c5314cec7 migrated datasource to ts 2017-12-27 13:25:40 +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
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
85879a7014 prettier: change to single quoting 2017-12-20 12:33:33 +01:00
Torkel Ödegaard
fadfc665e4 tech: ran pretttier on all typescript files 2017-12-19 16:06:54 +01:00
Torkel Ödegaard
22643eb109 cloudwatch: fixed optimized build issue, fixes #10174 2017-12-18 14:36:34 +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
Torkel Ödegaard
cafed8ce8f Merge branch 'master' into develop 2017-12-12 13:19:07 +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
e98af1b3fa updated libs and fixed new typescript errors 2017-11-27 12:14:57 +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
Torkel Ödegaard
119f5427af fix: fix cloudwatch metricFindQuery error that stopped it working completely, fixes #9876 2017-11-16 13:06:24 +01:00
Mitsuhiro Tanda
ae4bcdd54b fix query inspector for cloudwatch 2017-11-12 00:41:14 +09:00
Mitsuhiro Tanda
ebcb8be19a add period alias 2017-11-01 18:47:21 +09: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
Mitsuhiro Tanda
0f87279ab8 fix template variable expanding 2017-10-17 18:11:21 +09: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
Mitsuhiro Tanda
40b11654fd show error message when cloudwatch datasource can't add 2017-10-16 13:05:53 +09: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
Mitsuhiro Tanda
5850ae51b1 fix, add targetContainsTemplate() 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
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
8243ac39c2 fix parameter format 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
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
01d2aa8af0 fix test 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
62d84c1e14 (cloudwatch) move query parameter to 'parameters' 2017-09-29 13:44:01 +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
39607d09d7 (cloudwatch) alerting 2017-09-29 13:44:00 +09:00
Torkel Ödegaard
73295ab3ed tech: upgrade of systemjs to 0.20.x working 2017-09-28 14:08:59 +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
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
Torkel Ödegaard
f6100dd8eb ux: success/error alerts refactoring, #9214 2017-09-12 09:05:32 +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
73a1a262ef Merge branch 'v4.4.x' 2017-07-31 22:33:36 +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
Daniel Lee
3a075be7e9 cloudwatch: make dimension text in alias popover clearer 2017-07-07 18:17:05 +02: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
柯豪
b7a1ff753a update name for AWS credentials (#8287) 2017-05-04 11:44:36 +02:00
Mitsuhiro Tanda
62d11c147b (cloudwatch) fix dimension value find query (#8159) 2017-04-19 07:12:59 +02:00
Torkel Ödegaard
c68fffcd6d ux: popover forms 2017-04-13 20:28:13 +02:00
Daniel Lee
69bec98962 chore: update all grafana.org urls to .com 2017-03-21 15:37:55 +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
163036591d tech(build): fixes broken build 2017-01-30 15:04:55 +01:00
Kerim Satirli
797e2ea25d Adds London and Canada AWS Regions 2016-12-27 14:10:36 +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
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
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
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
Mitsuhiro Tanda
9740752c1e (cloudwatch) long retention support (#6547) 2016-11-16 10:50:33 +01: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
Roger Swingle
69ff13adce add govcloud 2016-11-07 13:56:29 -05:00
Mitsuhiro Tanda
888619d74e (cloudwatch) add region 2016-10-18 12:28:20 +09: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
Peter Dave Hello
bf4c3f3ae6 optimize png images using zopflipng (#6197) 2016-10-05 15:57:50 +02:00
bergquist
96ca69c5a9 tech(cloudwatch): extract method 2016-10-03 10:31:07 +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
Mitsuhiro Tanda
71b5007ec7 refactor 2016-09-20 11:04:23 +09:00
Mitsuhiro Tanda
07cce5f6bd refactor 2016-09-20 11:04:23 +09:00