corl 0.4.0 → 0.4.1
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.
- data/Gemfile +5 -10
- data/Gemfile.lock +13 -11
- data/README.rdoc +1 -1
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/bin/corl +2 -54
- data/bootstrap/bootstrap.sh +91 -0
- data/bootstrap/lib/shell/LICENSE.txt +674 -0
- data/bootstrap/lib/shell/command.sh +214 -0
- data/bootstrap/lib/shell/filesystem.sh +139 -0
- data/bootstrap/lib/shell/load.sh +73 -0
- data/bootstrap/lib/shell/os.sh +67 -0
- data/bootstrap/lib/shell/script.sh +160 -0
- data/bootstrap/lib/shell/starter.sh +64 -0
- data/bootstrap/lib/shell/validators.sh +50 -0
- data/bootstrap/os/ubuntu/00_base.sh +5 -0
- data/bootstrap/os/ubuntu/01_git.sh +5 -0
- data/bootstrap/os/ubuntu/05_ruby.sh +7 -0
- data/bootstrap/os/ubuntu/06_puppet.sh +38 -0
- data/bootstrap/os/ubuntu/10_corl.sh +9 -0
- data/corl.gemspec +61 -124
- data/lib/{corl → CORL}/action/bootstrap.rb +13 -7
- data/lib/CORL/action/exec.rb +39 -0
- data/lib/CORL/action/image.rb +31 -0
- data/lib/{corl → CORL}/action/images.rb +1 -1
- data/lib/CORL/action/lookup.rb +34 -0
- data/lib/{corl → CORL}/action/machines.rb +1 -1
- data/lib/CORL/action/provision.rb +31 -0
- data/lib/{corl → CORL}/action/seed.rb +3 -3
- data/lib/{corl → CORL}/action/spawn.rb +2 -2
- data/lib/CORL/action/start.rb +31 -0
- data/lib/CORL/action/stop.rb +31 -0
- data/lib/{corl → CORL}/configuration/file.rb +1 -1
- data/lib/{corl → CORL}/event/puppet.rb +1 -1
- data/lib/{corl → CORL}/extension/puppetloader.rb +1 -1
- data/lib/{corl → CORL}/machine/fog.rb +3 -3
- data/lib/{corl → CORL}/machine/physical.rb +2 -2
- data/lib/{corl → CORL}/network/default.rb +1 -1
- data/lib/{corl → CORL}/node/aws.rb +0 -4
- data/lib/{corl → CORL}/node/google.rb +0 -4
- data/lib/{corl → CORL}/node/local.rb +1 -1
- data/lib/{corl → CORL}/node/rackspace.rb +0 -4
- data/lib/{corl → CORL}/provisioner/puppetnode.rb +1 -14
- data/lib/{corl → CORL}/provisioner/puppetnode/resource.rb +0 -0
- data/lib/{corl → CORL}/provisioner/puppetnode/resource_group.rb +0 -0
- data/lib/{corl → CORL}/template/environment.rb +1 -1
- data/lib/core/facade.rb +49 -0
- data/lib/{corl_core → core}/mixin/action/keypair.rb +10 -10
- data/lib/{corl_core → core}/mixin/lookup.rb +0 -0
- data/lib/{corl_core → core}/mod/hiera_backend.rb +0 -0
- data/lib/{corl_core/mixin/action/node.rb → core/plugin/action.rb} +66 -33
- data/lib/{corl_core → core}/plugin/configuration.rb +2 -2
- data/lib/{corl/node → core/plugin}/fog.rb +5 -1
- data/lib/{corl_core → core}/plugin/machine.rb +2 -2
- data/lib/{corl_core → core}/plugin/network.rb +4 -4
- data/lib/{corl_core → core}/plugin/node.rb +11 -9
- data/lib/{corl_core → core}/plugin/provisioner.rb +2 -2
- data/lib/{corl_core → core}/util/ssh.rb +1 -1
- data/lib/corl.rb +53 -112
- data/lib/puppet/parser/functions/ensure.rb +0 -4
- data/locales/en.yml +55 -148
- metadata +84 -222
- data/lib/corl/action/add.rb +0 -69
- data/lib/corl/action/clone.rb +0 -40
- data/lib/corl/action/create.rb +0 -55
- data/lib/corl/action/exec.rb +0 -41
- data/lib/corl/action/extract.rb +0 -49
- data/lib/corl/action/image.rb +0 -30
- data/lib/corl/action/lookup.rb +0 -35
- data/lib/corl/action/provision.rb +0 -37
- data/lib/corl/action/remove.rb +0 -51
- data/lib/corl/action/save.rb +0 -53
- data/lib/corl/action/start.rb +0 -37
- data/lib/corl/action/stop.rb +0 -30
- data/lib/corl/action/update.rb +0 -37
- data/lib/corl/command/shell.rb +0 -164
- data/lib/corl/event/regex.rb +0 -52
- data/lib/corl/project/git.rb +0 -465
- data/lib/corl/project/github.rb +0 -108
- data/lib/corl/template/json.rb +0 -16
- data/lib/corl/template/wrapper.rb +0 -16
- data/lib/corl/template/yaml.rb +0 -16
- data/lib/corl/translator/json.rb +0 -27
- data/lib/corl/translator/yaml.rb +0 -27
- data/lib/corl_core/codes.rb +0 -107
- data/lib/corl_core/config.rb +0 -337
- data/lib/corl_core/config/collection.rb +0 -57
- data/lib/corl_core/config/options.rb +0 -70
- data/lib/corl_core/core.rb +0 -59
- data/lib/corl_core/corl.rb +0 -254
- data/lib/corl_core/errors.rb +0 -84
- data/lib/corl_core/facade.rb +0 -126
- data/lib/corl_core/gems.rb +0 -72
- data/lib/corl_core/manager.rb +0 -425
- data/lib/corl_core/mixin/action/commit.rb +0 -58
- data/lib/corl_core/mixin/action/project.rb +0 -53
- data/lib/corl_core/mixin/action/push.rb +0 -52
- data/lib/corl_core/mixin/config/collection.rb +0 -53
- data/lib/corl_core/mixin/config/ops.rb +0 -53
- data/lib/corl_core/mixin/config/options.rb +0 -39
- data/lib/corl_core/mixin/macro/object_interface.rb +0 -361
- data/lib/corl_core/mixin/macro/plugin_interface.rb +0 -380
- data/lib/corl_core/mixin/settings.rb +0 -46
- data/lib/corl_core/mixin/sub_config.rb +0 -148
- data/lib/corl_core/mod/hash.rb +0 -29
- data/lib/corl_core/plugin/action.rb +0 -381
- data/lib/corl_core/plugin/base.rb +0 -374
- data/lib/corl_core/plugin/command.rb +0 -98
- data/lib/corl_core/plugin/event.rb +0 -53
- data/lib/corl_core/plugin/extension.rb +0 -12
- data/lib/corl_core/plugin/project.rb +0 -927
- data/lib/corl_core/plugin/template.rb +0 -80
- data/lib/corl_core/plugin/translator.rb +0 -38
- data/lib/corl_core/util/cli.rb +0 -352
- data/lib/corl_core/util/data.rb +0 -404
- data/lib/corl_core/util/disk.rb +0 -114
- data/lib/corl_core/util/git.rb +0 -47
- data/lib/corl_core/util/interface.rb +0 -319
- data/lib/corl_core/util/liquid.rb +0 -17
- data/lib/corl_core/util/package.rb +0 -93
- data/lib/corl_core/util/shell.rb +0 -239
- data/spec/corl_core/interface_spec.rb +0 -489
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
module CORL
|
3
3
|
module Provisioner
|
4
|
-
class Puppetnode <
|
4
|
+
class Puppetnode < CORL.plugin_class(:provisioner)
|
5
5
|
|
6
6
|
#-----------------------------------------------------------------------------
|
7
7
|
# Provisioner plugin interface
|
@@ -25,19 +25,6 @@ class Puppetnode < Plugin::Provisioner
|
|
25
25
|
register
|
26
26
|
end
|
27
27
|
|
28
|
-
#---
|
29
|
-
|
30
|
-
def register
|
31
|
-
# Register Puppet CORL extensions
|
32
|
-
env.modules.each do |mod|
|
33
|
-
lib_dir = File.join(mod.path, 'lib', 'corl')
|
34
|
-
if File.directory?(lib_dir)
|
35
|
-
logger.debug("Registering Puppet module at #{lib_dir}")
|
36
|
-
Manager.connection.register(lib_dir)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
28
|
#-----------------------------------------------------------------------------
|
42
29
|
# Property accessor / modifiers
|
43
30
|
|
File without changes
|
File without changes
|
data/lib/core/facade.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
module CORL
|
3
|
+
module Facade
|
4
|
+
|
5
|
+
#-----------------------------------------------------------------------------
|
6
|
+
# Core plugin type facade
|
7
|
+
|
8
|
+
def configuration(options, provider = nil)
|
9
|
+
plugin(:configuration, provider, options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def configurations(data, build_hash = false, keep_array = false)
|
13
|
+
plugins(:configuration, data, build_hash, keep_array)
|
14
|
+
end
|
15
|
+
|
16
|
+
#-----------------------------------------------------------------------------
|
17
|
+
# Cluster plugin type facade
|
18
|
+
|
19
|
+
def network(name, options = {}, provider = nil)
|
20
|
+
plugin(:network, provider, Config.ensure(options).import({ :name => name }))
|
21
|
+
end
|
22
|
+
|
23
|
+
def networks(data, build_hash = false, keep_array = false)
|
24
|
+
plugins(:network, data, build_hash, keep_array)
|
25
|
+
end
|
26
|
+
|
27
|
+
#---
|
28
|
+
|
29
|
+
def node(name, options = {}, provider = nil)
|
30
|
+
plugin(:node, provider, Config.ensure(options).import({ :name => name }))
|
31
|
+
end
|
32
|
+
|
33
|
+
def nodes(data, build_hash = false, keep_array = false)
|
34
|
+
plugins(:node, data, build_hash, keep_array)
|
35
|
+
end
|
36
|
+
|
37
|
+
#---
|
38
|
+
|
39
|
+
def provisioner(options, provider = nil)
|
40
|
+
plugin(:provisioner, provider, options)
|
41
|
+
end
|
42
|
+
|
43
|
+
#---
|
44
|
+
|
45
|
+
def provisioners(data, build_hash = false, keep_array = false)
|
46
|
+
plugins(:provisioner, data, build_hash, keep_array)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -8,41 +8,41 @@ module Keypair
|
|
8
8
|
# Options
|
9
9
|
|
10
10
|
def keypair_config
|
11
|
-
register :private_key, :str, nil, 'corl.core.
|
11
|
+
register :private_key, :str, nil, 'corl.core.mixin.action.keypair.options.private_key' do |value|
|
12
12
|
success = true
|
13
13
|
if value
|
14
14
|
file = File.expand_path(value)
|
15
15
|
if File.exists?(file)
|
16
16
|
unless Util::SSH.generate({ :private_key => file })
|
17
|
-
warn('corl.core.
|
17
|
+
warn('corl.core.mixin.action.keypair.errors.private_key_parse_error', { :value => file })
|
18
18
|
success = false
|
19
19
|
end
|
20
20
|
else
|
21
|
-
warn('corl.core.
|
21
|
+
warn('corl.core.mixin.action.keypair.errors.private_key_not_found', { :value => file })
|
22
22
|
success = false
|
23
23
|
end
|
24
24
|
end
|
25
25
|
success
|
26
26
|
end
|
27
27
|
|
28
|
-
register :require_password, :bool, false, 'corl.core.
|
28
|
+
register :require_password, :bool, false, 'corl.core.mixin.action.keypair.options.require_password'
|
29
29
|
|
30
|
-
register :key_type, :str, 'RSA', 'corl.core.
|
30
|
+
register :key_type, :str, 'RSA', 'corl.core.mixin.action.keypair.options.key_type' do |value|
|
31
31
|
key_type_choices = [ 'RSA', 'DSA' ]
|
32
32
|
unless key_type_choices.include?(value.to_s.upcase)
|
33
|
-
warn('corl.core.
|
33
|
+
warn('corl.core.mixin.action.keypair.errors.key_type', { :value => value, :choices => key_type_choices })
|
34
34
|
next false
|
35
35
|
end
|
36
36
|
true
|
37
37
|
end
|
38
|
-
register :key_bits, :int, 2048, 'corl.core.
|
38
|
+
register :key_bits, :int, 2048, 'corl.core.mixin.action.keypair.options.key_bits' do |value|
|
39
39
|
unless value >= 2048
|
40
|
-
warn('corl.core.
|
40
|
+
warn('corl.core.mixin.action.keypair.errors.key_bits', { :value => value, :required => 2048 })
|
41
41
|
next false
|
42
42
|
end
|
43
43
|
true
|
44
44
|
end
|
45
|
-
register :key_comment, :str, '', 'corl.core.
|
45
|
+
register :key_comment, :str, '', 'corl.core.mixin.action.keypair.options.key_comment'
|
46
46
|
|
47
47
|
config_subset(keypair_ignore)
|
48
48
|
end
|
@@ -89,7 +89,7 @@ module Keypair
|
|
89
89
|
if password
|
90
90
|
key_options[:passphrase] = password
|
91
91
|
else
|
92
|
-
warn('corl.core.
|
92
|
+
warn('corl.core.mixin.action.keypair.errors.no_password')
|
93
93
|
return nil
|
94
94
|
end
|
95
95
|
end
|
File without changes
|
File without changes
|
@@ -1,41 +1,56 @@
|
|
1
1
|
|
2
2
|
module CORL
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
module Plugin
|
4
|
+
class CloudAction < CORL.plugin_class(:action)
|
5
|
+
|
6
|
+
#-----------------------------------------------------------------------------
|
7
|
+
# Property accessor / modifiers
|
8
|
+
|
9
|
+
def namespace
|
10
|
+
:corl
|
11
|
+
end
|
12
|
+
|
13
|
+
#---
|
14
|
+
|
15
|
+
def configure
|
16
|
+
super do
|
17
|
+
node_config
|
18
|
+
yield if block_given?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
7
22
|
#-----------------------------------------------------------------------------
|
8
23
|
# Settings
|
9
24
|
|
10
25
|
def node_config
|
11
|
-
node_plugins =
|
26
|
+
node_plugins = CORL.loaded_plugins(:node)
|
12
27
|
|
13
|
-
register :parallel, :bool, true, 'corl.core.
|
14
|
-
register :net_provider, :str, :default, 'corl.core.
|
28
|
+
register :parallel, :bool, true, 'corl.core.action.options.parallel'
|
29
|
+
register :net_provider, :str, :default, 'corl.core.action.options.net_provider' do |value|
|
15
30
|
value = value.to_sym
|
16
|
-
network_plugins =
|
31
|
+
network_plugins = CORL.loaded_plugins(:network)
|
17
32
|
|
18
33
|
unless network_plugins.keys.include?(value)
|
19
|
-
warn('corl.core.
|
34
|
+
warn('corl.core.action.errors.network_provider', { :value => value, :choices => network_plugins.keys.join(", ") })
|
20
35
|
next false
|
21
36
|
end
|
22
37
|
true
|
23
38
|
end
|
24
|
-
register :node_provider, :str, :local, 'corl.core.
|
39
|
+
register :node_provider, :str, :local, 'corl.core.action.options.node_provider' do |value|
|
25
40
|
value = value.to_sym
|
26
41
|
|
27
42
|
unless node_plugins.keys.include?(value)
|
28
|
-
warn('corl.core.
|
43
|
+
warn('corl.core.action.errors.node_provider', { :value => value, :choices => node_plugins.keys.join(", ") })
|
29
44
|
next false
|
30
45
|
end
|
31
46
|
true
|
32
47
|
end
|
33
|
-
register :nodes, :array, [], 'corl.core.
|
48
|
+
register :nodes, :array, [], 'corl.core.action.options.nodes' do |values|
|
34
49
|
success = true
|
35
50
|
values.each do |value|
|
36
|
-
if info =
|
51
|
+
if info = CORL.plugin_class(:node).translate_reference(value)
|
37
52
|
if ! node_plugins.keys.include?(info[:provider].to_sym) || info[:name].empty?
|
38
|
-
warn('corl.core.
|
53
|
+
warn('corl.core.action.errors.nodes', { :value => value, :provider => info[:provider], :name => info[:name] })
|
39
54
|
success = false
|
40
55
|
end
|
41
56
|
end
|
@@ -49,28 +64,25 @@ module Node
|
|
49
64
|
def node_ignore
|
50
65
|
[ :parallel, :net_provider, :node_provider, :nodes ]
|
51
66
|
end
|
52
|
-
|
67
|
+
|
53
68
|
#-----------------------------------------------------------------------------
|
54
69
|
# Operations
|
55
70
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
71
|
+
def validate(node, network)
|
72
|
+
super(node, network)
|
73
|
+
end
|
74
|
+
|
75
|
+
#---
|
76
|
+
|
77
|
+
def execute
|
78
|
+
super(true, true) do
|
79
|
+
node_exec do |node, network|
|
80
|
+
hook_config = { :node => node, :network => network }
|
81
|
+
|
82
|
+
yield(node, network) if block_given? && extension_check(:exec_init, hook_config)
|
83
|
+
myself.status = extension_set(:exec_exit, status, hook_config)
|
84
|
+
end
|
63
85
|
end
|
64
|
-
|
65
|
-
# Load network if it exists
|
66
|
-
network_config = extended_config(:network, { :directory => network_path })
|
67
|
-
|
68
|
-
network = CORL.network(
|
69
|
-
CORL.sha1(network_config),
|
70
|
-
network_config,
|
71
|
-
settings[:net_provider]
|
72
|
-
)
|
73
|
-
network
|
74
86
|
end
|
75
87
|
|
76
88
|
#---
|
@@ -119,6 +131,28 @@ module Node
|
|
119
131
|
|
120
132
|
#---
|
121
133
|
|
134
|
+
def init_network(path = nil)
|
135
|
+
# Get network configuration path
|
136
|
+
if CORL.admin?
|
137
|
+
network_path = lookup(:corl_network)
|
138
|
+
Dir.mkdir(network_path) unless File.directory?(network_path)
|
139
|
+
else
|
140
|
+
network_path = ( path.nil? ? Dir.pwd : File.expand_path(path) )
|
141
|
+
end
|
142
|
+
|
143
|
+
# Load network if it exists
|
144
|
+
network_config = extended_config(:network, { :directory => network_path })
|
145
|
+
|
146
|
+
network = CORL.network(
|
147
|
+
CORL.sha1(network_config),
|
148
|
+
network_config,
|
149
|
+
settings[:net_provider]
|
150
|
+
)
|
151
|
+
network
|
152
|
+
end
|
153
|
+
|
154
|
+
#---
|
155
|
+
|
122
156
|
def execute_remote(node, network, op, data)
|
123
157
|
# Implement in sub classes if needed
|
124
158
|
data
|
@@ -126,4 +160,3 @@ module Node
|
|
126
160
|
end
|
127
161
|
end
|
128
162
|
end
|
129
|
-
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
|
2
|
+
nucleon_require(File.dirname(__FILE__), :node)
|
3
|
+
|
4
|
+
#---
|
5
|
+
|
2
6
|
module CORL
|
3
7
|
module Node
|
4
|
-
class Fog <
|
8
|
+
class Fog < CORL.plugin_class(:node)
|
5
9
|
|
6
10
|
#-----------------------------------------------------------------------------
|
7
11
|
# Node plugin interface
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
|
-
module
|
2
|
+
module Nucleon
|
3
3
|
module Plugin
|
4
|
-
class Network <
|
4
|
+
class Network < CORL.plugin_class(:base)
|
5
5
|
|
6
6
|
init_plugin_collection
|
7
7
|
|
@@ -48,7 +48,7 @@ class Network < Base
|
|
48
48
|
def node_groups
|
49
49
|
groups = {}
|
50
50
|
|
51
|
-
each_node_config
|
51
|
+
each_node_config do |provider, name, info|
|
52
52
|
search_node(provider, name, :groups, [], :array).each do |group|
|
53
53
|
group = group.to_sym
|
54
54
|
groups[group] = [] unless groups.has_key?(group)
|
@@ -107,7 +107,7 @@ class Network < Base
|
|
107
107
|
#---
|
108
108
|
|
109
109
|
def node_by_ip(public_ip)
|
110
|
-
each_node_config
|
110
|
+
each_node_config do |provider, name, info|
|
111
111
|
return node(provider, name) if info[:public_ip] == public_ip
|
112
112
|
end
|
113
113
|
nil
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
|
-
module
|
2
|
+
module Nucleon
|
3
3
|
module Plugin
|
4
|
-
class Node <
|
4
|
+
class Node < CORL.plugin_class(:base)
|
5
5
|
|
6
6
|
include Celluloid
|
7
7
|
|
@@ -12,7 +12,7 @@ class Node < Base
|
|
12
12
|
super
|
13
13
|
|
14
14
|
ui.resource = hostname
|
15
|
-
|
15
|
+
logger = hostname
|
16
16
|
|
17
17
|
@cli_interface = Util::Liquid.new do |method, args, &code|
|
18
18
|
result = exec({ :commands => [ [ method, args ].flatten.join(' ') ] }) do |op, data|
|
@@ -28,7 +28,7 @@ class Node < Base
|
|
28
28
|
action(method, *args) do |op, data|
|
29
29
|
code.call(op, data) if code
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
32
32
|
end
|
33
33
|
|
34
34
|
#---
|
@@ -304,7 +304,7 @@ class Node < Base
|
|
304
304
|
# Machine operations
|
305
305
|
|
306
306
|
def create_machine(name, provider, options = {})
|
307
|
-
CORL.
|
307
|
+
CORL.create_plugin(:machine, provider, extended_config(name, options).import({ :meta => { :parent => myself }}))
|
308
308
|
end
|
309
309
|
|
310
310
|
#---
|
@@ -461,7 +461,7 @@ class Node < Base
|
|
461
461
|
active_machine = local? ? local_machine : machine
|
462
462
|
|
463
463
|
if commands = config.get(:commands, nil)
|
464
|
-
|
464
|
+
render("Starting command execution: #{commands.join('; ')}")
|
465
465
|
results = active_machine.exec(commands, config.export) do |type, command, data|
|
466
466
|
if type == :error
|
467
467
|
alert(data)
|
@@ -498,7 +498,7 @@ class Node < Base
|
|
498
498
|
|
499
499
|
def command(command, options = {})
|
500
500
|
unless command.is_a?(CORL::Plugin::Command)
|
501
|
-
command = CORL.command(Config.new({ :command => command }).import(options), :
|
501
|
+
command = CORL.command(Config.new({ :command => command }).import(options), :bash)
|
502
502
|
end
|
503
503
|
results = exec({ :commands => [ command.to_s ] }) do |op, data|
|
504
504
|
yield(op, data) if block_given?
|
@@ -536,7 +536,7 @@ class Node < Base
|
|
536
536
|
myself.status = code.unknown_status
|
537
537
|
|
538
538
|
bootstrap_name = 'bootstrap'
|
539
|
-
bootstrap_path = config.get(:bootstrap_path, File.join(
|
539
|
+
bootstrap_path = config.get(:bootstrap_path, File.join(CORL.lib_path, '..', bootstrap_name))
|
540
540
|
bootstrap_glob = config.get(:bootstrap_glob, '**/*.sh')
|
541
541
|
bootstrap_init = config.get(:bootstrap_init, 'bootstrap.sh')
|
542
542
|
|
@@ -581,13 +581,15 @@ class Node < Base
|
|
581
581
|
|
582
582
|
# Execute bootstrap process
|
583
583
|
if status == code.success
|
584
|
-
remote_script = File.join(remote_bootstrap_path, bootstrap_init)
|
584
|
+
remote_script = File.join(remote_bootstrap_path, bootstrap_init)
|
585
|
+
|
585
586
|
result = command(remote_script) do |op, data|
|
586
587
|
yield("exec_#{op}".to_sym, data) if block_given?
|
587
588
|
data
|
588
589
|
end
|
589
590
|
|
590
591
|
if result.status != code.success
|
592
|
+
warn('corl.core.node.bootstrap.status', { :script => remote_script, :status => result.status })
|
591
593
|
myself.status = code.bootstrap_exec_failure
|
592
594
|
end
|
593
595
|
end
|