radiosonde 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/bin/radiosonde +37 -11
- data/lib/radiosonde/client.rb +37 -0
- data/lib/radiosonde/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 833238437bfc6c3c546b32d92b775025bf404998
|
4
|
+
data.tar.gz: 7c4779551a627ac35ff89b7955e6df7a03cdc264
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce9b9cbf7640d3129a8237197774359c2cadef7bfceefb0cb316ec08419e7dc66978c84377160ece738f71ceb13ad098fce96be90fadf4b65e025925a44c6d36
|
7
|
+
data.tar.gz: e971b3029f462aeb2a800d0602f5ab561ea84cbca8c31f87c9d143c349669c5817e7f659193fac67274d4bc69bf8390482701baa4abb1cea47da29358de3ac08
|
data/README.md
CHANGED
@@ -43,6 +43,14 @@ Usage: radiosonde [options]
|
|
43
43
|
--dry-run
|
44
44
|
-e, --export
|
45
45
|
-o, --output FILE
|
46
|
+
--show-metrics
|
47
|
+
--show-dimensions
|
48
|
+
--show-statistics
|
49
|
+
--namespace NAMESPACE
|
50
|
+
--metric-name NAME
|
51
|
+
--start-time TIME
|
52
|
+
--end-time TIME
|
53
|
+
--statistic STATISTIC
|
46
54
|
--no-color
|
47
55
|
--debug
|
48
56
|
```
|
data/bin/radiosonde
CHANGED
@@ -3,6 +3,8 @@ $: << File.expand_path("#{File.dirname __FILE__}/../lib")
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'radiosonde'
|
5
5
|
require 'optparse'
|
6
|
+
require 'optparse/time'
|
7
|
+
require 'time'
|
6
8
|
|
7
9
|
Version = Radiosonde::VERSION
|
8
10
|
DEFAULT_FILENAME = 'Alarmfile'
|
@@ -17,6 +19,12 @@ options = {
|
|
17
19
|
:debug => false,
|
18
20
|
}
|
19
21
|
|
22
|
+
show_opts = {
|
23
|
+
:start_time => Time.now - 3600,
|
24
|
+
:end_time => Time.now,
|
25
|
+
:statistic => :average,
|
26
|
+
}
|
27
|
+
|
20
28
|
ARGV.options do |opt|
|
21
29
|
begin
|
22
30
|
access_key = nil
|
@@ -24,17 +32,28 @@ ARGV.options do |opt|
|
|
24
32
|
region = nil
|
25
33
|
profile_name = nil
|
26
34
|
|
27
|
-
opt.on('-p', '--profile PROFILE_NAME') {|v| profile_name
|
28
|
-
opt.on('-k', '--access-key ACCESS_KEY') {|v| access_key
|
29
|
-
opt.on('-s', '--secret-key SECRET_KEY') {|v| secret_key
|
30
|
-
opt.on('-r', '--region REGION') {|v| region
|
31
|
-
opt.on('-a', '--apply') { mode
|
32
|
-
opt.on('-f', '--file FILE') {|v| file
|
33
|
-
opt.on('', '--dry-run') { options[:dry_run]
|
34
|
-
opt.on('-e', '--export') { mode
|
35
|
-
opt.on('-o', '--output FILE') {|v| output_file
|
36
|
-
opt.on(''
|
37
|
-
opt.on(''
|
35
|
+
opt.on('-p', '--profile PROFILE_NAME') {|v| profile_name = v }
|
36
|
+
opt.on('-k', '--access-key ACCESS_KEY') {|v| access_key = v }
|
37
|
+
opt.on('-s', '--secret-key SECRET_KEY') {|v| secret_key = v }
|
38
|
+
opt.on('-r', '--region REGION') {|v| region = v }
|
39
|
+
opt.on('-a', '--apply') { mode = :apply }
|
40
|
+
opt.on('-f', '--file FILE') {|v| file = v }
|
41
|
+
opt.on('', '--dry-run') { options[:dry_run] = true }
|
42
|
+
opt.on('-e', '--export') { mode = :export }
|
43
|
+
opt.on('-o', '--output FILE') {|v| output_file = v }
|
44
|
+
opt.on('', '--show-metrics') { mode = :show_metrics }
|
45
|
+
opt.on('', '--show-dimensions') { mode = :show_dimensions }
|
46
|
+
opt.on('', '--show-statistics') { mode = :show_statistics }
|
47
|
+
opt.on('', '--namespace NAMESPACE') {|v| show_opts[:namespace] = v }
|
48
|
+
opt.on('', '--metric-name NAME') {|v| show_opts[:metric_name] = v }
|
49
|
+
opt.on('', '--start-time TIME', Time) {|v| show_opts[:start_time] = v }
|
50
|
+
opt.on('', '--end-time TIME', Time) {|v| show_opts[:end_time] = v }
|
51
|
+
opt.on('', '--end-time TIME', Time) {|v| show_opts[:end_time] = v }
|
52
|
+
opt.on('' , '--statistic STATISTIC', Radiosonde::DSL::Statistic::ALIASES.values) {|v|
|
53
|
+
show_opts[:statistic]
|
54
|
+
}
|
55
|
+
opt.on('' , '--no-color') { options[:color] = false }
|
56
|
+
opt.on('' , '--debug') { options[:debug] = true }
|
38
57
|
opt.parse!
|
39
58
|
|
40
59
|
aws_opts = {}
|
@@ -97,6 +116,13 @@ begin
|
|
97
116
|
updated = client.apply(file)
|
98
117
|
|
99
118
|
logger.info('No change'.intense_blue) unless updated
|
119
|
+
when :show_metrics
|
120
|
+
puts JSON.pretty_generate(client.metrics(show_opts))
|
121
|
+
when :show_dimensions
|
122
|
+
puts JSON.pretty_generate(client.metrics(show_opts.merge(:with_dimensions => true)))
|
123
|
+
when :show_statistics
|
124
|
+
show_opts[:statistics] = [Radiosonde::DSL::Statistic.normalize(show_opts[:statistic])]
|
125
|
+
puts JSON.pretty_generate(client.metrics(show_opts.merge(:with_statistics => true)))
|
100
126
|
else
|
101
127
|
raise 'must not happen'
|
102
128
|
end
|
data/lib/radiosonde/client.rb
CHANGED
@@ -17,6 +17,43 @@ class Radiosonde::Client
|
|
17
17
|
Radiosonde::DSL.convert(exported, @options.merge(opts))
|
18
18
|
end
|
19
19
|
|
20
|
+
def metrics(opts = {})
|
21
|
+
namespaces = {}
|
22
|
+
|
23
|
+
AWS.memoize do
|
24
|
+
ms = @cloud_watch.metrics
|
25
|
+
|
26
|
+
[:namespace, :metric_name].each do |name|
|
27
|
+
if (value = opts[name])
|
28
|
+
ms = ms.filter(name.to_s, value)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
ms.sort_by {|m| [m.namespace, m.metric_name] }.each do |m|
|
33
|
+
if opts[:with_statistics]
|
34
|
+
namespaces[m.namespace] ||= {}
|
35
|
+
statistics_ops = {}
|
36
|
+
[:start_time, :end_time, :statistics].each do |name|
|
37
|
+
statistics_ops[name] = opts[name] if opts[name]
|
38
|
+
end
|
39
|
+
statistics = m.statistics(statistics_ops)
|
40
|
+
namespaces[m.namespace][m.metric_name] = {
|
41
|
+
:label => statistics.label,
|
42
|
+
:datapoints => statistics.datapoints
|
43
|
+
}
|
44
|
+
elsif opts[:with_dimensions]
|
45
|
+
namespaces[m.namespace] ||= {}
|
46
|
+
namespaces[m.namespace][m.metric_name] = m.dimensions
|
47
|
+
else
|
48
|
+
namespaces[m.namespace] ||= []
|
49
|
+
namespaces[m.namespace] << m.metric_name
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
return namespaces
|
55
|
+
end
|
56
|
+
|
20
57
|
def apply(file)
|
21
58
|
AWS.memoize { walk(file) }
|
22
59
|
end
|
data/lib/radiosonde/version.rb
CHANGED