zenoss_api 0.3.4 → 0.3.5
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/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.
|