zenoss_api 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -6
- data/lib/zenoss_api/version.rb +1 -1
- data/lib/zenoss_api.rb +44 -7
- data/test.sh +15 -0
- metadata +17 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 701b7cc0a2bd590e8d5dcf26047c97bbebd40b63
|
4
|
+
data.tar.gz: 43f38fb45ad3979d5b99759e98186dde1bc9963b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7795a3a6c27dd3515648e95631b1cb3a7adf4adcfcfd25857c87249196f049df7e03f305acd777743165f0036f72bb9e20a0c8fbc611456a9e760deea7096c99
|
7
|
+
data.tar.gz: b07d9f7d5517555ca56e238422a7a80b919a55053437ae479b32bca21abfc37a070cf06c222a65acf16e5d3f62be31b5afbf12f5d07ddf46bdd2390b0ac4ad3e
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Or install it yourself as:
|
|
23
23
|
Get all device classes:
|
24
24
|
|
25
25
|
```bash
|
26
|
-
zenapi -m getDeviceClasses | jq '.
|
26
|
+
zenapi -m getDeviceClasses | jq '.deviceClasses[]'
|
27
27
|
```
|
28
28
|
|
29
29
|
Get all groups:
|
@@ -35,12 +35,13 @@ zenapi -m getGroups | jq '.groups[] | .name'
|
|
35
35
|
Get devices in device class, limit to 30:
|
36
36
|
|
37
37
|
```bash
|
38
|
-
zenapi
|
38
|
+
zenapi -a uid=/zport/dmd/Devices/Server/Linux --limit 30 | jq '.devices[]'
|
39
39
|
```
|
40
|
+
|
40
41
|
Get device by name:
|
41
42
|
|
42
43
|
```bash
|
43
|
-
zenapi -m getDevices -
|
44
|
+
zenapi -m getDevices -p name=hostname|fqdn
|
44
45
|
```
|
45
46
|
|
46
47
|
Get most recent events, limit to 10:
|
@@ -51,17 +52,17 @@ zenapi -m query -r EventsRouter --limit 10 | jq '.events[] | .device | .text'
|
|
51
52
|
|
52
53
|
Get event detail:
|
53
54
|
````bash
|
54
|
-
zenapi -r EventsRouter -m detail -a evid
|
55
|
+
zenapi -r EventsRouter -m detail -a evid=0025b520-10e1-bfad-11e6-9abe93a9a0ae | jq '.'
|
55
56
|
````
|
56
57
|
|
57
58
|
Get all routers:
|
58
59
|
````bash
|
59
|
-
zenapi -r IntrospectionRouter -m getAllRouters
|
60
|
+
zenapi -r IntrospectionRouter -m getAllRouters | jq '.data[] | .name'
|
60
61
|
````
|
61
62
|
|
62
63
|
Introspect router methods:
|
63
64
|
````bash
|
64
|
-
zenapi -r IntrospectionRouter -m getRouterMethods -a router
|
65
|
+
zenapi -r IntrospectionRouter -m getRouterMethods -a router=DeviceRouter | jq '.data'
|
65
66
|
````
|
66
67
|
|
67
68
|
## Development
|
data/lib/zenoss_api/version.rb
CHANGED
data/lib/zenoss_api.rb
CHANGED
@@ -26,7 +26,11 @@ module ZenossApi
|
|
26
26
|
|
27
27
|
ROUTER_RETURN_KEYS = {
|
28
28
|
'DeviceRouter' => 'devices',
|
29
|
-
'EventsRouter' => 'events'
|
29
|
+
'EventsRouter' => 'events',
|
30
|
+
}
|
31
|
+
|
32
|
+
ROUTER_RETURN_TYPE = {
|
33
|
+
'TemplateRouter' => 'templates',
|
30
34
|
}
|
31
35
|
|
32
36
|
DEFAULT_API_METHOD_ARGS = {
|
@@ -116,6 +120,27 @@ module ZenossApi
|
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
123
|
+
# _normalize_response
|
124
|
+
# @param [Hash] zenoss router response
|
125
|
+
# @return [Hash] normalized response
|
126
|
+
def _normalize_response(r)
|
127
|
+
data = {
|
128
|
+
'action' => r['action'],
|
129
|
+
'method' => r['method'],
|
130
|
+
}
|
131
|
+
result = r['result']
|
132
|
+
begin
|
133
|
+
data.merge!(result)
|
134
|
+
rescue TypeError
|
135
|
+
# zenoss returns inconsistent result types, this is not a hash
|
136
|
+
type = ROUTER_RETURN_TYPE[data['action']]
|
137
|
+
data[type] = result
|
138
|
+
data['totalCount'] = result.length
|
139
|
+
data['success'] = true
|
140
|
+
end
|
141
|
+
data
|
142
|
+
end
|
143
|
+
|
119
144
|
# http post to api
|
120
145
|
#
|
121
146
|
# @param [String] url of api endpoint
|
@@ -132,7 +157,7 @@ module ZenossApi
|
|
132
157
|
:verify => @verify,
|
133
158
|
})
|
134
159
|
if response.code == 200
|
135
|
-
response
|
160
|
+
_normalize_response(response)
|
136
161
|
else
|
137
162
|
raise ({ code: response.code, response: response }).to_json
|
138
163
|
end
|
@@ -174,15 +199,15 @@ module ZenossApi
|
|
174
199
|
if uids.kind_of?(Array)
|
175
200
|
uids.collect { |x| self._validateUid(x, type) }
|
176
201
|
else
|
177
|
-
self._validateUid(uids, type)
|
202
|
+
[ self._validateUid(uids, type) ]
|
178
203
|
end
|
179
204
|
end
|
180
205
|
|
181
206
|
def _validateUid(u, type)
|
182
207
|
if u.match(/^\/zport\/dmd\/.*$/)
|
183
|
-
u
|
208
|
+
u
|
184
209
|
else
|
185
|
-
response = self.
|
210
|
+
response = self.getDeviceProperties(u, [ "uid" ])
|
186
211
|
if not response.nil?
|
187
212
|
response[type][0]['uid']
|
188
213
|
else
|
@@ -190,13 +215,25 @@ module ZenossApi
|
|
190
215
|
end
|
191
216
|
end
|
192
217
|
end
|
193
|
-
|
218
|
+
|
219
|
+
def getDeviceUidByName(device)
|
220
|
+
end
|
221
|
+
|
222
|
+
# set device location
|
223
|
+
#
|
224
|
+
# @param uids [Array] list of device uids
|
225
|
+
def setDeviceLocation(uids, location)
|
226
|
+
validated = self.validateUids(uids)
|
227
|
+
data = { 'uids' => uids, 'ranges' => [], 'target' => location }
|
228
|
+
response = self.router("DeviceRouter", "moveDevices", data)
|
229
|
+
end
|
230
|
+
|
194
231
|
# get device properties
|
195
232
|
#
|
196
233
|
# @param device [String] the name of the device (device title or id)
|
197
234
|
# @param properties [Array] properties to be returned; default uid
|
198
235
|
# @return [Hash] of device properties or nil if device not found
|
199
|
-
def getDeviceProperties(device, properties=[])
|
236
|
+
def getDeviceProperties(device, properties=['uid'])
|
200
237
|
data = { 'keys' => properties, 'params' => { 'name' => device }, }
|
201
238
|
result = self.router("DeviceRouter", "getDevices", data)
|
202
239
|
if result['success'] == true and result['totalCount'] == 1
|
data/test.sh
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
zenapi -r TemplateRouter -m getTemplates -a id=/zport/dmd/Devices | jq '.success'
|
4
|
+
zenapi -m query -r EventsRouter --limit 50 | jq '.events | length == 50'
|
5
|
+
zenapi -r DeviceRouter -m getDevices --limit 50 | jq '.devices | length == 50'
|
6
|
+
zenapi -r EventsRouter -m query --limit 1 -f 'severity:5,eventState:0,prodState:1000,eventClass:/Status/Ping,summary:is DOWN' | jq '.totalCount'
|
7
|
+
zenapi -r EventsRouter -m query --limit 1 -f 'severity:3,eventState:0,prodState:1000' | jq '.totalCount'
|
8
|
+
zenapi -r EventsRouter -m query --limit 1 -f 'severity:5,eventState:1,prodState:1000' | jq '.totalCount'
|
9
|
+
zenapi -r EventsRouter -m query --limit 1000 -k device,summary -f 'eventClass:/Status/SNMP,eventState:0,prodState:1000' | jq '.totalCount'
|
10
|
+
zenapi -r EventsRouter -m query --limit 1 -f 'severity:4,eventState:0,prodState:1000' | jq '.totalCount'
|
11
|
+
zenapi -r EventsRouter -m query --limit 1000 -k device,summary -f 'eventClass:/Status/WinRM,eventState:0,prodState:1000' | jq '.totalCount'
|
12
|
+
zenapi -r EventsRouter -m query --limit 1 -f 'severity:5,eventState:0,prodState:1000' | jq '.totalCount'
|
13
|
+
zenapi --limit 1 -f '{ "productionState": [ 1000 ] }' | jq '.totalCount'
|
14
|
+
zenapi --limit 1 -f '{ "productionState": [ 400, -1 ] }' | jq '.totalCount'
|
15
|
+
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zenoss_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Stoll
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: io-console
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.4.5
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.4.5
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: httparty
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: Execute api calls given the router, method, and parameters. Returns response
|
@@ -89,7 +89,7 @@ executables:
|
|
89
89
|
extensions: []
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
|
-
-
|
92
|
+
- .gitignore
|
93
93
|
- CODE_OF_CONDUCT.md
|
94
94
|
- Gemfile
|
95
95
|
- LICENSE.txt
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- bin/zenapi
|
101
101
|
- lib/zenoss_api.rb
|
102
102
|
- lib/zenoss_api/version.rb
|
103
|
+
- test.sh
|
103
104
|
- zenoss_api.gemspec
|
104
105
|
homepage: ''
|
105
106
|
licenses:
|
@@ -111,17 +112,17 @@ require_paths:
|
|
111
112
|
- lib
|
112
113
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
114
|
requirements:
|
114
|
-
- -
|
115
|
+
- - '>='
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: '0'
|
117
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
119
|
requirements:
|
119
|
-
- -
|
120
|
+
- - '>='
|
120
121
|
- !ruby/object:Gem::Version
|
121
122
|
version: '0'
|
122
123
|
requirements: []
|
123
124
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
125
|
+
rubygems_version: 2.0.14.1
|
125
126
|
signing_key:
|
126
127
|
specification_version: 4
|
127
128
|
summary: Zenoss API via command line.
|