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 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.