jerakia 2.0.1 → 2.1.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 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