jerakia 0.0.9 → 0.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/foobar +0 -0
- data/lib/jerakia/{plugins/lookup/hiera_compat.rb → lookup/plugin/hiera.rb} +3 -3
- data/lib/jerakia/lookup/plugin.rb +23 -0
- data/lib/jerakia/lookup/pluginfactory.rb +22 -0
- data/lib/jerakia/lookup.rb +37 -4
- data/lib/jerakia/policy.rb +1 -1
- data/lib/jerakia.rb +5 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 343d8ffe41f66435cee08e8db34bb2ff5ae8b005
|
4
|
+
data.tar.gz: 127a03abde135fd9b33368b68d04cd81d8d78864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 174b063357edeec29a0cd6ca6549c9f6ccd07d73aa5989f2ed6650f0605ddf5c856e0a8728f9fe4eb4c43374684a3e97d27cd50a64e5e7be3e0748797e72d24e
|
7
|
+
data.tar.gz: b2f5c63df21955ce11550cc7176eb439ae9ad73e26677dc852837bf10a3eda625ac9422f563adc728fc2b94a522f2e49ed4e6a51501018a296c364db75909630
|
data/lib/jerakia/foobar
ADDED
File without changes
|
@@ -6,9 +6,9 @@
|
|
6
6
|
# but maintain an existing hiera filesystem layout and naming convention
|
7
7
|
# within the source data.
|
8
8
|
#
|
9
|
-
class Jerakia::Lookup
|
10
|
-
module
|
11
|
-
def
|
9
|
+
class Jerakia::Lookup::Plugin
|
10
|
+
module Hiera
|
11
|
+
def rewrite_lookup
|
12
12
|
request.key.prepend("#{request.namespace.join('::')}::")
|
13
13
|
request.namespace=[]
|
14
14
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Jerakia::Lookup::Plugin
|
2
|
+
|
3
|
+
|
4
|
+
attr_reader :lookup
|
5
|
+
|
6
|
+
def initialize(lookup)
|
7
|
+
@lookup = lookup
|
8
|
+
end
|
9
|
+
|
10
|
+
def activate(name)
|
11
|
+
instance_eval "extend Jerakia::Lookup::Plugin::#{name.to_s.capitalize}"
|
12
|
+
end
|
13
|
+
|
14
|
+
def scope
|
15
|
+
lookup.scope
|
16
|
+
end
|
17
|
+
|
18
|
+
def request
|
19
|
+
lookup.request
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Jerakia::Lookup::PluginFactory
|
2
|
+
|
3
|
+
def initialize
|
4
|
+
Jerakia.log.debug("Loaded plugin handler")
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
def create_plugin_method(name, &block)
|
9
|
+
self.class.send(:define_method, name, &block)
|
10
|
+
end
|
11
|
+
|
12
|
+
def register(name,plugin)
|
13
|
+
require "jerakia/lookup/plugin/#{name}"
|
14
|
+
plugin.activate(name)
|
15
|
+
create_plugin_method(name) do
|
16
|
+
plugin
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
data/lib/jerakia/lookup.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
class Jerakia::Lookup
|
2
2
|
require 'jerakia/datasource'
|
3
3
|
require 'jerakia/scope'
|
4
|
-
require 'jerakia/
|
5
|
-
require 'jerakia/
|
4
|
+
require 'jerakia/lookup/plugin'
|
5
|
+
require 'jerakia/lookup/pluginfactory'
|
6
6
|
|
7
7
|
attr_accessor :request
|
8
8
|
attr_reader :datasource
|
@@ -12,8 +12,9 @@ class Jerakia::Lookup
|
|
12
12
|
attr_reader :output_filters
|
13
13
|
attr_reader :name
|
14
14
|
attr_reader :proceed
|
15
|
+
attr_reader :pluginfactory
|
15
16
|
|
16
|
-
def initialize(name,req,scope,&block)
|
17
|
+
def initialize(name,opts,req,scope,&block)
|
17
18
|
|
18
19
|
@name=name
|
19
20
|
@request=req
|
@@ -21,10 +22,26 @@ class Jerakia::Lookup
|
|
21
22
|
@scope_object=scope
|
22
23
|
@output_filters=[]
|
23
24
|
@proceed=true
|
24
|
-
|
25
|
+
@pluginfactory = Jerakia::Lookup::PluginFactory.new
|
26
|
+
|
27
|
+
if opts[:use]
|
28
|
+
Array(opts[:use]).flatten.each do |plugin|
|
29
|
+
plugin_load(plugin)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
25
33
|
instance_eval &block
|
26
34
|
|
27
35
|
end
|
36
|
+
|
37
|
+
def plugin_load(plugin)
|
38
|
+
Jerakia.log.debug("Loading plugin #{plugin}")
|
39
|
+
@pluginfactory.register(plugin, Jerakia::Lookup::Plugin.new(self))
|
40
|
+
end
|
41
|
+
|
42
|
+
def plugin
|
43
|
+
@pluginfactory
|
44
|
+
end
|
28
45
|
|
29
46
|
def datasource(source, opts={})
|
30
47
|
@datasource = Jerakia::Datasource.new(source, self, opts)
|
@@ -78,6 +95,22 @@ class Jerakia::Lookup
|
|
78
95
|
return @valid
|
79
96
|
end
|
80
97
|
|
98
|
+
|
99
|
+
def confine(key=nil,match)
|
100
|
+
if key
|
101
|
+
invalidate unless key[Regexp.new(match)] == key
|
102
|
+
else
|
103
|
+
invalidate
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def exclude(key=nil,match)
|
108
|
+
if key
|
109
|
+
invalidate if key[Regexp.new(match)] == key
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
|
81
114
|
def run
|
82
115
|
@datasource.run
|
83
116
|
response=@datasource.response
|
data/lib/jerakia/policy.rb
CHANGED
@@ -31,7 +31,7 @@ class Jerakia::Policy < Jerakia::Launcher
|
|
31
31
|
# We specifically clone the request object to allow plugins to modify the
|
32
32
|
# request payload for the scope of this lookup only.
|
33
33
|
#
|
34
|
-
lookup = Jerakia::Lookup.new(name,clone_request,scope,&block)
|
34
|
+
lookup = Jerakia::Lookup.new(name,opts,clone_request,scope,&block)
|
35
35
|
Jerakia.log.debug("Proceed to next lookup #{lookup.proceed?}")
|
36
36
|
|
37
37
|
@lookups << lookup if lookup.valid? and @lookup_proceed
|
data/lib/jerakia.rb
CHANGED
@@ -16,6 +16,11 @@ class Jerakia
|
|
16
16
|
def initialize(options={})
|
17
17
|
configfile = options[:config] || '/etc/jerakia/jerakia.yml'
|
18
18
|
@@config = Jerakia::Config.new(configfile)
|
19
|
+
|
20
|
+
if @@config[:plugindir]
|
21
|
+
$LOAD_PATH << @@config[:plugindir] unless $LOAD_PATH.include?(@@config[:plugindir])
|
22
|
+
end
|
23
|
+
|
19
24
|
@@filecache = {}
|
20
25
|
loglevel = options[:loglevel] || @@config["loglevel"] || "info"
|
21
26
|
@@log = Jerakia::Log.new(loglevel.to_sym)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jerakia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Dunn
|
@@ -30,11 +30,14 @@ files:
|
|
30
30
|
- lib/jerakia/datasource/dummy.rb
|
31
31
|
- lib/jerakia/datasource/file.rb
|
32
32
|
- lib/jerakia/datasource/file/yaml.rb
|
33
|
+
- lib/jerakia/foobar
|
33
34
|
- lib/jerakia/launcher.rb
|
34
35
|
- lib/jerakia/log.rb
|
35
36
|
- lib/jerakia/lookup.rb
|
37
|
+
- lib/jerakia/lookup/plugin.rb
|
38
|
+
- lib/jerakia/lookup/plugin/hiera.rb
|
39
|
+
- lib/jerakia/lookup/pluginfactory.rb
|
36
40
|
- lib/jerakia/plugins/lookup/confine.rb
|
37
|
-
- lib/jerakia/plugins/lookup/hiera_compat.rb
|
38
41
|
- lib/jerakia/policy.rb
|
39
42
|
- lib/jerakia/request.rb
|
40
43
|
- lib/jerakia/response.rb
|