foreman_icinga 0.1.1 → 0.1.2

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: 3277325729411ef0c006c242754b121f24c567fd
4
- data.tar.gz: a3e5077b6524e54541f846ddfd9e88eaac02bdda
3
+ metadata.gz: a19abcebbff33e10eb8dbe58e71d5577fda543dd
4
+ data.tar.gz: a239355f620a1e1b8a540424259e4e6309a76334
5
5
  SHA512:
6
- metadata.gz: 09c9ea01e0cf162bcdf8f28139f80fc9e1e73043463b16619a98a350505a777d981cfa23953bf9ff06b2b56d28e414d85c3d3eaa2f2827ea0489c0b8d45b36ce
7
- data.tar.gz: 28735b6498e8d5dffc73607fd80c10d97c3f28cc95d1d933ff79ef805c08ecceabca5c92b2e8677d325c182889ac6a3cbdb8683978882ae0e337e9eb10518329
6
+ metadata.gz: 7ba9da13812cfb4b1c1f287502a1ac85bbd20d73f3e9758b4de405524d9350ecd578447d5803c32e612b1eb97a430cc8aa53f508d6bed1162d120d0228b5dc78
7
+ data.tar.gz: 24c126884c8c83f289300aa272f500c9f9eb528c39e7a37543ddbaa5c9904066951877cbe322895663e7c144d161cfabc88efaeee86ad00c1c37cc8c6e4ef11b
@@ -40,7 +40,7 @@ module ForemanIcinga
40
40
  'comment' => 'host deleted in foreman',
41
41
  'duration' => '7200'
42
42
  }
43
- response = icinga.call('deployment/downtime/schedule', '', params)
43
+ response = icinga.call('deployment/downtime/schedule', {}, params)
44
44
 
45
45
  if response['status'] == 'error' && ! icinga_ignore_failed_action?
46
46
  errors.add(:base, _("Error from Icinga server: '%s'") % response['message'])
@@ -61,7 +61,7 @@ module HostStatus
61
61
  end
62
62
 
63
63
  def call_icinga
64
- client.call('deployment/health/check', '', 'host' => host.name)
64
+ client.call('deployment/health/check', {}, {'host' => host.name}, :get)
65
65
  rescue RestClient::Unauthorized
66
66
  nil
67
67
  end
@@ -1,6 +1,7 @@
1
1
  require 'rest-client'
2
2
 
3
3
  class Icinga
4
+ delegate :logger, :to => :Rails
4
5
  attr_reader :client, :token, :address
5
6
 
6
7
  def initialize
@@ -8,19 +9,18 @@ class Icinga
8
9
  @token = Setting[:icinga_token]
9
10
  end
10
11
 
11
- def call(endpoint, payload = '', params = {})
12
+ def call(endpoint, payload = {}, params = {}, method = :post)
12
13
  uri = icinga_url_for(endpoint, params.merge(default_params))
13
- parse post(uri, payload)
14
+ result = nil
15
+ result = parse post(uri, payload) if method == :post
16
+ result = parse get(uri, payload) if method == :get
17
+ result
14
18
  rescue OpenSSL::SSL::SSLError => e
15
19
  message = "SSL Connection to Icinga failed: #{e}"
16
20
  logger.warn message
17
21
  error_response message
18
22
  end
19
23
 
20
- def logger
21
- Rails.logger
22
- end
23
-
24
24
  protected
25
25
 
26
26
  attr_reader :connect_params
@@ -30,7 +30,7 @@ class Icinga
30
30
  :timeout => 3,
31
31
  :open_timeout => 3,
32
32
  :headers => {
33
- :accept => :json
33
+ :accept => '*/*',
34
34
  },
35
35
  :verify_ssl => verify_ssl?,
36
36
  :ssl_ca_file => ssl_ca_file
@@ -55,10 +55,14 @@ class Icinga
55
55
  RestClient::Resource.new(uri, connect_params)
56
56
  end
57
57
 
58
- def post(path, payload = '')
58
+ def post(path, payload = {})
59
59
  client(path).post(payload)
60
60
  end
61
61
 
62
+ def get(path, payload = {})
63
+ client(path).get(payload)
64
+ end
65
+
62
66
  def parse(response)
63
67
  if response && response.code >= 200 && response.code < 300
64
68
  return response.body.present? ? JSON.parse(response.body) : error_response(_('received empty result'))
@@ -81,7 +85,7 @@ class Icinga
81
85
 
82
86
  def icinga_url_for(route, params = {})
83
87
  base = URI.join(address, route).to_s
84
- return base if params.empty?
88
+ return base + "?token=" + token if params.empty?
85
89
  base + '?' + params.to_query + '&token=' + token
86
90
  end
87
91
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanIcinga
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -7,7 +7,7 @@ class IcingaTest < ActiveSupport::TestCase
7
7
  end
8
8
 
9
9
  test '#icinga_url_for should return valid urls' do
10
- assert_equal 'http://example.com/test/bla&token=123456',
10
+ assert_equal 'http://example.com/test/bla?token=123456',
11
11
  @icinga.send('icinga_url_for', 'test/bla')
12
12
  assert_equal 'http://example.com/test/blubb?param=1&token=123456',
13
13
  @icinga.send('icinga_url_for', 'test/blubb', 'param' => '1')
@@ -20,18 +20,18 @@ class IcingaTest < ActiveSupport::TestCase
20
20
 
21
21
  test 'should correctly parse response' do
22
22
  @icinga.expects(:post)
23
- .with('http://example.com/health?host=example.com&json=true&token=123456', '')
23
+ .with('http://example.com/health?host=example.com&json=true&token=123456', {})
24
24
  .returns(fake_response(JSON('healthy' => 'true')))
25
- response = @icinga.call('health', '', 'host' => 'example.com')
25
+ response = @icinga.call('health', {}, {'host' => 'example.com'})
26
26
  assert_kind_of Hash, response
27
27
  assert response['healthy']
28
28
  end
29
29
 
30
30
  test 'should return error message when result is empty' do
31
31
  @icinga.expects(:post)
32
- .with('http://example.com/health?host=example.com&json=true&token=123456', '')
32
+ .with('http://example.com/health?host=example.com&json=true&token=123456', {})
33
33
  .returns(fake_response(''))
34
- response = @icinga.call('health', '', 'host' => 'example.com')
34
+ response = @icinga.call('health', {}, {'host' => 'example.com'})
35
35
  assert_kind_of Hash, response
36
36
  assert_equal 'error', response['status']
37
37
  assert_equal 'received empty result', response['message']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_icinga
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timo Goebel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-18 00:00:00.000000000 Z
11
+ date: 2016-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client