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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccc01b38fe84290c614679cf9e4dec45178becb6
4
- data.tar.gz: cefda83026ebac1c440221b8c340026e6f3b7522
3
+ metadata.gz: 701b7cc0a2bd590e8d5dcf26047c97bbebd40b63
4
+ data.tar.gz: 43f38fb45ad3979d5b99759e98186dde1bc9963b
5
5
  SHA512:
6
- metadata.gz: febce1894dd23e4dbd8138fcfadde4f3190e6ea27a1820ab8d9b53acccfc869613ed978c4f6a04e156356fbf5916bfbe5d8efd01fde36bf4ae1ff2f746716cec
7
- data.tar.gz: a6d91efa744df6e8c604da51f4b7b63fef8c424629e72cbee45f16ea59aa6589b73c7d762f52eff337952179ec9a2c1ff4da4573ff8be75eb6e3d7dadf5e2c45
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 '.devices[]'
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 --uid '/Devices/Server/Linux' --limit 30 | jq '.devices[] | .name'
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 -a name:hostname.fqdn
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:0025b520-10e1-bfad-11e6-9abe93a9a0ae | jq '.'
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 | jq '.result | .data[] | .name'
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:DeviceRouter | jq '.result | .data'
65
+ zenapi -r IntrospectionRouter -m getRouterMethods -a router=DeviceRouter | jq '.data'
65
66
  ````
66
67
 
67
68
  ## Development
@@ -1,3 +1,3 @@
1
1
  module ZenossApi
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
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['result']
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.getDeviceProps(u, [ "uid" ])
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
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-06-19 00:00:00.000000000 Z
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
- - ".gitignore"
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.5.2.1
125
+ rubygems_version: 2.0.14.1
125
126
  signing_key:
126
127
  specification_version: 4
127
128
  summary: Zenoss API via command line.