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 +4 -4
- data/lib/jerakia/datasource.rb +6 -0
- data/lib/jerakia/datasource/http.rb +55 -58
- data/lib/jerakia/policy.rb +2 -1
- data/lib/jerakia/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 720b8d35cb80a854ba236ca1c4d7bcf1b0c3f1c5
|
|
4
|
+
data.tar.gz: 8437f36c2f1e02dd0b0b6210ad5850055f7cc994
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 208410b58d4efadccbcf853d077d8594f9514d3bbfc6a3b2bb4c5a4037ceded7ed722856f145ef4f408bea614eaf311faa36c845be8fc03698b2808ac02e3f04
|
|
7
|
+
data.tar.gz: 358407a6611a4e2c05a1a6bb9a0500532523108ef4e69b59cd221b7901e14c62a67ab537cedb3841550a53dde0bb28cf4972ae455c12a8ef17432fa8b5066556
|
data/lib/jerakia/datasource.rb
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
22
|
+
def lookup
|
|
10
23
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
55
|
-
|
|
52
|
+
data = http_lookup.get_parsed(path)
|
|
53
|
+
Jerakia.log.debug("Datasource provided #{data} (#{data.class}) looking for key #{request.key}")
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
data/lib/jerakia/policy.rb
CHANGED
|
@@ -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?
|
|
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
|
data/lib/jerakia/version.rb
CHANGED
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
|
|
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-
|
|
11
|
+
date: 2017-06-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|