wavefront-cli 6.1.0 → 7.1.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/.rubocop.yml +34 -1
- data/HISTORY.md +17 -1
- data/README.md +2 -3
- data/lib/wavefront-cli/account.rb +119 -0
- data/lib/wavefront-cli/alert.rb +29 -0
- data/lib/wavefront-cli/base.rb +0 -2
- data/lib/wavefront-cli/commands/.rubocop.yml +34 -0
- data/lib/wavefront-cli/commands/account.rb +61 -0
- data/lib/wavefront-cli/commands/alert.rb +1 -0
- data/lib/wavefront-cli/commands/base.rb +1 -1
- data/lib/wavefront-cli/commands/query.rb +4 -1
- data/lib/wavefront-cli/commands/role.rb +44 -0
- data/lib/wavefront-cli/commands/spy.rb +0 -5
- data/lib/wavefront-cli/commands/usergroup.rb +7 -11
- data/lib/wavefront-cli/commands/write.rb +7 -2
- data/lib/wavefront-cli/controller.rb +5 -63
- data/lib/wavefront-cli/display/account.rb +122 -0
- data/lib/wavefront-cli/display/alert.rb +8 -0
- data/lib/wavefront-cli/display/base.rb +1 -1
- data/lib/wavefront-cli/display/cloudintegration.rb +3 -2
- data/lib/wavefront-cli/display/printer/long.rb +2 -1
- data/lib/wavefront-cli/display/role.rb +66 -0
- data/lib/wavefront-cli/display/settings.rb +1 -0
- data/lib/wavefront-cli/display/usergroup.rb +18 -14
- data/lib/wavefront-cli/exception_handler.rb +87 -0
- data/lib/wavefront-cli/output/hcl/base.rb +1 -1
- data/lib/wavefront-cli/query.rb +13 -7
- data/lib/wavefront-cli/role.rb +54 -0
- data/lib/wavefront-cli/serviceaccount.rb +0 -6
- data/lib/wavefront-cli/spy.rb +0 -8
- data/lib/wavefront-cli/usergroup.rb +8 -8
- data/lib/wavefront-cli/version.rb +1 -1
- data/lib/wavefront-cli/write.rb +28 -4
- data/spec/.rubocop.yml +34 -0
- data/spec/test_mixins/delete.rb +1 -2
- data/spec/wavefront-cli/account_spec.rb +303 -0
- data/spec/wavefront-cli/alert_spec.rb +28 -0
- data/spec/wavefront-cli/commands/write_spec.rb +1 -1
- data/spec/wavefront-cli/event_spec.rb +1 -1
- data/spec/wavefront-cli/output/csv/query_spec.rb +1 -1
- data/spec/wavefront-cli/output/wavefront/query_spec.rb +2 -2
- data/spec/wavefront-cli/query_spec.rb +20 -3
- data/spec/wavefront-cli/role_spec.rb +187 -0
- data/spec/wavefront-cli/serviceaccount_spec.rb +3 -3
- data/spec/wavefront-cli/usergroup_spec.rb +48 -43
- data/spec/wavefront-cli/write_spec.rb +44 -0
- data/wavefront-cli.gemspec +3 -3
- metadata +30 -27
- data/lib/wavefront-cli/commands/user.rb +0 -54
- data/lib/wavefront-cli/display/user.rb +0 -103
- data/lib/wavefront-cli/user.rb +0 -92
- data/spec/wavefront-cli/resources/responses/user-list.json +0 -1
- data/spec/wavefront-cli/user_spec.rb +0 -311
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1e0ee9608157074b898b31b5c169f432e4feed2d4af31e184b80016675f73cc
|
4
|
+
data.tar.gz: 4e845f4a56684903f2f1d800ee41cad9a8062a969a8fcb31e839bd51fac3891c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4635ae95d16aeb2bcb779010fc435945300991f1853ba75488a9e2914b6860129be4257ca13d5765c004efb746ce5f03fa7d686f71bb13ec5fe860f77c4cddbe
|
7
|
+
data.tar.gz: 501b3425f488c977363b42ec9d362d3e0c56ef8ba0b7cc91a2feb1da8bb2b91d2a1c27ade8cf8d3e5c01f3bde74cf0a582ead9c84f4dc4f0ae6e71c1a3691cc9
|
data/.rubocop.yml
CHANGED
@@ -8,10 +8,43 @@ Metrics/ClassLength:
|
|
8
8
|
|
9
9
|
Style/IfUnlessModifier:
|
10
10
|
Enabled: false # because it wants to make lines >80 chars
|
11
|
-
|
12
11
|
Style/HashEachMethods:
|
13
12
|
Enabled: true
|
14
13
|
Style/HashTransformKeys:
|
15
14
|
Enabled: true
|
16
15
|
Style/HashTransformValues:
|
17
16
|
Enabled: true
|
17
|
+
|
18
|
+
# New compatabilities
|
19
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
20
|
+
Enabled: true
|
21
|
+
Layout/SpaceAroundMethodCallOperator:
|
22
|
+
Enabled: true
|
23
|
+
Lint/RaiseException:
|
24
|
+
Enabled: true
|
25
|
+
Lint/StructNewOverride:
|
26
|
+
Enabled: true
|
27
|
+
Style/ExponentialNotation:
|
28
|
+
Enabled: true
|
29
|
+
Style/SlicingWithRange:
|
30
|
+
Enabled: true
|
31
|
+
Lint/DeprecatedOpenSSLConstant:
|
32
|
+
Enabled: true
|
33
|
+
Lint/MixedRegexpCaptureTypes:
|
34
|
+
Enabled: true
|
35
|
+
Style/RedundantRegexpCharacterClass:
|
36
|
+
Enabled: true
|
37
|
+
Style/RedundantRegexpEscape:
|
38
|
+
Enabled: true
|
39
|
+
Style/AccessorGrouping:
|
40
|
+
Enabled: true
|
41
|
+
Style/BisectedAttrAccessor:
|
42
|
+
Enabled: true
|
43
|
+
Style/RedundantAssignment:
|
44
|
+
Enabled: true
|
45
|
+
Style/RedundantFetchBlock:
|
46
|
+
Enabled: true
|
47
|
+
|
48
|
+
# Is nothing sacred?
|
49
|
+
Layout/LineLength:
|
50
|
+
Max: 80
|
data/HISTORY.md
CHANGED
@@ -1,17 +1,33 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 7.1.0 (2020-08-07)
|
4
|
+
* Remove `user` command. (Breaking change.)
|
5
|
+
* Add `account` command.
|
6
|
+
* Complete coverage of roles and user groups.
|
7
|
+
* Add `alert affected hosts` command to show which hosts are affected by one
|
8
|
+
or all firing alerts.
|
9
|
+
* Remove obsolete `group` subcommands. (`grant` and `revoke`).
|
10
|
+
* Add `write noise` command to send a flow of random data to an endpoint.
|
11
|
+
* Better information when working with cloud integrations.
|
12
|
+
|
13
|
+
## 7.0.0 (unreleased)
|
14
|
+
|
3
15
|
## 6.1.0 (2020-06-02)
|
4
16
|
* Add `-A` flag to `proxy list` command, to only list active proxies
|
5
17
|
|
6
18
|
## 6.0.0 (2020-04-07)
|
7
19
|
* Remove `cluster` command. (Breaking change.)
|
20
|
+
* Add `role` command.
|
21
|
+
* Add `--nocache`, `--nostrict` and `--histogram-view` options to `query`
|
22
|
+
command.
|
23
|
+
* Require 5.x of [the SDK](https://github.com/snltd/wavefront-sdk).
|
8
24
|
|
9
25
|
## 5.1.2 (2020-02-28)
|
10
26
|
* Fix regression in HCL dashboard export.
|
11
27
|
* Properly handle unavailable port when sending distributions to a proxy.
|
12
28
|
|
13
29
|
## 5.1.1 (2020-02-20)
|
14
|
-
* Say whether `--upsert` did
|
30
|
+
* Say whether `--upsert` did an update or an import.
|
15
31
|
|
16
32
|
## 5.1.0 (2020-02-20)
|
17
33
|
* Add `-U` (`--upsert`) option to `import` sub-commands.
|
data/README.md
CHANGED
@@ -51,7 +51,6 @@ Commands:
|
|
51
51
|
source view and manage source tags and descriptions
|
52
52
|
spy monitor traffic going into Wavefront
|
53
53
|
usage view and manage usage reports
|
54
|
-
user view and manage Wavefront users
|
55
54
|
usergroup view and manage Wavefront user groups
|
56
55
|
webhook view and manage webhooks
|
57
56
|
window view and manage maintenance windows
|
@@ -103,7 +102,7 @@ $ wf proxy list
|
|
103
102
|
|
104
103
|
You can get more verbose listings with the `-l` flag. Results may be
|
105
104
|
paginated. You can progress through pages with the `-L` and `-o`
|
106
|
-
options, or
|
105
|
+
options, or use `--all` to get everything in one go.
|
107
106
|
|
108
107
|
### Describing Things
|
109
108
|
|
@@ -151,7 +150,7 @@ mentioned above, human-readable listings and desctiptions may omit
|
|
151
150
|
data which is not likely to be useful, or which is extremely hard to
|
152
151
|
present in a readable way.
|
153
152
|
|
154
|
-
If you `describe` an object like a dashboard,
|
153
|
+
If you `describe` an object like a dashboard, account, webhook etc as
|
155
154
|
`json` or `yaml`, and send the output to a file, you can re-import
|
156
155
|
that data. The format of the file to be imported is automatically
|
157
156
|
detected.
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
module WavefrontCli
|
6
|
+
#
|
7
|
+
# CLI coverage for the v2 'account' API.
|
8
|
+
#
|
9
|
+
class Account < WavefrontCli::Base
|
10
|
+
alias do_roles do_describe
|
11
|
+
alias do_groups do_describe
|
12
|
+
alias do_ingestionpolicy do_describe
|
13
|
+
alias do_permissions do_describe
|
14
|
+
|
15
|
+
def do_role_add_to
|
16
|
+
wf_account_id?(options[:'<id>'])
|
17
|
+
wf.add_roles(options[:'<id>'], options[:'<role>'])
|
18
|
+
end
|
19
|
+
|
20
|
+
def do_role_remove_from
|
21
|
+
wf_account_id?(options[:'<id>'])
|
22
|
+
wf.remove_roles(options[:'<id>'], options[:'<role>'])
|
23
|
+
end
|
24
|
+
|
25
|
+
def do_group_add_to
|
26
|
+
wf_account_id?(options[:'<id>'])
|
27
|
+
wf.add_user_groups(options[:'<id>'], options[:'<group>'])
|
28
|
+
end
|
29
|
+
|
30
|
+
def do_group_remove_from
|
31
|
+
wf_account_id?(options[:'<id>'])
|
32
|
+
wf.remove_user_groups(options[:'<id>'], options[:'<group>'])
|
33
|
+
end
|
34
|
+
|
35
|
+
def do_business_functions
|
36
|
+
wf_user_id?(options[:'<id>'])
|
37
|
+
wf.business_functions(options[:'<id>'])
|
38
|
+
end
|
39
|
+
|
40
|
+
def do_grant_to
|
41
|
+
wf.grant(options[:'<account>'], options[:'<permission>'])
|
42
|
+
end
|
43
|
+
|
44
|
+
def do_revoke_from
|
45
|
+
wf.revoke(options[:'<account>'], options[:'<permission>'])
|
46
|
+
end
|
47
|
+
|
48
|
+
def do_ingestionpolicy_add_to
|
49
|
+
wf_account_id?(options[:'<id>'])
|
50
|
+
wf.add_ingestion_policy(options[:'<policy>'], [options[:'<id>']])
|
51
|
+
end
|
52
|
+
|
53
|
+
def do_ingestionpolicy_remove_from
|
54
|
+
wf_account_id?(options[:'<id>'])
|
55
|
+
wf_ingestionpolicy_id?(options[:'<policy>'])
|
56
|
+
wf.remove_ingestion_policy(options[:'<policy>'], [options[:'<id>']])
|
57
|
+
end
|
58
|
+
|
59
|
+
def do_create_user
|
60
|
+
wf_user_id?(options[:'<id>'])
|
61
|
+
wf.user_create(user_body)
|
62
|
+
end
|
63
|
+
|
64
|
+
def do_invite_user
|
65
|
+
wf_user_id?(options[:'<id>'])
|
66
|
+
wf.user_invite([user_body])
|
67
|
+
end
|
68
|
+
|
69
|
+
def do_validate
|
70
|
+
wf.validate_accounts(options[:'<account>'])
|
71
|
+
end
|
72
|
+
|
73
|
+
def extra_validation
|
74
|
+
validate_policy
|
75
|
+
validate_permission
|
76
|
+
validate_roles
|
77
|
+
validate_groups
|
78
|
+
validate_accounts
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def validate_policy
|
84
|
+
wf_ingestionpolicy_id?(options[:'<policy>']) if options[:'<policy>']
|
85
|
+
end
|
86
|
+
|
87
|
+
def validate_permission
|
88
|
+
wf_permission?(options[:'<permission>']) if options[:'<permission>']
|
89
|
+
end
|
90
|
+
|
91
|
+
def validate_roles
|
92
|
+
options[:'<role>'].each { |r| wf_role_id?(r) }
|
93
|
+
end
|
94
|
+
|
95
|
+
def validate_groups
|
96
|
+
options[:'<group>'].each { |g| wf_usergroup_id?(g) }
|
97
|
+
end
|
98
|
+
|
99
|
+
def validate_accounts
|
100
|
+
options[:'<account>'].each { |a| wf_account_id?(a) }
|
101
|
+
end
|
102
|
+
|
103
|
+
# Object used to create and invite users. We deal with the permissions
|
104
|
+
# seperately because if we don't supply any and they get compacted out,
|
105
|
+
# the user is created with a default set of perms, and we don't want that.
|
106
|
+
#
|
107
|
+
def user_body
|
108
|
+
raw = {
|
109
|
+
emailAddress: options[:'<id>'],
|
110
|
+
roles: options[:roleid],
|
111
|
+
ingestionPolicyId: options[:policyid],
|
112
|
+
userGroups: options[:groupid]
|
113
|
+
}.reject { |_k, v| v&.empty? }.compact
|
114
|
+
|
115
|
+
raw[:groups] = options[:permission]
|
116
|
+
raw
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/lib/wavefront-cli/alert.rb
CHANGED
@@ -50,6 +50,14 @@ module WavefrontCli
|
|
50
50
|
wf.history(options[:'<id>'], options[:offset], options[:limit])
|
51
51
|
end
|
52
52
|
|
53
|
+
def do_affected_hosts
|
54
|
+
if options[:'<id>']
|
55
|
+
affected_hosts_for_id(options[:'<id>'])
|
56
|
+
else
|
57
|
+
all_affected_hosts
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
53
61
|
def do_currently
|
54
62
|
state = options[:'<state>'].to_s
|
55
63
|
|
@@ -146,5 +154,26 @@ module WavefrontCli
|
|
146
154
|
end
|
147
155
|
end.compact
|
148
156
|
end
|
157
|
+
|
158
|
+
def all_affected_hosts
|
159
|
+
cannot_noop!
|
160
|
+
in_state(:firing).tap do |r|
|
161
|
+
r.response = r.response.items.each_with_object({}) do |alert, aggr|
|
162
|
+
aggr[alert[:id]] = affected_hosts_for_id(alert[:id]).response
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def affected_hosts_for_id(id)
|
168
|
+
resp = wf.describe(id)
|
169
|
+
|
170
|
+
return if options[:noop]
|
171
|
+
|
172
|
+
return resp unless resp.ok? && resp.response.key?(:failingHostLabelPairs)
|
173
|
+
|
174
|
+
resp.tap do |r|
|
175
|
+
r.response = r.response[:failingHostLabelPairs].map { |h| h[:host] }
|
176
|
+
end
|
177
|
+
end
|
149
178
|
end
|
150
179
|
end
|
data/lib/wavefront-cli/base.rb
CHANGED
@@ -485,7 +485,6 @@ module WavefrontCli
|
|
485
485
|
# @param cond [String] a search condition, like "key=value"
|
486
486
|
# @return [Hash] of matchingMethod and negated
|
487
487
|
#
|
488
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
489
488
|
# rubocop:disable Metrics/MethodLength
|
490
489
|
def matching_method(cond)
|
491
490
|
case cond
|
@@ -506,7 +505,6 @@ module WavefrontCli
|
|
506
505
|
end
|
507
506
|
end
|
508
507
|
# rubocop:enable Metrics/MethodLength
|
509
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
510
508
|
|
511
509
|
# Return a detailed description of one item, if an ID has been
|
512
510
|
# given, or all items if it has not.
|
@@ -11,3 +11,37 @@ Style/HashTransformKeys:
|
|
11
11
|
Enabled: true
|
12
12
|
Style/HashTransformValues:
|
13
13
|
Enabled: true
|
14
|
+
|
15
|
+
# new compatabilities
|
16
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
17
|
+
Enabled: true
|
18
|
+
Layout/SpaceAroundMethodCallOperator:
|
19
|
+
Enabled: true
|
20
|
+
Lint/RaiseException:
|
21
|
+
Enabled: true
|
22
|
+
Lint/StructNewOverride:
|
23
|
+
Enabled: true
|
24
|
+
Style/ExponentialNotation:
|
25
|
+
Enabled: true
|
26
|
+
Style/SlicingWithRange:
|
27
|
+
Enabled: true
|
28
|
+
Lint/DeprecatedOpenSSLConstant:
|
29
|
+
Enabled: true
|
30
|
+
Lint/MixedRegexpCaptureTypes:
|
31
|
+
Enabled: true
|
32
|
+
Style/RedundantRegexpCharacterClass:
|
33
|
+
Enabled: true
|
34
|
+
Style/RedundantRegexpEscape:
|
35
|
+
Enabled: true
|
36
|
+
Style/AccessorGrouping:
|
37
|
+
Enabled: true
|
38
|
+
Style/BisectedAttrAccessor:
|
39
|
+
Enabled: true
|
40
|
+
Style/RedundantAssignment:
|
41
|
+
Enabled: true
|
42
|
+
Style/RedundantFetchBlock:
|
43
|
+
Enabled: true
|
44
|
+
|
45
|
+
# Is nothing sacred?
|
46
|
+
Layout/LineLength:
|
47
|
+
Max: 80
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
# Define the account command.
|
6
|
+
#
|
7
|
+
class WavefrontCommandAccount < WavefrontCommandBase
|
8
|
+
def description
|
9
|
+
"view and manage Wavefront #{things}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def _commands
|
13
|
+
["list #{CMN} [-sSal] [-O fields] [-o offset] [-L limit]",
|
14
|
+
"describe #{CMN} <id>",
|
15
|
+
"create user #{CMN} [-m permission...] [-g group-id...] " \
|
16
|
+
'[-r role-id...] [-i policy-id] <id>',
|
17
|
+
"invite user #{CMN} [-m permission...] [-g group-id...] " \
|
18
|
+
'[-r role-id...] [-i policy-id] <id>',
|
19
|
+
"delete #{CMN} <id>",
|
20
|
+
"dump #{CMN}",
|
21
|
+
"import #{CMN} [-uU] <file>",
|
22
|
+
"role #{CMN} add to <id> <role>...",
|
23
|
+
"role #{CMN} remove from <id> <role>...",
|
24
|
+
"roles #{CMN} <id>",
|
25
|
+
"ingestionpolicy #{CMN} add to <id> <policy>",
|
26
|
+
"ingestionpolicy #{CMN} remove from <id> <policy>",
|
27
|
+
"ingestionpolicy #{CMN} <id>",
|
28
|
+
"group #{CMN} add to <id> <group>...",
|
29
|
+
"group #{CMN} remove from <id> <group>...",
|
30
|
+
"groups #{CMN} <id>",
|
31
|
+
"grant #{CMN} <permission> to <account>...",
|
32
|
+
"revoke #{CMN} <permission> from <account>...",
|
33
|
+
"permissions #{CMN} <id>",
|
34
|
+
"business functions #{CMN} <id>",
|
35
|
+
"validate #{CMN} [-l] <account>...",
|
36
|
+
"search #{CMN} [-al] [-o offset] [-L limit] [-O fields] <condition>..."]
|
37
|
+
end
|
38
|
+
|
39
|
+
def _options
|
40
|
+
[common_options,
|
41
|
+
"-l, --long list #{things} in detail",
|
42
|
+
"-a, --all list all #{things}",
|
43
|
+
"-o, --offset=n start from nth #{thing}",
|
44
|
+
"-L, --limit=COUNT number of #{things} to list",
|
45
|
+
'-s, --service list only service accounts',
|
46
|
+
'-S, --user list only user accounts',
|
47
|
+
'-O, --fields=F1,F2,... only show given fields',
|
48
|
+
"-u, --update update an existing #{thing}",
|
49
|
+
"-U, --upsert import new or update existing #{thing}",
|
50
|
+
'-m, --permission=STRING Wavefront permission name',
|
51
|
+
'-g, --groupid=STRING Wavefront usergroup ID',
|
52
|
+
'-r, --roleid=STRING Wavefront role ID',
|
53
|
+
'-i, --policyid=STRING Wavefront ingestion policy ID']
|
54
|
+
end
|
55
|
+
|
56
|
+
def postscript
|
57
|
+
'Service accounts can be partially managed with this command, but ' \
|
58
|
+
"'wf serviceaccount' has more features.\n\nFor a list of permissions, " \
|
59
|
+
"run 'wf settings list permissions'.".fold(TW, 0)
|
60
|
+
end
|
61
|
+
end
|
@@ -8,6 +8,7 @@ class WavefrontCommandAlert < WavefrontCommandBase
|
|
8
8
|
def _commands
|
9
9
|
["list #{CMN} [-al] [-O fields] [-o offset] [-L limit]",
|
10
10
|
"firing #{CMN} [-o offset] [-L limit]",
|
11
|
+
"affected #{CMN} hosts [<id>]",
|
11
12
|
"snoozed #{CMN} [-o offset] [-L limit]",
|
12
13
|
"describe #{CMN} [-v version] <id>",
|
13
14
|
"delete #{CMN} <id>",
|
@@ -12,7 +12,7 @@ class WavefrontCommandQuery < WavefrontCommandBase
|
|
12
12
|
def _commands
|
13
13
|
['aliases [-DV] [-c file] [-P profile]',
|
14
14
|
"#{CMN} [-g granularity] [-s time] [-e time] " \
|
15
|
-
'[-
|
15
|
+
'[-ikvCGKOW] [-S mode] [-N name] [-p points] [-F options] <query>',
|
16
16
|
"raw #{CMN} [-H host] [-s time] [-e time] " \
|
17
17
|
'[-F options] <metric>',
|
18
18
|
"run #{CMN} [-g granularity] [-s time] [-e time] " \
|
@@ -36,6 +36,9 @@ class WavefrontCommandQuery < WavefrontCommandBase
|
|
36
36
|
'-F, --format-opts=STRING comma-separated options to pass to ' \
|
37
37
|
'output formatter',
|
38
38
|
'-k, --nospark do not show sparkline',
|
39
|
+
'-C, --nocache do not use the query cache',
|
40
|
+
'-K, --nostrict allow points outside the query window',
|
41
|
+
'-G, --histogram-view use histogram view rather than metric',
|
39
42
|
'-W, --nowarn do not show API warning messages']
|
40
43
|
end
|
41
44
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
# Define the 'role' command.
|
6
|
+
#
|
7
|
+
class WavefrontCommandRole < WavefrontCommandBase
|
8
|
+
def _commands
|
9
|
+
["list #{CMN} [-al] [-O fields] [-o offset] [-L limit]",
|
10
|
+
"describe #{CMN} <id>",
|
11
|
+
"create #{CMN} [-d description] [-p permission...] <name>",
|
12
|
+
"delete #{CMN} <id>",
|
13
|
+
"dump #{CMN}",
|
14
|
+
"import #{CMN} [-uU] <file>",
|
15
|
+
"set #{CMN} <key=value> <id>",
|
16
|
+
"accounts #{CMN} <id>",
|
17
|
+
"groups #{CMN} <id>",
|
18
|
+
"permissions #{CMN} <id>",
|
19
|
+
"give #{CMN} <id> to <member>...",
|
20
|
+
"take #{CMN} <id> from <member>...",
|
21
|
+
"grant #{CMN} <permission> to <id>",
|
22
|
+
"revoke #{CMN} <permission> from <id>",
|
23
|
+
"search #{CMN} [-al] [-o offset] [-L limit] [-O fields] <condition>..."]
|
24
|
+
end
|
25
|
+
|
26
|
+
def _options
|
27
|
+
[common_options,
|
28
|
+
"-l, --long list #{things} in detail",
|
29
|
+
"-a, --all list all #{things}",
|
30
|
+
"-o, --offset=n start from nth #{thing}",
|
31
|
+
"-L, --limit=COUNT number of #{things} to list",
|
32
|
+
'-O, --fields=F1,F2,... only show given fields',
|
33
|
+
"-u, --update update an existing #{thing}",
|
34
|
+
"-U, --upsert import new or update existing #{thing}",
|
35
|
+
"-d, --description=STRING description of #{thing}",
|
36
|
+
'-p, --permission=STRING Wavefront permission']
|
37
|
+
end
|
38
|
+
|
39
|
+
def postscript
|
40
|
+
"A role 'member' can be an account ID or a usergroup ID. 'wf settings " \
|
41
|
+
"list permissions' will give you a list of all currently supported " \
|
42
|
+
'permissions.'.fold(TW, 0)
|
43
|
+
end
|
44
|
+
end
|