lm_rest 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/system_category_cleaner.rb +57 -0
- data/lib/lm_rest/api_client.rb +18 -9
- data/lib/lm_rest/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e0f1787b39c49b60f1431d41adde6a144152b1f2aed2b1017e7db5d1b45a75a
|
4
|
+
data.tar.gz: 42196790b7103ebdb125758e1e1bc3992553518384016c2d4c66eda1d55ff3fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c33110c07110f9a8e82225f1cfc7950916d8aa2613e3180069ef5ded01cf71f85773fce6ee2d3910ee4d2697a6dc28b3976efe43ed73eb1fac3266bbb4dd3d8
|
7
|
+
data.tar.gz: ddf554ea7252633c7f9aa41a4e6a46573d3d9ac4c23b6269d2b0a2c0b32a75dbdbda044518e8923a41c7f95d4fc771c88aa04687a25ef80cce71d45a84a7ae6c
|
@@ -0,0 +1,57 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
#
|
4
|
+
# Based on a script written originally by Matt Dunham
|
5
|
+
#
|
6
|
+
require 'lm_rest'
|
7
|
+
|
8
|
+
def usage
|
9
|
+
puts "USAGE:\t" + $PROGRAM_NAME + ' account id key applies_to category'
|
10
|
+
puts ""
|
11
|
+
puts "\taccount - just the beginning of your portal name, like 'hooli'"
|
12
|
+
puts "\tid - API key access id"
|
13
|
+
puts "\tkey - API key access key"
|
14
|
+
puts "\tapplies_to - AppliesTo (in quotes on one line) matching devices you want to scrub"
|
15
|
+
puts "\tcategory - The system category value you wish to remove."
|
16
|
+
end
|
17
|
+
|
18
|
+
if ARGV.length ==5
|
19
|
+
@account = ARGV[0]
|
20
|
+
@id = ARGV[1]
|
21
|
+
@key = ARGV[2]
|
22
|
+
@at = ARGV[3]
|
23
|
+
@category = ARGV[4]
|
24
|
+
@lm = LMRest::APIClient.new(@account, @id, @key)
|
25
|
+
else
|
26
|
+
usage
|
27
|
+
fail 'Bad arguments.'
|
28
|
+
end
|
29
|
+
|
30
|
+
request = {
|
31
|
+
currentAppliesTo: "true()",
|
32
|
+
needInheritProps: true,
|
33
|
+
originalAppliesTo: "true()",
|
34
|
+
type: "testAppliesTo"
|
35
|
+
}
|
36
|
+
|
37
|
+
devices = @lm.request(:post, "/functions", request)['originalMatches'].map do |device|
|
38
|
+
[device['id'], device['name']]
|
39
|
+
end
|
40
|
+
|
41
|
+
devices.each do |id, name|
|
42
|
+
puts "Fetching device id #{id}, #{name}"
|
43
|
+
current = @lm.request(:get, "/device/devices/#{id}/properties/system.categories", nil)
|
44
|
+
if (@lm.remaining.to_f / @lm.limit.to_f) * 100 <= 10
|
45
|
+
puts "sleeping for #{@lm.window} to avoid rate limit violation"
|
46
|
+
sleep @lm.window
|
47
|
+
end
|
48
|
+
if current['value'].split(',').include? @category
|
49
|
+
new_string = current['value'].split(',') - [@category]
|
50
|
+
new = current
|
51
|
+
new['value'] = new_string.join(",")
|
52
|
+
@lm.request(:put, "/device/devices/#{id}/properties/system.categories", new)
|
53
|
+
puts " Successfully scrubbed!"
|
54
|
+
else
|
55
|
+
puts " No scrubbing needed."
|
56
|
+
end
|
57
|
+
end
|
data/lib/lm_rest/api_client.rb
CHANGED
@@ -17,6 +17,7 @@ module LMRest
|
|
17
17
|
BASE_URL_SUFFIX = '.logicmonitor.com/santaba/rest'
|
18
18
|
|
19
19
|
attr_reader :company, :api_url, :access_id
|
20
|
+
attr_reader :limit, :remaining, :window
|
20
21
|
|
21
22
|
def initialize(company = nil, access_id = nil, access_key = nil)
|
22
23
|
APIClient.setup
|
@@ -78,15 +79,20 @@ module LMRest
|
|
78
79
|
|
79
80
|
json_params = params.to_json
|
80
81
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
82
|
+
begin
|
83
|
+
case method
|
84
|
+
when :get
|
85
|
+
response = RestClient.get(url, headers)
|
86
|
+
when :post
|
87
|
+
response = RestClient.post(url, json_params, headers)
|
88
|
+
when :put
|
89
|
+
response = RestClient.put(url, json_params, headers)
|
90
|
+
when :delete
|
91
|
+
response = RestClient.delete(url, headers: headers)
|
92
|
+
end
|
93
|
+
rescue => e
|
94
|
+
puts e.http_body
|
95
|
+
raise
|
90
96
|
end
|
91
97
|
|
92
98
|
if response.code != 200
|
@@ -94,6 +100,9 @@ module LMRest
|
|
94
100
|
raise
|
95
101
|
end
|
96
102
|
|
103
|
+
@limit = response.headers['x_rate_limit_limit']
|
104
|
+
@remaining = response.headers['x_rate_limit_remaining']
|
105
|
+
@window = response.headers['x_rate_limit_window']
|
97
106
|
|
98
107
|
JSON.parse(response.body)
|
99
108
|
end
|
data/lib/lm_rest/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lm_rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Rodrigues
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- bin/console
|
100
100
|
- bin/ds_checker.rb
|
101
101
|
- bin/setup
|
102
|
+
- bin/system_category_cleaner.rb
|
102
103
|
- lib/lm_rest.rb
|
103
104
|
- lib/lm_rest/api_client.rb
|
104
105
|
- lib/lm_rest/request_params.rb
|