corl 0.5.14 → 0.5.15
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/VERSION +1 -1
- data/bootstrap/os/ubuntu/06_puppet.sh +1 -1
- data/corl.gemspec +4 -3
- data/lib/core/mixin/macro/network_settings.rb +22 -22
- data/lib/core/plugin/agent.rb +36 -74
- data/lib/core/plugin/fog_node.rb +8 -1
- data/lib/core/plugin/network.rb +1 -1
- data/lib/core/plugin/node.rb +29 -11
- data/lib/core/vagrant/commands/launcher.rb +0 -2
- data/lib/core/vagrant/config.rb +5 -2
- data/lib/core/vagrant/plugins.rb +2 -2
- data/lib/corl.rb +77 -3
- data/lib/nucleon/action/network/config.rb +0 -4
- data/lib/nucleon/extension/corl_executable.rb +12 -0
- data/locales/en.yml +8 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c360e505e5eaa8bdea103dad27a7868f06655153
|
4
|
+
data.tar.gz: 8cf2016ccc74e060bfa91372e7b54481b1a06a83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f16e3bfa746c95710bd6e6b5aa0374e0de28ff8fe98374d76f237b74dbc9fdc341cc7880fbf5e4a5504122f739a7b337b19224340377e5f25d130acb01606ee3
|
7
|
+
data.tar.gz: f4e9f8fe0ca6e9478ae96018b346fcbb5ae509d10de97146cae1520b18787ec16ec673fa0f4ab46de9c795b0b3354abd4fff4a4ce36dc719b040e938382b6214
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.15
|
data/corl.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: corl 0.5.
|
5
|
+
# stub: corl 0.5.15 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "corl"
|
9
|
-
s.version = "0.5.
|
9
|
+
s.version = "0.5.15"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Adrian Webb"]
|
14
|
-
s.date = "2015-02-
|
14
|
+
s.date = "2015-02-19"
|
15
15
|
s.description = "Framework that provides a simple foundation for growing organically in the cloud"
|
16
16
|
s.email = "adrian.webb@coralnexus.com"
|
17
17
|
s.executables = ["corl"]
|
@@ -144,6 +144,7 @@ Gem::Specification.new do |s|
|
|
144
144
|
"lib/nucleon/action/plugins.rb",
|
145
145
|
"lib/nucleon/event/puppet.rb",
|
146
146
|
"lib/nucleon/extension/corl_config.rb",
|
147
|
+
"lib/nucleon/extension/corl_executable.rb",
|
147
148
|
"lib/nucleon/extension/vagrant.rb",
|
148
149
|
"lib/nucleon/template/environment.rb",
|
149
150
|
"lib/puppet/indirector/corl.rb",
|
@@ -3,55 +3,55 @@ module CORL
|
|
3
3
|
module Mixin
|
4
4
|
module Macro
|
5
5
|
module NetworkSettings
|
6
|
-
|
6
|
+
|
7
7
|
def network_settings(_type)
|
8
|
-
|
8
|
+
|
9
9
|
# Networks are inherited unless explicitely set
|
10
|
-
|
10
|
+
|
11
11
|
define_method :network do
|
12
12
|
plugin_parent
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
define_method :network= do |network|
|
16
16
|
myself.plugin_parent = network
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
#---
|
20
|
-
|
20
|
+
|
21
21
|
define_method :setting do |property, default = nil, format = false|
|
22
22
|
network.send("#{_type}_setting", plugin_provider, plugin_name, property, default, format)
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
define_method :search do |property, default = nil, format = false, extra_groups = []|
|
26
26
|
network.send("search_#{_type}", plugin_provider, plugin_name, property, default, format, extra_groups)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
define_method :set_setting do |property, value = nil|
|
30
30
|
network.send("set_#{_type}_setting", plugin_provider, plugin_name, property, value)
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
define_method :delete_setting do |property|
|
34
34
|
network.send("delete_#{_type}_setting", plugin_provider, plugin_name, property)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
#---
|
38
|
-
|
38
|
+
|
39
39
|
define_method :[] do |name, default = nil, format = false|
|
40
40
|
search(name, default, format)
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
#---
|
44
|
-
|
44
|
+
|
45
45
|
define_method :[]= do |name, value|
|
46
46
|
set_setting(name, value)
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
#---
|
50
|
-
|
50
|
+
|
51
51
|
define_method :cache do
|
52
52
|
network.cache
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
define_method :cache_setting do |keys, default = nil, format = false|
|
56
56
|
cache.get([ _type, plugin_provider, plugin_name, keys ].flatten, default, format)
|
57
57
|
end
|
@@ -69,22 +69,22 @@ module NetworkSettings
|
|
69
69
|
end
|
70
70
|
|
71
71
|
#---
|
72
|
-
|
72
|
+
|
73
73
|
define_method :groups do
|
74
74
|
array(myself[:settings])
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
#---
|
78
|
-
|
78
|
+
|
79
79
|
define_method :add_groups do |groups|
|
80
80
|
myself[:settings] = array(setting(:settings)) | array(groups)
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
#---
|
84
|
-
|
84
|
+
|
85
85
|
define_method :remove_groups do |groups|
|
86
86
|
myself[:settings] = array(setting(:settings)) - array(groups)
|
87
|
-
end
|
87
|
+
end
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
data/lib/core/plugin/agent.rb
CHANGED
@@ -7,6 +7,15 @@ module Nucleon
|
|
7
7
|
module Plugin
|
8
8
|
class Agent < Nucleon.plugin_class(:nucleon, :cloud_action)
|
9
9
|
|
10
|
+
#-----------------------------------------------------------------------------
|
11
|
+
# Info
|
12
|
+
|
13
|
+
def self.describe_base(group = nil, action = 'unknown', weight = -1000, description = nil, help = nil, provider_override = nil)
|
14
|
+
group = array(group).collect! {|item| item.to_sym }
|
15
|
+
group = [ :agent ] | group
|
16
|
+
super(group.uniq, action, weight, description, help, provider_override)
|
17
|
+
end
|
18
|
+
|
10
19
|
#-----------------------------------------------------------------------------
|
11
20
|
# Property accessor / modifiers
|
12
21
|
|
@@ -19,9 +28,13 @@ class Agent < Nucleon.plugin_class(:nucleon, :cloud_action)
|
|
19
28
|
|
20
29
|
#---
|
21
30
|
|
22
|
-
def
|
23
|
-
#
|
24
|
-
|
31
|
+
def arguments
|
32
|
+
# Don't use or the default log file naming will screw up due to having to
|
33
|
+
# move daemonization to the corl loader.
|
34
|
+
#
|
35
|
+
# See: lib/corl.rb
|
36
|
+
#
|
37
|
+
[]
|
25
38
|
end
|
26
39
|
|
27
40
|
#-----------------------------------------------------------------------------
|
@@ -34,100 +47,49 @@ class Agent < Nucleon.plugin_class(:nucleon, :cloud_action)
|
|
34
47
|
#---
|
35
48
|
|
36
49
|
def agent_config
|
50
|
+
register_bool :log, true, 'corl.core.action.agent.options.log'
|
51
|
+
register_bool :truncate_log, true, 'corl.core.action.agent.options.truncate_log'
|
52
|
+
|
53
|
+
register_str :log_file, "/var/log/corl/#{plugin_provider}.log", 'corl.core.action.agent.options.log_file'
|
37
54
|
end
|
38
55
|
|
39
56
|
#-----------------------------------------------------------------------------
|
40
57
|
# Operations
|
41
58
|
|
42
|
-
def execute(use_network = true, &
|
59
|
+
def execute(use_network = true, &block)
|
43
60
|
super do |node|
|
44
61
|
ensure_network do
|
45
|
-
|
46
|
-
yield node
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
#---
|
52
|
-
|
53
|
-
def daemonize(node)
|
54
|
-
# Mostly derived from rack gem implementation
|
55
|
-
#
|
56
|
-
# https://github.com/rack/rack/blob/master/lib/rack/server.rb
|
57
|
-
# http://www.jstorimer.com/blogs/workingwithcode/7766093-daemon-processes-in-ruby
|
58
|
-
#
|
59
|
-
if RUBY_VERSION < "1.9"
|
60
|
-
exit if fork
|
61
|
-
Process.setsid
|
62
|
-
safe_exit if fork
|
63
|
-
|
64
|
-
Dir.chdir network.directory
|
65
|
-
|
66
|
-
STDIN.reopen "/dev/null"
|
67
|
-
STDOUT.reopen "/dev/null", "a"
|
68
|
-
STDERR.reopen "/dev/null", "a"
|
69
|
-
else
|
70
|
-
Process.daemon
|
71
|
-
end
|
62
|
+
add_agent(node)
|
72
63
|
|
73
|
-
|
64
|
+
trap(:INT) do
|
65
|
+
safe_exit
|
66
|
+
end
|
74
67
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
shutdown_process(node)
|
79
|
-
end
|
80
|
-
|
81
|
-
trap(:INT) do
|
82
|
-
safe_exit
|
68
|
+
block.call(node)
|
69
|
+
remove_agent(node) if myself.status == code.success
|
70
|
+
end
|
83
71
|
end
|
84
72
|
end
|
85
|
-
protected :daemonize
|
86
73
|
|
87
74
|
#-----------------------------------------------------------------------------
|
88
75
|
# Utilities
|
89
76
|
|
90
|
-
def
|
91
|
-
agent_settings = node.agent(plugin_provider)
|
92
|
-
|
93
|
-
return :not_running unless agent_settings && agent_settings.has_key?(:pid)
|
94
|
-
return :dead if agent_settings[:pid] == 0
|
95
|
-
|
96
|
-
Process.kill(0, agent_settings[:pid])
|
97
|
-
:running
|
98
|
-
|
99
|
-
rescue Errno::ESRCH
|
100
|
-
:dead
|
101
|
-
rescue Errno::EPERM
|
102
|
-
:not_owned
|
103
|
-
end
|
104
|
-
protected :process_status
|
105
|
-
|
106
|
-
#---
|
107
|
-
|
108
|
-
def save_process(node)
|
77
|
+
def add_agent(node)
|
109
78
|
settings[:pid] = Process.pid
|
110
79
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
:push => true
|
116
|
-
})
|
80
|
+
stored_config = Util::Data.clean(settings.export)
|
81
|
+
stored_config = Util::Data.rm_keys(stored_config, [ :node_provider, :nodes, :color, :version ])
|
82
|
+
|
83
|
+
node.add_agent(plugin_provider, stored_config)
|
117
84
|
end
|
118
|
-
protected :
|
85
|
+
protected :add_agent
|
119
86
|
|
120
87
|
#---
|
121
88
|
|
122
|
-
def
|
89
|
+
def remove_agent(node)
|
123
90
|
node.remove_agent(plugin_provider)
|
124
|
-
node.save({
|
125
|
-
:message => "Agent #{plugin_provider} shutting down on #{node.plugin_name}",
|
126
|
-
:remote => extension_set(:shutdown_handler_remote, :edit),
|
127
|
-
:push => true
|
128
|
-
})
|
129
91
|
end
|
130
|
-
protected :
|
92
|
+
protected :remove_agent
|
131
93
|
|
132
94
|
#---
|
133
95
|
|
data/lib/core/plugin/fog_node.rb
CHANGED
@@ -221,7 +221,14 @@ class FogBase < Nucleon.plugin_class(:CORL, :node)
|
|
221
221
|
# Utilities
|
222
222
|
|
223
223
|
def filter_output(type, data)
|
224
|
-
super
|
224
|
+
data = super
|
225
|
+
|
226
|
+
if type == :error
|
227
|
+
if data.include?('stdin: is not a tty') || data.include?('unable to re-open stdin')
|
228
|
+
data = ''
|
229
|
+
end
|
230
|
+
end
|
231
|
+
data
|
225
232
|
end
|
226
233
|
end
|
227
234
|
end
|
data/lib/core/plugin/network.rb
CHANGED
@@ -336,7 +336,7 @@ class Network < Nucleon.plugin_class(:nucleon, :base)
|
|
336
336
|
remote_name = config.delete(:remote, :edit)
|
337
337
|
|
338
338
|
node_config = extended_config(:network_new_node, Config.new(Util::Data.clean({
|
339
|
-
:settings => array(config.delete(:groups, []))
|
339
|
+
:settings => [ "server" ] | array(config.delete(:groups, [])),
|
340
340
|
:region => config.delete(:region, nil),
|
341
341
|
:machine_type => config.delete(:machine_type, nil),
|
342
342
|
:public_ip => config.delete(:public_ip, nil),
|
data/lib/core/plugin/node.rb
CHANGED
@@ -21,7 +21,7 @@ class Node < Nucleon.plugin_class(:nucleon, :base)
|
|
21
21
|
ui.resource = Util::Console.colorize(hostname, @class_color)
|
22
22
|
logger = hostname
|
23
23
|
|
24
|
-
|
24
|
+
myself[:settings] = [ "all", plugin_provider.to_s, plugin_name.to_s ] | array(setting(:settings))
|
25
25
|
|
26
26
|
unless reload
|
27
27
|
@cli_interface = Util::Liquid.new do |method, args, &code|
|
@@ -386,10 +386,22 @@ class Node < Nucleon.plugin_class(:nucleon, :base)
|
|
386
386
|
|
387
387
|
def add_agent(provider, settings)
|
388
388
|
set_setting([ :agents, provider ], Config.new(settings).export)
|
389
|
+
|
390
|
+
save({
|
391
|
+
:message => "Agent #{provider} starting up on #{plugin_provider} #{plugin_name}",
|
392
|
+
:remote => extension_set(:add_agent_remote, :edit),
|
393
|
+
:push => true
|
394
|
+
})
|
389
395
|
end
|
390
396
|
|
391
397
|
def remove_agent(provider)
|
392
398
|
delete_setting([ :agents, provider ])
|
399
|
+
|
400
|
+
save({
|
401
|
+
:message => "Agent #{provider} shutting down on #{plugin_provider} #{plugin_name}",
|
402
|
+
:remote => extension_set(:remove_agent_remote, :edit),
|
403
|
+
:push => true
|
404
|
+
})
|
393
405
|
end
|
394
406
|
|
395
407
|
#-----------------------------------------------------------------------------
|
@@ -830,20 +842,21 @@ class Node < Nucleon.plugin_class(:nucleon, :base)
|
|
830
842
|
|
831
843
|
begin
|
832
844
|
test = active_machine.exec(Util::Data.array(commands), config.export) do |type, command, data|
|
845
|
+
data = filter_output(type, data).rstrip
|
846
|
+
|
833
847
|
unless quiet
|
834
848
|
unless local?
|
835
|
-
|
836
|
-
|
837
|
-
unless text_output.empty?
|
849
|
+
unless data.empty?
|
838
850
|
if type == :error
|
839
|
-
warn(
|
851
|
+
warn(data, { :i18n => false })
|
840
852
|
else
|
841
|
-
info(
|
853
|
+
info(data, { :i18n => false })
|
842
854
|
end
|
843
855
|
end
|
844
856
|
end
|
845
857
|
yield(:progress, { :type => type, :command => command, :data => data }) if block_given?
|
846
858
|
end
|
859
|
+
data
|
847
860
|
end
|
848
861
|
results = test if test
|
849
862
|
|
@@ -919,32 +932,37 @@ class Node < Nucleon.plugin_class(:nucleon, :base)
|
|
919
932
|
codes :network_load_error
|
920
933
|
|
921
934
|
config = Config.ensure(options).defaults({
|
922
|
-
:log_level => Nucleon.log_level,
|
923
935
|
:net_remote => :edit,
|
924
936
|
:net_provider => network.plugin_provider
|
925
937
|
})
|
926
938
|
|
927
939
|
logger.info("Executing remote action #{provider} with encoded arguments: #{config.export.inspect}")
|
928
940
|
|
941
|
+
provider = provider.to_s.gsub('_', ' ')
|
942
|
+
action_agent = !!(provider =~ /^agent\s/)
|
929
943
|
encoded_config = Util::CLI.encode(Util::Data.clean(config.export))
|
930
944
|
action_config = extended_config(:action, {
|
931
|
-
:command => provider
|
932
|
-
:data => { :encoded
|
945
|
+
:command => provider,
|
946
|
+
:data => { :encoded => encoded_config }
|
933
947
|
})
|
948
|
+
action_config[:data][:log_level] = Nucleon.log_level if Nucleon.log_level
|
934
949
|
|
935
950
|
quiet = config.get(:quiet, false)
|
936
951
|
parallel = config.get(:parallel, true)
|
937
952
|
|
938
953
|
command_base = 'corl'
|
939
954
|
command_base = "NUCLEON_NO_PARALLEL=1 #{command_base}" unless parallel
|
955
|
+
command_base = "NUCLEON_NO_COLOR=1 #{command_base}" if action_agent
|
940
956
|
|
941
957
|
result = command(command_base, { :subcommand => action_config, :as_admin => true, :quiet => quiet }) do |op, data|
|
942
958
|
yield(op, data) if block_given?
|
943
959
|
end
|
944
960
|
|
945
961
|
# Update local network configuration so we capture any updates
|
946
|
-
|
947
|
-
result.status
|
962
|
+
unless action_agent
|
963
|
+
if result.status == code.success && ! network.load({ :remote => config[:net_remote], :pull => true })
|
964
|
+
result.status = code.network_load_error
|
965
|
+
end
|
948
966
|
end
|
949
967
|
result
|
950
968
|
end
|
data/lib/core/vagrant/config.rb
CHANGED
@@ -375,8 +375,11 @@ module Config
|
|
375
375
|
|
376
376
|
if use_nfs && bindfs_installed
|
377
377
|
machine.vm.synced_folder ".", "/vagrant", disabled: true
|
378
|
-
|
379
|
-
|
378
|
+
|
379
|
+
unless ENV['CORL_NO_NETWORK_SHARE']
|
380
|
+
machine.vm.synced_folder ".", "/tmp/vagrant", :type => "nfs"
|
381
|
+
machine.bindfs.bind_folder "/tmp/vagrant", "/vagrant"
|
382
|
+
end
|
380
383
|
end
|
381
384
|
|
382
385
|
render("\n") unless already_processed
|
data/lib/core/vagrant/plugins.rb
CHANGED
data/lib/corl.rb
CHANGED
@@ -24,6 +24,81 @@ util_dir = File.join(core_dir, 'util')
|
|
24
24
|
mod_dir = File.join(core_dir, 'mod')
|
25
25
|
vagrant_dir = File.join(core_dir, 'vagrant')
|
26
26
|
|
27
|
+
vagrant_exists = defined?(Vagrant) == 'constant' && Vagrant.class == Module
|
28
|
+
|
29
|
+
#-------------------------------------------------------------------------------
|
30
|
+
# Daemonize if needed
|
31
|
+
#
|
32
|
+
# This must come before Nucleon is loaded due to a huge bug in Celluloid that
|
33
|
+
# prevents it from working in parallel mode if Celluloid actors are already
|
34
|
+
# initialized before daemonization.
|
35
|
+
|
36
|
+
# Must be an agent that is running locally
|
37
|
+
|
38
|
+
# For the record, this stinks, it's ugly, and I hate it, but the maintainer
|
39
|
+
# of Celluloid does not seem to regard it as important enough to fix.
|
40
|
+
#
|
41
|
+
# https://github.com/celluloid/celluloid/issues/97
|
42
|
+
#
|
43
|
+
# For agent options processed here, see lib/core/plugin/agent.rb
|
44
|
+
#
|
45
|
+
action_start_index = vagrant_exists ? 1 : 0
|
46
|
+
|
47
|
+
if ARGV[action_start_index].to_sym == :agent
|
48
|
+
remote_exec = false
|
49
|
+
|
50
|
+
log = true
|
51
|
+
truncate_log = true
|
52
|
+
|
53
|
+
log_file = nil
|
54
|
+
agent_provider = []
|
55
|
+
process_log_file_value = false
|
56
|
+
|
57
|
+
first_option_found = false
|
58
|
+
|
59
|
+
# Argument processing
|
60
|
+
ARGV[(action_start_index + 1)..-1].each do |arg|
|
61
|
+
first_option_found = true if arg[0] == '-'
|
62
|
+
|
63
|
+
if arg =~ /^\-\-nodes\=?/
|
64
|
+
remote_exec = true
|
65
|
+
elsif arg == "--no-log"
|
66
|
+
log = false
|
67
|
+
elsif arg == "--no-truncate_log"
|
68
|
+
truncate_log = false
|
69
|
+
elsif arg =~ /^\-\-log_file(?=\=(.*))?/
|
70
|
+
if $1
|
71
|
+
log_file = $1
|
72
|
+
else
|
73
|
+
process_log_file_value = true
|
74
|
+
end
|
75
|
+
elsif process_log_file_value
|
76
|
+
log_file = arg
|
77
|
+
process_log_file_value = false
|
78
|
+
elsif ! first_option_found
|
79
|
+
agent_provider << arg
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# TODO: Need better way to share with base agent default log file. (mixin?)
|
84
|
+
log_file = "/var/log/corl/agent_#{agent_provider.join('_')}.log" unless log_file
|
85
|
+
|
86
|
+
unless remote_exec || vagrant_exists
|
87
|
+
# Daemonize process
|
88
|
+
Process.daemon
|
89
|
+
|
90
|
+
# Log all output, or not
|
91
|
+
if log
|
92
|
+
FileUtils.mkdir_p('/var/log/corl')
|
93
|
+
File.write(log_file, '') if truncate_log
|
94
|
+
|
95
|
+
$stderr.reopen(log_file, 'a')
|
96
|
+
$stdout.reopen($stderr)
|
97
|
+
$stdout.sync = $stderr.sync = true
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
27
102
|
#-------------------------------------------------------------------------------
|
28
103
|
# CORL requirements
|
29
104
|
|
@@ -103,9 +178,8 @@ nucleon_require(core_dir, :build)
|
|
103
178
|
nucleon_require(core_dir, :plugin)
|
104
179
|
|
105
180
|
# Include Vagrant plugins (only include if running inside Vagrant)
|
106
|
-
|
107
|
-
|
108
|
-
end
|
181
|
+
nucleon_require(vagrant_dir, :plugins) if vagrant_exists
|
182
|
+
|
109
183
|
|
110
184
|
#-------------------------------------------------------------------------------
|
111
185
|
# CORL interface
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
module Nucleon
|
3
|
+
module Extension
|
4
|
+
class CorlExecutable < Nucleon.plugin_class(:nucleon, :extension)
|
5
|
+
|
6
|
+
def executable_load(config)
|
7
|
+
network_path = Nucleon.fact(:corl_network)
|
8
|
+
Nucleon.load_plugins(network_path) if Dir.pwd != network_path
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/locales/en.yml
CHANGED
@@ -23,6 +23,14 @@ en:
|
|
23
23
|
Node plugin provider %{value} is not loaded >> Pick from the following: %{choices}
|
24
24
|
nodes: |-
|
25
25
|
Node reference %{value} failed to parse or provider %{provider} isn't loaded (%{name})
|
26
|
+
agent:
|
27
|
+
options:
|
28
|
+
log: |-
|
29
|
+
Whether or not to render agent stdout and stderr to a log file (default %{default_value})
|
30
|
+
truncate_log: |-
|
31
|
+
Truncate log file before writing any more output (default %{default_value})
|
32
|
+
log_file: |-
|
33
|
+
Log file to route agent output (default %{default_value})
|
26
34
|
node:
|
27
35
|
bootstrap:
|
28
36
|
status: |-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: corl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Webb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nucleon
|
@@ -304,6 +304,7 @@ files:
|
|
304
304
|
- lib/nucleon/action/plugins.rb
|
305
305
|
- lib/nucleon/event/puppet.rb
|
306
306
|
- lib/nucleon/extension/corl_config.rb
|
307
|
+
- lib/nucleon/extension/corl_executable.rb
|
307
308
|
- lib/nucleon/extension/vagrant.rb
|
308
309
|
- lib/nucleon/template/environment.rb
|
309
310
|
- lib/puppet/indirector/corl.rb
|