wavefront-cli 4.5.2 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85cffedda19dd4e8ac981ecc22a59610278f3d22be74f73cb9fd52baee745e9b
4
- data.tar.gz: c623f5dfc3f2c4b9e75547f38de546115eebec4e0d22e397c905d7483bad67f4
3
+ metadata.gz: f6778585fb11ae1989c46feaf4e3ba7300e486f3893358216a33d3b331f0428a
4
+ data.tar.gz: 368623dfc6837757c38817bab28edb98aa869932905a7968feb6728f5ab4df19
5
5
  SHA512:
6
- metadata.gz: '080b36c657b1b489b236f8a0207a74ebc49b30e9fd921cdd3fb6ae4e134f637297b508e9b3cecce0a2897655cfad0516b64d45c7061e054763f8a8e51e10c0c0'
7
- data.tar.gz: e0417583dfc07ec380c298a1d6b4a23dd0a31715997b298494ca5a83bee01960bbe0b1b0717a2efd23d6bcf00bdd961affa05ae4798206a505e17f0bc79627b5
6
+ metadata.gz: 8bd581d185626b015fbb6fb4a3649d4e51b798335e9c7e3e715663b5cda6a23a46f61906b14e9cbc4c5769ee4ae524283e2b509f8613d059bc7702909456e7ef
7
+ data.tar.gz: b91f871b2caa0658337a01d54644fc2db7d597a37229328bed821e03e8793cbf681fa0ebca8ccf356d9ce2894ef36091f181788f7f6811dba781f19a0ad4f9ec
data/HISTORY.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.6.0
4
+ * Add `ingestionpolicy` and `usage` commands.
5
+ * Require 3.7.x of [the SDK](https://github.com/snltd/wavefront-sdk).
6
+
3
7
  ## 4.5.2 (2020-01-15)
4
8
  * Test build against, and fix warning messages on, Ruby 2.7.0
5
9
  * Bump SDK dependency to 3.6.1
data/README.md CHANGED
@@ -37,6 +37,7 @@ Commands:
37
37
  dashboard view and manage dashboards
38
38
  derivedmetric view and manage derived metrics
39
39
  event open, close, view, and manage events
40
+ ingestionpolicy view and manage ingestion policies
40
41
  integration view and manage Wavefront integrations
41
42
  link view and manage external links
42
43
  message read and mark user messages
@@ -48,6 +49,7 @@ Commands:
48
49
  serviceaccount view and manage service accounts
49
50
  settings view and manage system preferences
50
51
  source view and manage source tags and descriptions
52
+ usage view and manage usage reports
51
53
  user view and manage Wavefront users
52
54
  usergroup view and manage Wavefront user groups
53
55
  webhook view and manage webhooks
@@ -116,7 +116,11 @@ module WavefrontCli
116
116
  def failed_validation_message(input)
117
117
  format("'%<value>s' is not a valid %<thing>s ID.",
118
118
  value: input,
119
- thing: klass_word)
119
+ thing: descriptive_name)
120
+ end
121
+
122
+ def descriptive_name
123
+ klass_word
120
124
  end
121
125
 
122
126
  # Make a wavefront-sdk credentials object from standard
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ # Define the ingestionpolicy command.
6
+ #
7
+ class WavefrontCommandIngestionpolicy < WavefrontCommandBase
8
+ def thing
9
+ 'ingestion policy'
10
+ end
11
+
12
+ def things
13
+ 'ingestion policies'
14
+ end
15
+
16
+ def sdk_class
17
+ 'IngestionPolicy'
18
+ end
19
+
20
+ def _commands
21
+ ["list #{CMN} [-al] [-O fields] [-o offset] [-L limit]",
22
+ "create #{CMN} [-d description] <name>",
23
+ "describe #{CMN} <id>",
24
+ "delete #{CMN} <id>",
25
+ "dump #{CMN}",
26
+ "import #{CMN} [-u] <file>",
27
+ "set #{CMN} <key=value> <id>",
28
+ "add user #{CMN} <id> <user>...",
29
+ "remove user #{CMN} <id> <user>...",
30
+ "members #{CMN} <id>",
31
+ "for #{CMN} <user>",
32
+ "search #{CMN} [-al] [-o offset] [-L limit] [-O fields] <condition>..."]
33
+ end
34
+
35
+ def _options
36
+ [common_options,
37
+ "-l, --long list #{things} in detail",
38
+ "-a, --all list all #{things}",
39
+ "-o, --offset=n start list from nth #{thing}",
40
+ '-O, --fields=F1,F2,... only show given fields',
41
+ "-L, --limit=COUNT number of #{things} to list",
42
+ "-d, --desc=STRING reason for #{thing}",
43
+ "-u, --update update an existing #{thing}"]
44
+ end
45
+ end
@@ -23,6 +23,7 @@ class WavefrontCommandServiceaccount < WavefrontCommandBase
23
23
  "create #{CMN} [-I] [-d description] [-p permission...] [-g group...] " \
24
24
  '[-k usertoken...] <id>',
25
25
  "activate #{CMN} <id>",
26
+ "delete #{CMN} <account>...",
26
27
  "deactivate #{CMN} <id>",
27
28
  "dump #{CMN}",
28
29
  "groups #{CMN} <id>",
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ # Define the usage command.
6
+ #
7
+ class WavefrontCommandUsage < WavefrontCommandBase
8
+ def thing
9
+ 'usage report'
10
+ end
11
+
12
+ def _commands
13
+ ["export csv #{CMN} [-s time] [-e time] "]
14
+ end
15
+
16
+ def _options
17
+ [common_options,
18
+ "-s, --start=TIME time at which #{thing} begins " \
19
+ '(defaults to 24h ago)',
20
+ "-e, --end=TIME time at which #{thing} ends"]
21
+ end
22
+ end
@@ -28,6 +28,7 @@ class WavefrontCommandUser < WavefrontCommandBase
28
28
  "grant #{CMN} <privilege> to <id>",
29
29
  "revoke #{CMN} <privilege> from <id>",
30
30
  "business functions #{CMN} <id>",
31
+ "validate #{CMN} [-l] <user>...",
31
32
  "search #{CMN} [-al] [-o offset] [-L limit] [-O fields] <condition>..."]
32
33
  end
33
34
 
@@ -20,8 +20,8 @@ class WavefrontCommandWindow < WavefrontCommandBase
20
20
  def _commands
21
21
  ["list #{CMN} [-al] [-O fields] [-o offset] [-L limit]",
22
22
  "describe #{CMN} <id>",
23
- "create #{CMN} -d reason [-s time] [-e time] " \
24
- '[-A alert_tag...] [-T host_tag...] [-H host...] <title>',
23
+ "create #{CMN} [-s time] [-e time] " \
24
+ '[-A alert_tag...] [-T host_tag...] [-H host...] -d reason <title>',
25
25
  "close #{CMN} <id>",
26
26
  "extend #{CMN} (by|to) <time> <id>",
27
27
  "delete #{CMN} <id>",
@@ -51,8 +51,7 @@ class WavefrontCliController
51
51
  " #{CMD} --version",
52
52
  " #{CMD} --help",
53
53
  '',
54
- 'Commands:',
55
- '']
54
+ 'Commands:']
56
55
 
57
56
  cmds.sort.each do |k, v|
58
57
  s.<< format(' %-18<command>s %<desc>s',
@@ -44,7 +44,7 @@ module WavefrontDisplay
44
44
  run_list
45
45
  elsif method == 'do_search'
46
46
  run_search
47
- elsif respond_to?("#{method}_brief")
47
+ elsif respond_to?("#{method}_brief") && !options[:long]
48
48
  send("#{method}_brief")
49
49
  elsif respond_to?(method)
50
50
  send(method)
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module WavefrontDisplay
6
+ #
7
+ # Format human-readable output of ingestion policies.
8
+ #
9
+ class IngestionPolicy < Base
10
+ def do_add_user
11
+ puts format("Added %<quoted_user>s to '%<group_id>s'.",
12
+ quoted_user: quoted(options[:'<user>']),
13
+ group_id: options[:'<id>']).fold(TW, 0)
14
+ end
15
+
16
+ def do_remove_user
17
+ puts format("Removed %<quoted_user>s from '%<group_id>s'.",
18
+ quoted_user: quoted(options[:'<user>']),
19
+ group_id: options[:'<id>']).fold(TW, 0)
20
+ end
21
+
22
+ def do_for
23
+ puts data
24
+ end
25
+
26
+ alias do_members do_for
27
+ end
28
+ end
@@ -68,6 +68,11 @@ module WavefrontDisplay
68
68
  puts format("Deleted API token '#{options[:'<token_id>']}'.")
69
69
  end
70
70
 
71
+ def do_delete
72
+ puts format("Deleted #{friendly_name} %<quoted_account>s.",
73
+ quoted_account: quoted(options[:'<account>']))
74
+ end
75
+
71
76
  def search_identifier_key
72
77
  :identifier
73
78
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module WavefrontDisplay
6
+ #
7
+ # Format human-readable output for usage commands.
8
+ #
9
+ class Usage < Base
10
+ def do_export_csv
11
+ puts data[:message]
12
+ end
13
+ end
14
+ end
@@ -88,5 +88,16 @@ module WavefrontDisplay
88
88
  def do_business_functions
89
89
  puts data.sort
90
90
  end
91
+
92
+ def do_validate_brief
93
+ valid = data[0][:validUsers]
94
+ invalid = data[0][:invalidIdentifiers]
95
+
96
+ puts 'valid ',
97
+ valid.empty? ? ' <none>' : valid.map { |u| " #{u[:identifier]}" }
98
+
99
+ puts 'invalid',
100
+ invalid.empty? ? ' <none>' : invalid.map { |u| " #{u}" }
101
+ end
91
102
  end
92
103
  end
@@ -15,6 +15,10 @@ module WavefrontCli
15
15
  Wavefront::Exception::InvalidExternalLinkId
16
16
  end
17
17
 
18
+ def descriptive_name
19
+ 'external link'
20
+ end
21
+
18
22
  def do_create
19
23
  body = { name: options[:'<name>'],
20
24
  template: options[:'<template>'],
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'wavefront-sdk/support/mixins'
4
+ require_relative 'base'
5
+
6
+ module WavefrontCli
7
+ #
8
+ # CLI coverage for the ingestion policy part of the v2 'usage' API.
9
+ #
10
+ class IngestionPolicy < WavefrontCli::Base
11
+ include Wavefront::Mixins
12
+
13
+ def do_create
14
+ wf.create(create_body)
15
+ end
16
+
17
+ def do_add_user
18
+ account_hook.add_ingestion_policy(options[:'<id>'], options[:'<user>'])
19
+ end
20
+
21
+ def do_remove_user
22
+ account_hook.remove_ingestion_policy(options[:'<id>'],
23
+ options[:'<user>'])
24
+ end
25
+
26
+ def do_members
27
+ resp = do_describe
28
+ resp.response = resp.response[:sampledUserAccounts] +
29
+ resp.response[:sampledServiceAccounts]
30
+ resp
31
+ end
32
+
33
+ def do_for
34
+ resp = do_list
35
+ parent_policies = parent_policies(options[:'<user>'][0],
36
+ resp.response.items)
37
+ resp.response = parent_policies.map { |p| p[:id] }
38
+ resp
39
+ end
40
+
41
+ private
42
+
43
+ def parent_policies(user, items)
44
+ items.select do |p|
45
+ p[:sampledUserAccounts].include?(user) ||
46
+ p[:sampledServiceAccounts].include?(user)
47
+ end
48
+ end
49
+
50
+ def create_body
51
+ { name: options[:'<name>'], description: options[:desc] }.compact
52
+ end
53
+
54
+ def account_hook
55
+ require 'wavefront-sdk/account'
56
+ Wavefront::Account.new(mk_creds, mk_opts)
57
+ end
58
+
59
+ def descriptive_name
60
+ 'ingestion policy'
61
+ end
62
+
63
+ def validator_exception
64
+ Wavefront::Exception::InvalidIngestionPolicyId
65
+ end
66
+ end
67
+ end
@@ -18,6 +18,10 @@ module WavefrontCli
18
18
  Wavefront::Exception::InvalidMaintenanceWindowId
19
19
  end
20
20
 
21
+ def descriptive_name
22
+ 'maintenance window'
23
+ end
24
+
21
25
  def do_create
22
26
  body = build_body
23
27
 
@@ -22,5 +22,9 @@ module WavefrontCli
22
22
  def validator_exception
23
23
  Wavefront::Exception::InvalidSavedSearchId
24
24
  end
25
+
26
+ def descriptive_name
27
+ 'saved search'
28
+ end
25
29
  end
26
30
  end
@@ -46,6 +46,10 @@ module WavefrontCli
46
46
  wf.update(options[:'<id>'], body)
47
47
  end
48
48
 
49
+ def do_delete
50
+ account_hook.delete_accounts(options[:'<account>'])
51
+ end
52
+
49
53
  def do_leave
50
54
  cannot_noop!
51
55
  options[:'<group>'].each { |g| wf_usergroup_id?(g) }
@@ -184,5 +188,14 @@ module WavefrontCli
184
188
  rescue Wavefront::Exception::InvalidPermission => e
185
189
  raise e, 'Invalid permission'
186
190
  end
191
+
192
+ def descriptive_name
193
+ 'service account'
194
+ end
195
+
196
+ def account_hook
197
+ require 'wavefront-sdk/account'
198
+ Wavefront::Account.new(mk_creds, mk_opts)
199
+ end
187
200
  end
188
201
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'wavefront-sdk/support/mixins'
4
+ require_relative 'base'
5
+
6
+ module WavefrontCli
7
+ #
8
+ # CLI coverage for part of the v2 'usage' API. The rest is in the
9
+ # 'ingestionpolicy' command.
10
+ #
11
+ class Usage < WavefrontCli::Base
12
+ include Wavefront::Mixins
13
+
14
+ def do_export_csv
15
+ t_start = options[:start] ? parse_time(options[:start]) : default_start
16
+ t_end = options[:end] ? parse_time(options[:end]) : nil
17
+ wf.export_csv(t_start, t_end)
18
+ end
19
+
20
+ def default_start
21
+ parse_time(Time.now - 60 * 60 * 24)
22
+ end
23
+ end
24
+ end
@@ -49,6 +49,10 @@ module WavefrontCli
49
49
  wf.business_functions(options[:'<id>'])
50
50
  end
51
51
 
52
+ def do_validate
53
+ wf.validate_users(options[:'<user>'])
54
+ end
55
+
52
56
  def import_to_create(raw)
53
57
  { emailAddress: raw['items']['identifier'],
54
58
  groups: raw['items']['groups'] }.tap do |r|
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- WF_CLI_VERSION = '4.5.2'
3
+ WF_CLI_VERSION = '4.6.0'
data/spec/.rubocop.yml CHANGED
@@ -6,4 +6,4 @@ Metrics/AbcSize:
6
6
  Max: 45
7
7
 
8
8
  Metrics/ClassLength:
9
- Max: 250
9
+ Max: 300
@@ -59,7 +59,7 @@ module Minitest
59
59
  end
60
60
 
61
61
  assert_empty(out)
62
- assert_match(/is not a valid \w+ ID.$/, err)
62
+ assert_match(/is not a valid [\w ]+ ID.$/, err)
63
63
  end
64
64
 
65
65
  def assert_usage(command)
@@ -0,0 +1 @@
1
+ {"message":"Usage reporting\nTime selected:\n01/19/2020 15:31:38 +0000,01/20/2020 15:31:39 +0000\n\nUsage by Ingestion Policy\nIngestion Policy ID,Ingestion Policy Name,Ingestion Policy Description\n\nDetailed information\nIngestion Policy ID,Ingestion Policy Name,Account ID,Ingestion Type,Ingestion Source,Timestamp,pps\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579446000,82.11666666666666\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579449600,72.45\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579453200,64.0\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579456800,54.67213114754098\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579460400,73.13333333333334\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579464000,50.90163934426229\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579467600,49.42622950819672\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579471200,73.1\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579474800,44.57377049180328\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579478400,64.40983606557377\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579482000,66.9\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579485600,62.032786885245905\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579489200,64.44262295081967\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579492800,57.0\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579496400,61.78333333333333\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579500000,63.21311475409836\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579503600,59.03333333333333\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579507200,63.68333333333333\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579510800,73.98333333333333\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579514400,83.18333333333334\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579518000,80.73015873015873\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579521600,62.18333333333333\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579525200,54.049180327868854\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579528800,97.16666666666667\nUnassociated,Unassociated,services@id264.net,TimeSeries,Proxy,1579532400,95.36666666666666\n","code":200}
@@ -0,0 +1 @@
1
+ {"validUsers":[{"identifier":"rob@sysdef.xyz","customer":"sysdef","lastSuccessfulLogin":1579615042006,"groups":["derived_metrics_management","ingestion","events_management","embedded_charts","alerts_management","dashboard_management","application_management","user_management","agent_management","external_links_management","metrics_management","host_tag_management"],"userGroups":[{"id":"a7d2e651-cec1-4154-a5e8-1946f57ef5b3","name":"Everyone","permissions":[],"customer":"sysdef","properties":{"nameEditable":false,"permissionsEditable":true,"usersEditable":false},"description":"System group which contains all users"}],"ingestionPolicy":{"name":"example-policy","id":"example-policy-1579802191862","customer":"sysdef","description":"example ingestion policy","lastUpdatedMs":1579802191878,"lastUpdatedAccountId":"rob@sysdef.xyz"}},{"identifier":"services@id264.net","customer":"sysdef","lastSuccessfulLogin":1535978592119,"groups":["agent_management","ingestion"],"userGroups":[{"id":"a7d2e651-cec1-4154-a5e8-1946f57ef5b3","name":"Everyone","permissions":[],"customer":"sysdef","properties":{"nameEditable":false,"permissionsEditable":true,"usersEditable":false},"description":"System group which contains all users"}],"ingestionPolicy":{"name":"example-policy","id":"example-policy-1579802191862","customer":"sysdef","description":"example ingestion policy","lastUpdatedMs":1579802191878,"lastUpdatedAccountId":"rob@sysdef.xyz"}}],"invalidIdentifiers":["rob@id264.net","no-such-thing"]}
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative '../support/command_base'
5
+ require_relative '../../lib/wavefront-cli/usage'
6
+
7
+ # Ensure 'usage' commands produce the correct API calls.
8
+ #
9
+ class UsageEndToEndTest < EndToEndTest
10
+ def test_export_csv_start_time
11
+ quietly do
12
+ assert_cmd_gets(
13
+ "export csv -s #{start_time}",
14
+ "/api/v2/usage/exportcsv?startTime=#{start_time}",
15
+ response
16
+ )
17
+ end
18
+
19
+ assert_abort_on_missing_creds('export csv')
20
+ assert_usage('export')
21
+ end
22
+
23
+ def test_export_csv_with_range
24
+ quietly do
25
+ assert_cmd_gets(
26
+ "export csv -s #{start_time} -e #{end_time}",
27
+ "/api/v2/usage/exportcsv?endTime=#{end_time}&startTime=#{start_time}",
28
+ response
29
+ )
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def cmd_word
36
+ 'usage'
37
+ end
38
+
39
+ def api_path
40
+ 'usage'
41
+ end
42
+
43
+ def start_time
44
+ 1_579_500_000
45
+ end
46
+
47
+ def end_time
48
+ 1_579_533_333
49
+ end
50
+
51
+ def response
52
+ IO.read(RES_DIR + 'responses' + 'usage-export-csv.json')
53
+ end
54
+ end
55
+
56
+ # test class methods
57
+ #
58
+ class UsageTest < MiniTest::Test
59
+ attr_reader :wf
60
+
61
+ def setup
62
+ @wf = WavefrontCli::Usage.new({})
63
+ end
64
+
65
+ def test_default_start
66
+ calculated = Time.at(wf.default_start).to_date
67
+ expected = Date.today - 1
68
+ assert expected - calculated < 5
69
+ end
70
+ end
@@ -265,6 +265,15 @@ class UserEndToEndTest < EndToEndTest
265
265
  assert_usage('business functions')
266
266
  end
267
267
 
268
+ def test_validate
269
+ quietly do
270
+ assert_cmd_posts("validate #{user_list.join(' ')}",
271
+ '/api/v2/user/validateUsers',
272
+ user_list.to_json,
273
+ IO.read(RES_DIR + 'responses' + 'user-validate.json'))
274
+ end
275
+ end
276
+
268
277
  private
269
278
 
270
279
  def id
@@ -292,4 +301,11 @@ class UserEndToEndTest < EndToEndTest
292
301
  def privilege
293
302
  'alerts_management'
294
303
  end
304
+
305
+ def user_list
306
+ %w[rob@somewhere.xyz
307
+ services@elsewhere.net
308
+ rob@elsewhere.net
309
+ no-such-thing]
310
+ end
295
311
  end
@@ -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', '~> 3.6', '>= 3.6.1'
29
+ gem.add_runtime_dependency 'wavefront-sdk', '~> 3.7'
30
30
 
31
31
  gem.add_development_dependency 'minitest', '~> 5.11', '>= 5.11.0'
32
32
  gem.add_development_dependency 'rake', '~> 12.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: 4.5.2
4
+ version: 4.6.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-01-15 00:00:00.000000000 Z
11
+ date: 2020-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -44,20 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.6'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 3.6.1
47
+ version: '3.7'
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
52
  - - "~>"
56
53
  - !ruby/object:Gem::Version
57
- version: '3.6'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 3.6.1
54
+ version: '3.7'
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: minitest
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +174,7 @@ files:
180
174
  - lib/wavefront-cli/commands/dashboard.rb
181
175
  - lib/wavefront-cli/commands/derivedmetric.rb
182
176
  - lib/wavefront-cli/commands/event.rb
177
+ - lib/wavefront-cli/commands/ingestionpolicy.rb
183
178
  - lib/wavefront-cli/commands/integration.rb
184
179
  - lib/wavefront-cli/commands/link.rb
185
180
  - lib/wavefront-cli/commands/message.rb
@@ -191,6 +186,7 @@ files:
191
186
  - lib/wavefront-cli/commands/serviceaccount.rb
192
187
  - lib/wavefront-cli/commands/settings.rb
193
188
  - lib/wavefront-cli/commands/source.rb
189
+ - lib/wavefront-cli/commands/usage.rb
194
190
  - lib/wavefront-cli/commands/user.rb
195
191
  - lib/wavefront-cli/commands/usergroup.rb
196
192
  - lib/wavefront-cli/commands/webhook.rb
@@ -210,6 +206,7 @@ files:
210
206
  - lib/wavefront-cli/display/distribution.rb
211
207
  - lib/wavefront-cli/display/event.rb
212
208
  - lib/wavefront-cli/display/externallink.rb
209
+ - lib/wavefront-cli/display/ingestionpolicy.rb
213
210
  - lib/wavefront-cli/display/integration.rb
214
211
  - lib/wavefront-cli/display/maintenancewindow.rb
215
212
  - lib/wavefront-cli/display/message.rb
@@ -224,6 +221,7 @@ files:
224
221
  - lib/wavefront-cli/display/serviceaccount.rb
225
222
  - lib/wavefront-cli/display/settings.rb
226
223
  - lib/wavefront-cli/display/source.rb
224
+ - lib/wavefront-cli/display/usage.rb
227
225
  - lib/wavefront-cli/display/user.rb
228
226
  - lib/wavefront-cli/display/usergroup.rb
229
227
  - lib/wavefront-cli/display/webhook.rb
@@ -231,6 +229,7 @@ files:
231
229
  - lib/wavefront-cli/event.rb
232
230
  - lib/wavefront-cli/exception.rb
233
231
  - lib/wavefront-cli/externallink.rb
232
+ - lib/wavefront-cli/ingestionpolicy.rb
234
233
  - lib/wavefront-cli/integration.rb
235
234
  - lib/wavefront-cli/maintenancewindow.rb
236
235
  - lib/wavefront-cli/message.rb
@@ -261,6 +260,7 @@ files:
261
260
  - lib/wavefront-cli/source.rb
262
261
  - lib/wavefront-cli/stdlib/array.rb
263
262
  - lib/wavefront-cli/stdlib/string.rb
263
+ - lib/wavefront-cli/usage.rb
264
264
  - lib/wavefront-cli/user.rb
265
265
  - lib/wavefront-cli/usergroup.rb
266
266
  - lib/wavefront-cli/version.rb
@@ -357,7 +357,9 @@ files:
357
357
  - spec/wavefront-cli/resources/responses/query-cpu.json
358
358
  - spec/wavefront-cli/resources/responses/query.json
359
359
  - spec/wavefront-cli/resources/responses/savedsearch-list.json
360
+ - spec/wavefront-cli/resources/responses/usage-export-csv.json
360
361
  - spec/wavefront-cli/resources/responses/user-list.json
362
+ - spec/wavefront-cli/resources/responses/user-validate.json
361
363
  - spec/wavefront-cli/resources/responses/usergroup-list.json
362
364
  - spec/wavefront-cli/resources/responses/webhook-list.json
363
365
  - spec/wavefront-cli/resources/responses/window-list.json
@@ -372,6 +374,7 @@ files:
372
374
  - spec/wavefront-cli/source_spec.rb
373
375
  - spec/wavefront-cli/stdlib/array_spec.rb
374
376
  - spec/wavefront-cli/stdlib/string_spec.rb
377
+ - spec/wavefront-cli/usage_spec.rb
375
378
  - spec/wavefront-cli/user_spec.rb
376
379
  - spec/wavefront-cli/usergroup_spec.rb
377
380
  - spec/wavefront-cli/webhook_spec.rb
@@ -493,7 +496,9 @@ test_files:
493
496
  - spec/wavefront-cli/resources/responses/query-cpu.json
494
497
  - spec/wavefront-cli/resources/responses/query.json
495
498
  - spec/wavefront-cli/resources/responses/savedsearch-list.json
499
+ - spec/wavefront-cli/resources/responses/usage-export-csv.json
496
500
  - spec/wavefront-cli/resources/responses/user-list.json
501
+ - spec/wavefront-cli/resources/responses/user-validate.json
497
502
  - spec/wavefront-cli/resources/responses/usergroup-list.json
498
503
  - spec/wavefront-cli/resources/responses/webhook-list.json
499
504
  - spec/wavefront-cli/resources/responses/window-list.json
@@ -508,6 +513,7 @@ test_files:
508
513
  - spec/wavefront-cli/source_spec.rb
509
514
  - spec/wavefront-cli/stdlib/array_spec.rb
510
515
  - spec/wavefront-cli/stdlib/string_spec.rb
516
+ - spec/wavefront-cli/usage_spec.rb
511
517
  - spec/wavefront-cli/user_spec.rb
512
518
  - spec/wavefront-cli/usergroup_spec.rb
513
519
  - spec/wavefront-cli/webhook_spec.rb