opsview_rest 0.2.0 → 0.3.0
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 +7 -0
- metadata +94 -197
- data/Gemfile +0 -15
- data/LICENSE +0 -202
- data/README.rdoc +0 -95
- data/Rakefile +0 -36
- data/TODO.md +0 -20
- data/VERSION +0 -1
- data/lib/opsview_rest/attribute.rb +0 -32
- data/lib/opsview_rest/contact.rb +0 -71
- data/lib/opsview_rest/host.rb +0 -77
- data/lib/opsview_rest/hostcheckcommand.rb +0 -32
- data/lib/opsview_rest/hostgroup.rb +0 -29
- data/lib/opsview_rest/hosttemplate.rb +0 -29
- data/lib/opsview_rest/keyword.rb +0 -39
- data/lib/opsview_rest/mixin.rb +0 -25
- data/lib/opsview_rest/monitoringserver.rb +0 -33
- data/lib/opsview_rest/notificationmethod.rb +0 -31
- data/lib/opsview_rest/role.rb +0 -41
- data/lib/opsview_rest/servicecheck.rb +0 -53
- data/lib/opsview_rest/servicegroup.rb +0 -27
- data/lib/opsview_rest/timeperiod.rb +0 -41
- data/lib/opsview_rest.rb +0 -164
data/lib/opsview_rest.rb
DELETED
@@ -1,164 +0,0 @@
|
|
1
|
-
require 'rest-client'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
class OpsviewRest
|
5
|
-
|
6
|
-
attr_accessor :url, :username, :password, :rest
|
7
|
-
|
8
|
-
def initialize(url, options = {})
|
9
|
-
options = {
|
10
|
-
:username => "api",
|
11
|
-
:password => "changeme",
|
12
|
-
:connect => true
|
13
|
-
}.update options
|
14
|
-
|
15
|
-
@url = url
|
16
|
-
@username = options[:username]
|
17
|
-
@password = options[:password]
|
18
|
-
@rest = RestClient::Resource.new("#{@url}/rest/", :headers => { :content_type => 'application/json' })
|
19
|
-
|
20
|
-
login if options[:connect]
|
21
|
-
end
|
22
|
-
|
23
|
-
def login
|
24
|
-
response = post('login', { 'username' => @username, 'password' => @password })
|
25
|
-
@rest.headers[:x_opsview_token] = response['token']
|
26
|
-
@rest.headers[:x_opsview_username] = @username
|
27
|
-
response
|
28
|
-
end
|
29
|
-
|
30
|
-
def logout
|
31
|
-
delete('login')
|
32
|
-
end
|
33
|
-
|
34
|
-
def create(options = {})
|
35
|
-
case options[:type]
|
36
|
-
when :attribute
|
37
|
-
require 'opsview_rest/attribute'
|
38
|
-
OpsviewRest::Attribute.new(self, options)
|
39
|
-
when :contact
|
40
|
-
require 'opsview_rest/contact'
|
41
|
-
OpsviewRest::Contact.new(self, options)
|
42
|
-
when :host
|
43
|
-
require 'opsview_rest/host'
|
44
|
-
OpsviewRest::Host.new(self, options)
|
45
|
-
when :hostcheckcommand
|
46
|
-
require 'opsview_rest/hostcheckcommand'
|
47
|
-
OpsviewRest::Hostcheckcommand.new(self, options)
|
48
|
-
when :hostgroup
|
49
|
-
require 'opsview_rest/hostgroup'
|
50
|
-
OpsviewRest::Hostgroup.new(self, options)
|
51
|
-
when :hosttemplate
|
52
|
-
require 'opsview_rest/hosttemplate'
|
53
|
-
OpsviewRest::Hosttemplate.new(self, options)
|
54
|
-
when :keyword
|
55
|
-
require 'opsview_rest/keyword'
|
56
|
-
OpsviewRest::Keyword.new(self, options)
|
57
|
-
when :monitoring_server
|
58
|
-
require 'opsview_rest/monitoring_server'
|
59
|
-
OpsviewRest::MonitoringServer.new(self, options)
|
60
|
-
when :notification_method
|
61
|
-
require 'opsview_rest/notification_method'
|
62
|
-
OpsviewRest::NotificationMethod.new(self, options)
|
63
|
-
when :role
|
64
|
-
require 'opsview_rest/role'
|
65
|
-
OpsviewRest::Role.new(self, options)
|
66
|
-
when :servicecheck
|
67
|
-
require 'opsview_rest/servicecheck'
|
68
|
-
OpsviewRest::Servicecheck.new(self, options)
|
69
|
-
when :servicegroup
|
70
|
-
require 'opsview_rest/servicegroup'
|
71
|
-
OpsviewRest::Servicegroup.new(self, options)
|
72
|
-
when :timeperiod
|
73
|
-
require 'opsview_rest/timeperiod'
|
74
|
-
OpsviewRest::Timeperiod.new(self, options)
|
75
|
-
else
|
76
|
-
raise "Type not implemented yet."
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def list(options = {})
|
81
|
-
options = {
|
82
|
-
:type => "host"
|
83
|
-
}.update options
|
84
|
-
|
85
|
-
get("config/#{options[:type]}")
|
86
|
-
end
|
87
|
-
|
88
|
-
def reload
|
89
|
-
get("reload")
|
90
|
-
end
|
91
|
-
|
92
|
-
def find(options = {})
|
93
|
-
options = {
|
94
|
-
:type => "host",
|
95
|
-
:name => nil
|
96
|
-
}.update options
|
97
|
-
|
98
|
-
unless name
|
99
|
-
raise "Need to specify the name of the object."
|
100
|
-
else
|
101
|
-
get("config/#{options[:type]}?s.name=#{options[:name]}", :rows => :all)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def purge(options = {})
|
106
|
-
options = {
|
107
|
-
:type => "host",
|
108
|
-
:name => nil
|
109
|
-
}.update options
|
110
|
-
|
111
|
-
unless name
|
112
|
-
raise "Need to specify the name of the object."
|
113
|
-
else
|
114
|
-
id = find(:type => options[:type], :name => options[:name])[0]["id"]
|
115
|
-
delete("config/#{options[:type]}/#{id}")
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def get(path_part, additional_headers = {}, &block)
|
120
|
-
api_request { @rest[path_part].get(additional_headers, &block) }
|
121
|
-
end
|
122
|
-
|
123
|
-
def delete(path_part, additional_headers = {}, &block)
|
124
|
-
api_request { @rest[path_part].delete(additional_headers, &block) }
|
125
|
-
end
|
126
|
-
|
127
|
-
def post(path_part, payload, additional_headers = {}, &block)
|
128
|
-
api_request { @rest[path_part].post(payload.to_json, additional_headers, &block) }
|
129
|
-
end
|
130
|
-
|
131
|
-
def put(path_part, payload, additional_headers = {}, &block)
|
132
|
-
api_request { @rest[path_part].put(payload.to_json, additional_headers, &block) }
|
133
|
-
end
|
134
|
-
|
135
|
-
def api_request(&block)
|
136
|
-
response_body = begin
|
137
|
-
response = block.call
|
138
|
-
response.body
|
139
|
-
rescue RestClient::Exception => e
|
140
|
-
puts "I have #{e.inspect} with #{e.http_code}"
|
141
|
-
if e.http_code == 307
|
142
|
-
get(e.response)
|
143
|
-
end
|
144
|
-
e.response
|
145
|
-
end
|
146
|
-
parse_response(JSON.parse(response_body))
|
147
|
-
end
|
148
|
-
|
149
|
-
def parse_response(response)
|
150
|
-
# We've got an error if there's "message" and "detail" fields
|
151
|
-
# in the response
|
152
|
-
if response["message"] and response["detail"]
|
153
|
-
raise Opsview::Exceptions::RequestFailed, "Request failed: #{response["message"]}, detail: #{response["detail"]}"
|
154
|
-
# If we have a token, return that:
|
155
|
-
elsif response["token"]
|
156
|
-
response
|
157
|
-
# If we have a list of objects, return the list:
|
158
|
-
elsif response["list"]
|
159
|
-
response["list"]
|
160
|
-
else
|
161
|
-
response["object"]
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|