wavefront-cli 8.0.1 → 8.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/HISTORY.md +17 -1
- data/lib/wavefront-cli/base.rb +3 -0
- data/lib/wavefront-cli/commands/proxy.rb +1 -0
- data/lib/wavefront-cli/controller.rb +9 -0
- data/lib/wavefront-cli/display/base.rb +3 -1
- data/lib/wavefront-cli/display/printer/long.rb +4 -1
- data/lib/wavefront-cli/display/proxy.rb +4 -0
- data/lib/wavefront-cli/display/query.rb +40 -0
- data/lib/wavefront-cli/proxy.rb +4 -0
- data/lib/wavefront-cli/version.rb +1 -1
- data/spec/wavefront-cli/display/printer/long_spec.rb +2 -0
- data/spec/wavefront-cli/proxy_spec.rb +13 -0
- data/wavefront-cli.gemspec +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 699611ad61cde3c72f79d281cecd5c11fea37209852f2a14550331bf2b3e1cf8
|
4
|
+
data.tar.gz: c4567567ebf77209ff858d2b8ac57baa5d406735415e9bcf0ae24342ea3023e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00b64e995bfb20a3476c49794ca661ab9cbf5d216664c1fd94de3517017c94e76149aa2a3159129921edfa512ccdf2e9f413d7c214d39ff3d2e05108635636c5
|
7
|
+
data.tar.gz: 31a1dd4fd12927a39425516da9e25744c8092968a5b06188cb16b2221bae81fae1a1362d50f0d27908048b30e8cc02c8c3b64aac4b7ce0a6d828d38d127e0f73
|
data/HISTORY.md
CHANGED
@@ -1,12 +1,28 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 8.4.0 (2020-12-16)
|
4
|
+
* Add `-f raw` option to dump the raw API response.
|
5
|
+
* Bugfix `set` subcommand, which was not reliable on certain object types.
|
6
|
+
* Require >=5.4.1 of [the SDK](https://github.com/snltd/wavefront-sdk).
|
7
|
+
|
8
|
+
## 8.3.1 (2020-11-17)
|
9
|
+
* Catch ctrl-c properly.
|
10
|
+
|
11
|
+
## 8.3.0 (2020-10-31)
|
12
|
+
* Add `wf proxy shutdown` command.
|
13
|
+
|
14
|
+
## 8.2.0 (2020-10-06)
|
15
|
+
* Display spans in human-readable query output.
|
16
|
+
|
17
|
+
## 8.1.0 (2020-10-04)
|
18
|
+
* Display traces in human-readable query output.
|
19
|
+
|
3
20
|
## 8.0.1 (2020-09-28)
|
4
21
|
* If the user specifies a config stanza and it is not found, exit with an
|
5
22
|
error rather than silently falling back to env vars.
|
6
23
|
|
7
24
|
## 8.0.0 (2020-09-20
|
8
25
|
* Drop Ruby 2.4.0 support. (Breaking change.)
|
9
|
-
>>>>>>> master
|
10
26
|
|
11
27
|
## 7.2.0 (2020-08-12)
|
12
28
|
* Add `cloudintegration awsid generate` command.
|
data/lib/wavefront-cli/base.rb
CHANGED
@@ -147,6 +147,7 @@ module WavefrontCli
|
|
147
147
|
noop: options[:noop] }
|
148
148
|
|
149
149
|
ret[:verbose] = options[:noop] ? true : options[:verbose]
|
150
|
+
ret[:raw_response] = true if options[:format] == 'raw'
|
150
151
|
|
151
152
|
ret.merge!(extra_options) if respond_to?(:extra_options)
|
152
153
|
ret
|
@@ -228,6 +229,8 @@ module WavefrontCli
|
|
228
229
|
|
229
230
|
exit if options[:noop]
|
230
231
|
|
232
|
+
ok_exit data if options[:format] == 'raw'
|
233
|
+
|
231
234
|
check_response_blocks(data)
|
232
235
|
warning_message(data.status)
|
233
236
|
status_error_handler(data, method)
|
@@ -39,6 +39,15 @@ class WavefrontCliController
|
|
39
39
|
@opts = parse_opts(opts)
|
40
40
|
cli_class_obj = cli_class(cmd, @opts)
|
41
41
|
run_command(cli_class_obj)
|
42
|
+
rescue Interrupt
|
43
|
+
handle_interrupt!
|
44
|
+
end
|
45
|
+
|
46
|
+
def handle_interrupt!
|
47
|
+
raise if opts[:debug]
|
48
|
+
|
49
|
+
puts "\nCancelled at user's request."
|
50
|
+
exit 0
|
42
51
|
end
|
43
52
|
|
44
53
|
# What you see when you do 'wf --help'
|
@@ -33,6 +33,7 @@ module WavefrontDisplay
|
|
33
33
|
|
34
34
|
@data = prioritize_keys(data, priority_keys)
|
35
35
|
@options = options
|
36
|
+
@printer_opts = {}
|
36
37
|
end
|
37
38
|
|
38
39
|
# find the correct method to deal with the output of the user's
|
@@ -152,7 +153,8 @@ module WavefrontDisplay
|
|
152
153
|
puts 'No data.'
|
153
154
|
else
|
154
155
|
require_relative 'printer/long'
|
155
|
-
puts WavefrontDisplayPrinter::Long.new(data, fields, modified_data
|
156
|
+
puts WavefrontDisplayPrinter::Long.new(data, fields, modified_data,
|
157
|
+
@printer_opts)
|
156
158
|
pagination_line
|
157
159
|
end
|
158
160
|
end
|
@@ -29,11 +29,13 @@ module WavefrontDisplayPrinter
|
|
29
29
|
|
30
30
|
# Default options. Can all be overridden by passing them in the
|
31
31
|
# initializer options hash.
|
32
|
+
# After sep_depth indentations we do not print separator lines
|
32
33
|
#
|
33
34
|
def default_opts
|
34
35
|
{ indent: 2,
|
35
36
|
padding: 2,
|
36
37
|
separator: true,
|
38
|
+
sep_depth: 3,
|
37
39
|
none: true }
|
38
40
|
end
|
39
41
|
|
@@ -179,7 +181,8 @@ module WavefrontDisplayPrinter
|
|
179
181
|
data.each.with_index(1) do |element, i|
|
180
182
|
aggr = make_list(element, aggr, depth, last_key)
|
181
183
|
|
182
|
-
if opts[:separator] && element.is_a?(Hash) && i < data.size
|
184
|
+
if opts[:separator] && element.is_a?(Hash) && i < data.size &&
|
185
|
+
depth < opts[:sep_depth]
|
183
186
|
aggr.<< ['', :separator, depth]
|
184
187
|
end
|
185
188
|
end
|
@@ -16,14 +16,18 @@ module WavefrontDisplay
|
|
16
16
|
data[:errorMessage].split("\n").first)
|
17
17
|
end
|
18
18
|
|
19
|
+
# rubocop:disable Metrics/AbcSize
|
19
20
|
def default_data_object
|
20
21
|
{ name: data.name,
|
21
22
|
query: data.query,
|
22
23
|
timeseries: mk_timeseries(data),
|
24
|
+
traces: mk_traces(data),
|
25
|
+
spans: mk_spans(data),
|
23
26
|
events: mk_events(data) }.tap do |d|
|
24
27
|
d[:warnings] = data[:warnings] if show_warnings?
|
25
28
|
end
|
26
29
|
end
|
30
|
+
# rubocop:enable Metrics/AbcSize
|
27
31
|
|
28
32
|
def show_warnings?
|
29
33
|
data.key?(:warnings) && !options[:nowarn]
|
@@ -54,6 +58,18 @@ module WavefrontDisplay
|
|
54
58
|
data[:events].map { |s| humanize_event(s) }
|
55
59
|
end
|
56
60
|
|
61
|
+
def mk_traces(data)
|
62
|
+
return [] unless data.key?(:traces)
|
63
|
+
|
64
|
+
data[:traces].map { |t| humanize_trace(t) }
|
65
|
+
end
|
66
|
+
|
67
|
+
def mk_spans(data)
|
68
|
+
return [] unless data.key?(:spans)
|
69
|
+
|
70
|
+
data[:spans].map { |t| humanize_span(t) }
|
71
|
+
end
|
72
|
+
|
57
73
|
def do_run
|
58
74
|
do_default
|
59
75
|
end
|
@@ -99,6 +115,30 @@ module WavefrontDisplay
|
|
99
115
|
end
|
100
116
|
end
|
101
117
|
|
118
|
+
def humanize_trace(data)
|
119
|
+
@printer_opts[:sep_depth] = 3
|
120
|
+
|
121
|
+
data.tap do |t|
|
122
|
+
t[:start] = human_time(t[:start_ms])
|
123
|
+
t[:end] = human_time(t[:end_ms])
|
124
|
+
t.delete(:start_ms)
|
125
|
+
t.delete(:end_ms)
|
126
|
+
t.delete(:startMs)
|
127
|
+
t.spans = t.spans.map { |s| humanize_trace_span(s) }
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def humanize_span(data)
|
132
|
+
@printer_opts[:sep_depth] = 2
|
133
|
+
data
|
134
|
+
end
|
135
|
+
|
136
|
+
def humanize_trace_span(span)
|
137
|
+
span.tap do |s|
|
138
|
+
s[:startMs] = human_time(s[:startMs])
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
102
142
|
def row_time_and_val(row)
|
103
143
|
if row.is_a?(Hash)
|
104
144
|
[human_time(row[:timestamp]), row[:value]]
|
data/lib/wavefront-cli/proxy.rb
CHANGED
@@ -32,6 +32,10 @@ module WavefrontCli
|
|
32
32
|
version_info(raw).sort_by { |p| Gem::Version.new(p[:version]) }.reverse
|
33
33
|
end
|
34
34
|
|
35
|
+
def do_shutdown
|
36
|
+
wf.shutdown(options[:'<id>'])
|
37
|
+
end
|
38
|
+
|
35
39
|
def version_info(raw)
|
36
40
|
raw.response.items.map do |i|
|
37
41
|
{ id: i.id, version: i.version, name: i.name }
|
@@ -52,12 +52,14 @@ class TestWavefrontDisplayPrinterLong < MiniTest::Test
|
|
52
52
|
assert_equal({ indent: 4,
|
53
53
|
padding: 3,
|
54
54
|
separator: true,
|
55
|
+
sep_depth: 3,
|
55
56
|
none: true }, pr.opts)
|
56
57
|
|
57
58
|
pr = WavefrontDisplayPrinter::Long.new({}, nil, nil, none: false)
|
58
59
|
assert_equal({ indent: 2,
|
59
60
|
padding: 2,
|
60
61
|
separator: true,
|
62
|
+
sep_depth: 3,
|
61
63
|
none: false }, pr.opts)
|
62
64
|
end
|
63
65
|
|
@@ -36,6 +36,19 @@ class ProxyEndToEndTest < EndToEndTest
|
|
36
36
|
assert_abort_on_missing_creds("rename #{id} newname")
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_shutdown
|
40
|
+
assert_output("Requested shutdown of proxy '#{id}'.\n") do
|
41
|
+
assert_cmd_puts("shutdown #{id}", "/api/v2/proxy/#{id}",
|
42
|
+
{ shutdown: true }.to_json)
|
43
|
+
end
|
44
|
+
|
45
|
+
assert_noop("shutdown #{id}",
|
46
|
+
"uri: PUT https://default.wavefront.com/api/v2/proxy/#{id}",
|
47
|
+
'body: {"shutdown":true}')
|
48
|
+
assert_invalid_id("shutdown #{invalid_id}")
|
49
|
+
assert_abort_on_missing_creds("shutdown #{id}")
|
50
|
+
end
|
51
|
+
|
39
52
|
private
|
40
53
|
|
41
54
|
def id
|
data/wavefront-cli.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |gem|
|
|
26
26
|
|
27
27
|
gem.add_runtime_dependency 'docopt', '~> 0.6.0'
|
28
28
|
gem.add_runtime_dependency 'inifile', '~> 3.0'
|
29
|
-
gem.add_runtime_dependency 'wavefront-sdk', '~> 5.
|
29
|
+
gem.add_runtime_dependency 'wavefront-sdk', '~> 5.4', '>= 5.4.1'
|
30
30
|
|
31
31
|
gem.add_development_dependency 'minitest', '~> 5.14'
|
32
32
|
gem.add_development_dependency 'rake', '~> 13.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wavefront-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.0
|
4
|
+
version: 8.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Fisher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docopt
|
@@ -44,14 +44,20 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5.
|
47
|
+
version: '5.4'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 5.4.1
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5.
|
57
|
+
version: '5.4'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 5.4.1
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: minitest
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|