jerakia 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e044be567c543e87edcfcae3edf755b9bde59529
4
- data.tar.gz: 397821bbee4bd788ffa9d22955eec77c7ce6b0b9
3
+ metadata.gz: 720b8d35cb80a854ba236ca1c4d7bcf1b0c3f1c5
4
+ data.tar.gz: 8437f36c2f1e02dd0b0b6210ad5850055f7cc994
5
5
  SHA512:
6
- metadata.gz: fefb5fce648917521da2d1a2b8e5ccf6f689bf4d5461e0c76898bb3eb16592fc960ec662d729dd4189ef0b35a22faff8d9a15ad40c44923b18d4cd92c5c0dc0f
7
- data.tar.gz: a86be11fbff3b463f7bd73b7938f4bb8dc0420efabb56a775317ca23d34b78680fcfe33172fd15c83bbb22f00d8a4f9df9c95a912116ca29d0963a42950ef654
6
+ metadata.gz: 208410b58d4efadccbcf853d077d8594f9514d3bbfc6a3b2bb4c5a4037ceded7ed722856f145ef4f408bea614eaf311faa36c845be8fc03698b2808ac02e3f04
7
+ data.tar.gz: 358407a6611a4e2c05a1a6bb9a0500532523108ef4e69b59cd221b7901e14c62a67ab537cedb3841550a53dde0bb28cf4972ae455c12a8ef17432fa8b5066556
@@ -50,6 +50,12 @@ class Jerakia
50
50
  raise Jerakia::DatasourceArgumentError, "Must specify #{name} parameter" if opt.nil?
51
51
  end
52
52
 
53
+ if arguments[:type]
54
+ unless opt.is_a?(arguments[:type]) || opt.nil?
55
+ raise Jerakia::DatasourceArgumentError, "#{name} must be a #{arguments[:type].to_s}, got #{opt.class.to_s}"
56
+ end
57
+ end
58
+
53
59
  if block_given?
54
60
  unless opt.nil?
55
61
  raise Jerakia::DatasourceArgumentError, "Validation failed for #{name}" unless yield opt
@@ -1,70 +1,67 @@
1
1
  require 'lookup_http'
2
2
 
3
- class Jerakia::Datasource
4
- module Http
5
- def run
6
- #
7
- # Do the lookup
3
+ class Jerakia::Datasource::Http < Jerakia::Datasource::Instance
4
+ option :host, :type => String, :required => true
5
+ option :port, :type => Integer, :default => 80
6
+ option :output, :type => String, :default => 'json'
7
+ option :failure, :type => String, :default => 'graceful'
8
+ option :ignore_404, :default => true
9
+ option :headers, :type => Hash
10
+ option :http_read_timeout, :type => Integer
11
+ option :use_ssl
12
+ option :ssl_ca_cert, :type => String
13
+ option :ssl_cert, :type => String
14
+ option :ssl_key, :type => String
15
+ option :ssl_verify
16
+ option :use_auth
17
+ option :auth_user, :type => String
18
+ option :auth_pass, :type => String
19
+ option :http_connect_timeout, :type => Integer
20
+ option :paths, :type => Array, :required => true
8
21
 
9
- Jerakia.log.debug("Searching key #{lookup.request.key} using the http datasource (#{whoami})")
22
+ def lookup
10
23
 
11
- option :host, :type => String, :mandatory => true
12
- option :port, :type => Integer, :default => 80
13
- option :output, :type => String, :default => 'json'
14
- option :failure, :type => String, :default => 'graceful'
15
- option :ignore_404, :default => true
16
- option :headers, :type => Hash
17
- option :http_read_timeout, :type => Integer
18
- option :use_ssl
19
- option :ssl_ca_cert, :type => String
20
- option :ssl_cert, :type => String
21
- option :ssl_key, :type => String
22
- option :ssl_verify
23
- option :use_auth
24
- option :auth_user, :type => String
25
- option :auth_pass, :type => String
26
- option :http_connect_timeout, :type => Integer
27
- option :paths, :type => Array, :mandatory => true
24
+ lookup_supported_params = [
25
+ :host,
26
+ :port,
27
+ :output,
28
+ :failure,
29
+ :ignore_404,
30
+ :headers,
31
+ :http_connect_timeout,
32
+ :http_read_timeout,
33
+ :use_ssl,
34
+ :ssl_ca_cert,
35
+ :ssl_cert,
36
+ :ssl_key,
37
+ :ssl_verify,
38
+ :use_auth,
39
+ :auth_user,
40
+ :auth_pass
41
+ ]
42
+ lookup_params = options.select { |p| lookup_supported_params.include?(p) }
43
+ http_lookup = LookupHttp.new(lookup_params)
28
44
 
29
- lookup_supported_params = [
30
- :host,
31
- :port,
32
- :output,
33
- :failure,
34
- :ignore_404,
35
- :headers,
36
- :http_connect_timeout,
37
- :http_read_timeout,
38
- :use_ssl,
39
- :ssl_ca_cert,
40
- :ssl_cert,
41
- :ssl_key,
42
- :ssl_verify,
43
- :use_auth,
44
- :auth_user,
45
- :auth_pass
46
- ]
47
- lookup_params = options.select { |p| lookup_supported_params.include?(p) }
48
- http_lookup = LookupHttp.new(lookup_params)
49
45
 
50
- options[:paths].flatten.each do |path|
51
- Jerakia.log.debug("Attempting to load data from #{path}")
52
- return unless response.want?
46
+ paths = options[:paths].flatten
47
+ answer do |response|
48
+ path = paths.shift
49
+ break unless path
50
+ Jerakia.log.debug("Attempting to load data from #{path}")
53
51
 
54
- data = http_lookup.get_parsed(path)
55
- Jerakia.log.debug("Datasource provided #{data} (#{data.class}) looking for key #{lookup.request.key}")
52
+ data = http_lookup.get_parsed(path)
53
+ Jerakia.log.debug("Datasource provided #{data} (#{data.class}) looking for key #{request.key}")
56
54
 
57
- if data.is_a?(Hash)
58
- unless data[lookup.request.key].nil?
59
- Jerakia.log.debug("Found data #{data[lookup.request.key]}")
60
- response.submit data[lookup.request.key]
61
- end
62
- else
63
- unless options[:output] == 'plain' || options[:failure] == 'graceful'
64
- raise Jerakia::Error, "HTTP request did not return a hash for #{lookup.request.key} #{whoami}"
65
- end
66
- response.submit data
55
+ if data.is_a?(Hash)
56
+ unless data[request.key].nil?
57
+ Jerakia.log.debug("Found data #{data[request.key]}")
58
+ response.submit data[request.key]
67
59
  end
60
+ else
61
+ unless options[:output] == 'plain' || options[:failure] == 'graceful'
62
+ raise Jerakia::Error, "HTTP request did not return a hash for #{request.key}"
63
+ end
64
+ response.submit data
68
65
  end
69
66
  end
70
67
  end
@@ -32,7 +32,7 @@ class Jerakia
32
32
  response_entries = []
33
33
  lookups.each do |lookup|
34
34
  lookup_instance = lookup.call clone_request(request), scope
35
- next unless lookup_instance.valid? && lookup_instance.proceed?
35
+ next unless lookup_instance.valid?
36
36
  register_datasource lookup_instance.datasource[:name]
37
37
  responses = Jerakia::Datasource.run(lookup_instance)
38
38
  lookup_instance.output_filters.each do |filter|
@@ -41,6 +41,7 @@ class Jerakia
41
41
  end
42
42
  lookup_answers = responses.entries.map { |r| r}
43
43
  response_entries << lookup_answers if lookup_answers
44
+ break unless lookup_instance.proceed?
44
45
  end
45
46
  answer.process_response(response_entries)
46
47
  return answer
@@ -3,5 +3,5 @@ class Jerakia
3
3
  #
4
4
  # This should be updated when a new gem is released and it is read from the gemspec file
5
5
  #
6
- VERSION = '2.0.1'.freeze
6
+ VERSION = '2.1.0'.freeze
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jerakia
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Dunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor