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
Defined Under Namespace
Modules: Mixin
Classes: Attribute, Contact, Host, Hostcheckcommand, Hostgroup, Hosttemplate, Keyword, MonitoringServer, Role, Servicecheck, Servicegroup, Timeperiod
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#api_request(&block) ⇒ 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.
-
#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
Returns a new instance of OpsviewRest.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/opsview_rest.rb', line 8
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.
6
7
8
|
# File 'lib/opsview_rest.rb', line 6
def password
@password
end
|
#rest ⇒ Object
Returns the value of attribute rest.
6
7
8
|
# File 'lib/opsview_rest.rb', line 6
def rest
@rest
end
|
#url ⇒ Object
Returns the value of attribute url.
6
7
8
|
# File 'lib/opsview_rest.rb', line 6
def url
@url
end
|
#username ⇒ Object
Returns the value of attribute username.
6
7
8
|
# File 'lib/opsview_rest.rb', line 6
def username
@username
end
|
Instance Method Details
#api_request(&block) ⇒ Object
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# File 'lib/opsview_rest.rb', line 137
def api_request(&block)
response_body = begin
response = block.call
response.body
rescue RestClient::Exception => e
puts "I have #{e.inspect} with #{e.http_code}"
if e.http_code == 307
get(e.response)
end
e.response
end
parse_response(JSON.parse(response_body))
end
|
#create(options = {}) ⇒ Object
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
78
|
# File 'lib/opsview_rest.rb', line 34
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 :notification_method
require 'opsview_rest/notification_method'
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
125
126
127
|
# File 'lib/opsview_rest.rb', line 125
def delete(path_part, = {}, &block)
api_request { @rest[path_part].delete(, &block) }
end
|
#find(options = {}) ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/opsview_rest.rb', line 93
def find(options = {})
options = {
:type => "host",
:rows => "all",
:name => nil
}.update options
if options[:name].nil?
raise ArgumentError, "Need to specify the name of the object."
else
get("config/#{options[:type]}?s.name=#{options[:name]}?rows=#{options[:rows]}")
end
end
|
#get(path_part, additional_headers = {}, &block) ⇒ Object
121
122
123
|
# File 'lib/opsview_rest.rb', line 121
def get(path_part, = {}, &block)
api_request { @rest[path_part].get(, &block) }
end
|
#list(options = {}) ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'lib/opsview_rest.rb', line 80
def list(options = {})
options = {
:type => "host",
:rows => "all"
}.update options
get("config/#{options[:type]}?rows=#{options[:rows]}")
end
|
#login ⇒ Object
23
24
25
26
27
28
|
# File 'lib/opsview_rest.rb', line 23
def login
response = post('login', { 'username' => @username, 'password' => @password })
@rest.[:x_opsview_token] = response['token']
@rest.[:x_opsview_username] = @username
response
end
|
#logout ⇒ Object
30
31
32
|
# File 'lib/opsview_rest.rb', line 30
def logout
delete('login')
end
|
#parse_response(response) ⇒ Object
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
# File 'lib/opsview_rest.rb', line 151
def parse_response(response)
if response["message"] and 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
129
130
131
|
# File 'lib/opsview_rest.rb', line 129
def post(path_part, payload, = {}, &block)
api_request { @rest[path_part].post(payload.to_json, , &block) }
end
|
#purge(options = {}) ⇒ Object
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/opsview_rest.rb', line 107
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
133
134
135
|
# File 'lib/opsview_rest.rb', line 133
def put(path_part, payload, = {}, &block)
api_request { @rest[path_part].put(payload.to_json, , &block) }
end
|
#reload ⇒ Object
89
90
91
|
# File 'lib/opsview_rest.rb', line 89
def reload
get("reload")
end
|