Class: OpsviewRest
- Inherits:
-
Object
show all
- Defined in:
- lib/opsview_rest.rb,
lib/opsview_rest/host.rb,
lib/opsview_rest/role.rb,
lib/opsview_rest/mixin.rb,
lib/opsview_rest/contact.rb,
lib/opsview_rest/keyword.rb,
lib/opsview_rest/attribute.rb,
lib/opsview_rest/hostgroup.rb,
lib/opsview_rest/timeperiod.rb,
lib/opsview_rest/hosttemplate.rb,
lib/opsview_rest/servicecheck.rb,
lib/opsview_rest/servicegroup.rb,
lib/opsview_rest/hostcheckcommand.rb,
lib/opsview_rest/monitoringserver.rb,
lib/opsview_rest/notificationmethod.rb
Defined Under Namespace
Modules: Mixin
Classes: Attribute, Contact, Host, Hostcheckcommand, Hostgroup, Hosttemplate, Keyword, MonitoringServer, NotificationMethod, Role, Servicecheck, Servicegroup, Timeperiod
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#api_request ⇒ Object
-
#create(options = {}) ⇒ Object
-
#delete(path_part, additional_headers = {}, &block) ⇒ Object
-
#find(options = {}) ⇒ Object
-
#get(path_part, additional_headers = {}, &block) ⇒ Object
-
#initialize(url, options = {}) ⇒ OpsviewRest
constructor
A new instance of OpsviewRest.
-
#initiate_reload ⇒ Object
-
#list(options = {}) ⇒ Object
-
#login ⇒ Object
-
#logout ⇒ Object
-
#parse_response(response) ⇒ Object
-
#post(path_part, payload, additional_headers = {}, &block) ⇒ Object
-
#purge(options = {}) ⇒ Object
-
#put(path_part, payload, additional_headers = {}, &block) ⇒ Object
-
#reload ⇒ Object
Constructor Details
#initialize(url, options = {}) ⇒ OpsviewRest
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/opsview_rest.rb', line 7
def initialize(url, options = {})
options = {
username: 'api',
password: 'changeme',
connect: true
}.update options
@url = url
@username = options[:username]
@password = options[:password]
@rest = RestClient::Resource.new("#{@url}/rest/", headers: { content_type: 'application/json' })
login if options[:connect]
end
|
Instance Attribute Details
#password ⇒ Object
Returns the value of attribute password.
5
6
7
|
# File 'lib/opsview_rest.rb', line 5
def password
@password
end
|
#rest ⇒ Object
Returns the value of attribute rest.
5
6
7
|
# File 'lib/opsview_rest.rb', line 5
def rest
@rest
end
|
#url ⇒ Object
Returns the value of attribute url.
5
6
7
|
# File 'lib/opsview_rest.rb', line 5
def url
@url
end
|
#username ⇒ Object
Returns the value of attribute username.
5
6
7
|
# File 'lib/opsview_rest.rb', line 5
def username
@username
end
|
Instance Method Details
#api_request ⇒ Object
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/opsview_rest.rb', line 142
def api_request
response_body = begin
response = yield
response.body
rescue RestClient::Exception => e
raise "I have #{e.inspect} with #{e.http_code}"
get(e.response) if e.http_code == 307
e.response
end
parse_response(JSON.parse(response_body))
end
|
#create(options = {}) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/opsview_rest.rb', line 33
def create(options = {})
case options[:type]
when :attribute
require 'opsview_rest/attribute'
OpsviewRest::Attribute.new(self, options)
when :contact
require 'opsview_rest/contact'
OpsviewRest::Contact.new(self, options)
when :host
require 'opsview_rest/host'
OpsviewRest::Host.new(self, options)
when :hostcheckcommand
require 'opsview_rest/hostcheckcommand'
OpsviewRest::Hostcheckcommand.new(self, options)
when :hostgroup
require 'opsview_rest/hostgroup'
OpsviewRest::Hostgroup.new(self, options)
when :hosttemplate
require 'opsview_rest/hosttemplate'
OpsviewRest::Hosttemplate.new(self, options)
when :keyword
require 'opsview_rest/keyword'
OpsviewRest::Keyword.new(self, options)
when :monitoring_server
require 'opsview_rest/monitoring_server'
OpsviewRest::MonitoringServer.new(self, options)
when :notificationmethod
require 'opsview_rest/notificationmethod'
OpsviewRest::NotificationMethod.new(self, options)
when :role
require 'opsview_rest/role'
OpsviewRest::Role.new(self, options)
when :servicecheck
require 'opsview_rest/servicecheck'
OpsviewRest::Servicecheck.new(self, options)
when :servicegroup
require 'opsview_rest/servicegroup'
OpsviewRest::Servicegroup.new(self, options)
when :timeperiod
require 'opsview_rest/timeperiod'
OpsviewRest::Timeperiod.new(self, options)
else
raise 'Type not implemented yet.'
end
end
|
#delete(path_part, additional_headers = {}, &block) ⇒ Object
130
131
132
|
# File 'lib/opsview_rest.rb', line 130
def delete(path_part, = {}, &block)
api_request { @rest[path_part].delete(, &block) }
end
|
#find(options = {}) ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/opsview_rest.rb', line 96
def find(options = {})
options = {
type: nil,
rows: 'all',
searchattribute: nil
}.update options
options[:searchattribute] = 'name' if options[:searchattribute].nil?
if options[:name].nil?
raise ArgumentError, 'Need to specify the name of the object.'
else
get("config/#{options[:type]}?s.#{options[:searchattribute]}=#{options[:name]}&rows=#{options[:rows]}")
end
end
|
#get(path_part, additional_headers = {}, &block) ⇒ Object
126
127
128
|
# File 'lib/opsview_rest.rb', line 126
def get(path_part, = {}, &block)
api_request { @rest[path_part].get(, &block) }
end
|
#initiate_reload ⇒ Object
92
93
94
|
# File 'lib/opsview_rest.rb', line 92
def initiate_reload
post('reload', {})
end
|
#list(options = {}) ⇒ Object
79
80
81
82
83
84
85
86
|
# File 'lib/opsview_rest.rb', line 79
def list(options = {})
options = {
type: 'host',
rows: 'all'
}.update options
get("config/#{options[:type]}?rows=#{options[:rows]}")
end
|
#login ⇒ Object
22
23
24
25
26
27
|
# File 'lib/opsview_rest.rb', line 22
def login
response = post('login', 'username' => @username, 'password' => @password)
@rest.[:x_opsview_token] = response['token']
@rest.[:x_opsview_username] = @username
response
end
|
#logout ⇒ Object
29
30
31
|
# File 'lib/opsview_rest.rb', line 29
def logout
delete('login')
end
|
#parse_response(response) ⇒ Object
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/opsview_rest.rb', line 154
def parse_response(response)
if response['message'] && response['detail']
raise Opsview::Exceptions::RequestFailed, "Request failed: #{response['message']}, detail: #{response['detail']}"
elsif response['token']
response
elsif response['list']
response['list']
else
response['object']
end
end
|
#post(path_part, payload, additional_headers = {}, &block) ⇒ Object
134
135
136
|
# File 'lib/opsview_rest.rb', line 134
def post(path_part, payload, = {}, &block)
api_request { @rest[path_part].post(payload.to_json, , &block) }
end
|
#purge(options = {}) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/opsview_rest.rb', line 112
def purge(options = {})
options = {
type: 'host',
name: nil
}.update options
if options[:name].nil?
raise ArgumentError, 'Need to specify the name of the object.'
else
id = find(type: options[:type], name: options[:name])[0]['id']
delete("config/#{options[:type]}/#{id}")
end
end
|
#put(path_part, payload, additional_headers = {}, &block) ⇒ Object
138
139
140
|
# File 'lib/opsview_rest.rb', line 138
def put(path_part, payload, = {}, &block)
api_request { @rest[path_part].put(payload.to_json, , &block) }
end
|
#reload ⇒ Object
88
89
90
|
# File 'lib/opsview_rest.rb', line 88
def reload
get('reload')
end
|