rundock 0.4.15 → 0.4.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Rakefile +1 -1
- data/lib/rundock/attribute/node_attribute.rb +1 -1
- data/lib/rundock/builder/hook_builder.rb +32 -17
- data/lib/rundock/builder/operation_builder.rb +7 -5
- data/lib/rundock/builder/scenario_builder.rb +5 -2
- data/lib/rundock/logger.rb +20 -2
- data/lib/rundock/node.rb +2 -2
- data/lib/rundock/operation/task.rb +4 -0
- data/lib/rundock/version.rb +1 -1
- data/spec/integration/hooks/{all_file_hooks.yml → all_file_hooks_by_option.yml} +0 -0
- data/spec/integration/hooks/{simple_file_hooks.yml → file_hooks_by_option.yml} +0 -0
- data/spec/integration/platforms/localhost/scenarios/{all_file_hooks_scenario.yml → all_file_hooks_by_option_scenario.yml} +0 -0
- data/spec/integration/platforms/localhost/scenarios/{simple_file_hooks_scenario.yml → file_hooks_by_option_scenario.yml} +0 -0
- data/spec/integration/platforms/localhost/scenarios/file_hooks_scenario.yml +23 -0
- data/spec/integration/recipes/file_hook_by_option_spec.rb +33 -0
- data/spec/integration/recipes/file_hook_spec.rb +6 -21
- data/spec/integration/scenarios/{all_file_hooks_scenario.yml → all_file_hooks_by_option_scenario.yml} +2 -0
- data/spec/integration/scenarios/{simple_file_hooks_scenario.yml → file_hooks_by_option_scenario.yml} +3 -0
- data/spec/integration/scenarios/file_hooks_scenario.yml +24 -0
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24c0aa8f73630ca0f4fcab31e3db5fe9d6c56e4a
|
4
|
+
data.tar.gz: 93a2cabce87a681f76f5a344b4d36135365a85ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf3d9806d2389fbf71c5eb34523e9d3bc9f3c6dbfb7a2b6a9060d77c86840f3bb22bbdf65c570d119159efa4a1cca77a97758ffa89d6ab5d113609c4611eeb84
|
7
|
+
data.tar.gz: d6c254e1e05c9c836b9f2bba9166c4119cfd2aac76113306acc79b72d791dc01c5bde8d9d865d6503a45091ed3bcfd784538f814837d4255b5ae3dc91a918a06
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
@@ -73,7 +73,7 @@ def do_rundock_scenarios(platform)
|
|
73
73
|
default_ssh_opt = ''
|
74
74
|
end
|
75
75
|
|
76
|
-
if scenario =~ %r{^*scenarios/(.*
|
76
|
+
if scenario =~ %r{^*scenarios/(.*_hooks_by_option)_scenario.yml$}
|
77
77
|
hooks_opt = " -k ./spec/integration/hooks/#{Regexp.last_match(1)}.yml"
|
78
78
|
else
|
79
79
|
hooks_opt = ''
|
@@ -6,11 +6,18 @@ module Rundock
|
|
6
6
|
DEFAULT_HOOKS_FILE_PATH = './hooks.yml'
|
7
7
|
HookStructureError = Class.new(NotImplementedError)
|
8
8
|
|
9
|
-
|
9
|
+
attr_accessor :enable_hooks
|
10
|
+
|
11
|
+
def initialize(options)
|
12
|
+
super(options)
|
13
|
+
@enable_hooks = {}
|
14
|
+
end
|
15
|
+
|
16
|
+
def build(enables, hook_attributes)
|
10
17
|
if enables.blank?
|
11
18
|
Logger.info('Empty hook is specified.')
|
12
19
|
return []
|
13
|
-
elsif @options[:hooks]
|
20
|
+
elsif hook_attributes.nil? && @options[:hooks]
|
14
21
|
if FileTest.exist?(@options[:hooks])
|
15
22
|
hooks_file = @options[:hooks]
|
16
23
|
Logger.info("hooks file is #{hooks_file}")
|
@@ -18,36 +25,44 @@ module Rundock
|
|
18
25
|
Logger.warn("hooks file is not found. use #{DEFAULT_HOOKS_FILE_PATH}")
|
19
26
|
hooks_file = DEFAULT_HOOKS_FILE_PATH
|
20
27
|
end
|
21
|
-
|
28
|
+
elsif hook_attributes.nil?
|
29
|
+
Logger.warn("Hook source is not found. (enables:#{enables.join(',')})") unless enables.empty?
|
22
30
|
return []
|
23
31
|
end
|
24
32
|
|
25
|
-
|
33
|
+
if hooks_file
|
34
|
+
build_from_attributes(YAML.load_file(hooks_file).deep_symbolize_keys, enables)
|
35
|
+
else
|
36
|
+
build_from_attributes(hook_attributes, enables)
|
37
|
+
end
|
26
38
|
end
|
27
39
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
40
|
+
def rebuild(node_attributes)
|
41
|
+
hooks = []
|
42
|
+
|
43
|
+
node_attributes.each do |k, v|
|
44
|
+
hooks = Rundock::HookFactory.instance(v[:hook_type]).create(k.to_s, v)
|
45
|
+
end
|
46
|
+
|
47
|
+
hooks
|
31
48
|
end
|
32
49
|
|
33
50
|
private
|
34
51
|
|
35
|
-
def
|
52
|
+
def build_from_attributes(attributes, enables)
|
36
53
|
hooks = []
|
54
|
+
|
37
55
|
allow_all = enables.include?('all')
|
38
56
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
hook = Rundock::HookFactory.instance(v['hook_type']).create(k, v.deep_symbolize_keys)
|
45
|
-
hooks << hook
|
46
|
-
end
|
47
|
-
end
|
57
|
+
attributes.each do |k, v|
|
58
|
+
raise HookStructureError unless v.is_a?(Hash)
|
59
|
+
next if !allow_all && !enables.include?(k.to_s)
|
60
|
+
@enable_hooks[k] = v
|
61
|
+
hooks << Rundock::HookFactory.instance(v[:hook_type]).create(k.to_s, v)
|
48
62
|
end
|
49
63
|
|
50
64
|
Logger.warn('Empty hook is detected. Please verity hooks file and scenario file.') if hooks.empty?
|
65
|
+
|
51
66
|
hooks
|
52
67
|
end
|
53
68
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Rundock
|
2
2
|
module Builder
|
3
3
|
class OperationBuilder < Base
|
4
|
-
def build_first(scenario, node_info, tasks)
|
4
|
+
def build_first(scenario, node_info, tasks, hooks)
|
5
5
|
if @options[:hostgroup] && !@options[:command]
|
6
6
|
raise CommandArgNotFoundError, %("--command or -c" option is required if hostgroup specified.)
|
7
7
|
end
|
@@ -32,8 +32,11 @@ module Rundock
|
|
32
32
|
node.add_operation(build_cli_command_operation(@options[:command], node_attribute, @options))
|
33
33
|
end
|
34
34
|
elsif k == :hook
|
35
|
-
|
36
|
-
|
35
|
+
hooks_builder = HookBuilder.new(@options)
|
36
|
+
if node
|
37
|
+
node.hooks = hooks_builder.build(Array(v), hooks)
|
38
|
+
node_attribute.hooks = hooks_builder.enable_hooks
|
39
|
+
end
|
37
40
|
else
|
38
41
|
|
39
42
|
next unless node
|
@@ -50,7 +53,6 @@ module Rundock
|
|
50
53
|
|
51
54
|
def build_task(tasks, backend, node_attribute)
|
52
55
|
node = Node.new(node_attribute.nodename, backend)
|
53
|
-
node.hooks = HookBuilder.new(nil).build_from_attributes(node_attribute.nodeinfo)
|
54
56
|
scen = Scenario.new
|
55
57
|
|
56
58
|
tasks.each do |k, v|
|
@@ -68,7 +70,7 @@ module Rundock
|
|
68
70
|
@options[:host].split(',').each do |host|
|
69
71
|
backend = BackendBuilder.new(@options, host, nil).build
|
70
72
|
node = Node.new(host, backend)
|
71
|
-
node.hooks = HookBuilder.new(@options).build(['all'])
|
73
|
+
node.hooks = HookBuilder.new(@options).build(['all'], nil)
|
72
74
|
node.add_operation(
|
73
75
|
build_cli_command_operation(@options[:command], Rundock::Attribute::NodeAttribute.new, @options))
|
74
76
|
scen.nodes.push(node)
|
@@ -37,7 +37,7 @@ module Rundock
|
|
37
37
|
def build_scenario_with_file
|
38
38
|
if @scenario_file
|
39
39
|
|
40
|
-
type = [:main, :node_info, :tasks]
|
40
|
+
type = [:main, :node_info, :tasks, :hooks]
|
41
41
|
scenario_data = {}
|
42
42
|
|
43
43
|
YAML.load_documents(@scenario_file).each_with_index do |data, idx|
|
@@ -51,7 +51,10 @@ module Rundock
|
|
51
51
|
|
52
52
|
ope = OperationBuilder.new(@options)
|
53
53
|
ope.build_first(
|
54
|
-
scenario_data[:main],
|
54
|
+
scenario_data[:main],
|
55
|
+
scenario_data[:node_info],
|
56
|
+
scenario_data[:tasks],
|
57
|
+
scenario_data[:hooks])
|
55
58
|
end
|
56
59
|
end
|
57
60
|
end
|
data/lib/rundock/logger.rb
CHANGED
@@ -33,18 +33,19 @@ module Rundock
|
|
33
33
|
attr_accessor :show_header
|
34
34
|
attr_accessor :short_header
|
35
35
|
attr_accessor :date_header
|
36
|
-
attr_accessor :onrec
|
37
36
|
attr_accessor :buffer
|
38
37
|
|
39
38
|
def initialize(*args)
|
40
39
|
super
|
41
40
|
@indent_depth = 0
|
42
41
|
@buffer = []
|
42
|
+
@rec = false
|
43
|
+
@lock = false
|
43
44
|
end
|
44
45
|
|
45
46
|
def call(severity, datetime, progname, msg)
|
46
47
|
out = formatted_message(severity, datetime, progname, msg)
|
47
|
-
@buffer << LogEntity.new(severity, datetime, progname, msg, indent_depth, self)
|
48
|
+
@buffer << LogEntity.new(severity, datetime, progname, msg, indent_depth, self) if @rec
|
48
49
|
|
49
50
|
if colored
|
50
51
|
colorize(out, severity)
|
@@ -77,11 +78,28 @@ module Rundock
|
|
77
78
|
end
|
78
79
|
|
79
80
|
def flush
|
81
|
+
return nil if @lock
|
80
82
|
ret = @buffer.dup
|
81
83
|
@buffer.clear
|
82
84
|
ret
|
83
85
|
end
|
84
86
|
|
87
|
+
def on_rec
|
88
|
+
@rec = true unless @lock
|
89
|
+
end
|
90
|
+
|
91
|
+
def off_rec
|
92
|
+
@rec = false unless @lock
|
93
|
+
end
|
94
|
+
|
95
|
+
def rec_lock
|
96
|
+
@lock = true
|
97
|
+
end
|
98
|
+
|
99
|
+
def rec_unlock
|
100
|
+
@lock = false
|
101
|
+
end
|
102
|
+
|
85
103
|
def formatted_message(severity, datetime, progname, msg)
|
86
104
|
if !@show_header
|
87
105
|
out = "%s\n" % [msg2str(msg)]
|
data/lib/rundock/node.rb
CHANGED
@@ -20,7 +20,7 @@ module Rundock
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def run
|
23
|
-
Logger.formatter.
|
23
|
+
Logger.formatter.on_rec
|
24
24
|
Logger.debug("run node: #{@name}")
|
25
25
|
Logger.warn("no operation running: #{@name}") if @operations.blank?
|
26
26
|
|
@@ -39,7 +39,7 @@ module Rundock
|
|
39
39
|
h.hook(node_attributes, log_buffer)
|
40
40
|
end
|
41
41
|
|
42
|
-
Logger.formatter.
|
42
|
+
Logger.formatter.off_rec
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -12,7 +12,11 @@ module Rundock
|
|
12
12
|
attributes[:task_info][i.to_sym], backend, Rundock::Attribute::NodeAttribute.new(attributes))
|
13
13
|
|
14
14
|
Logger.info("start task: #{i}")
|
15
|
+
|
16
|
+
Logger.formatter.rec_lock
|
17
|
+
|
15
18
|
scenario.run
|
19
|
+
Logger.formatter.rec_unlock
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
data/lib/rundock/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
- node: localhost
|
2
|
+
command:
|
3
|
+
- "rm -f /var/tmp/hello_rundock_from_file_hook_innner_one_scenario"
|
4
|
+
hook: file_hook_one
|
5
|
+
- node: anyhost-01
|
6
|
+
task:
|
7
|
+
- remove_task
|
8
|
+
hook:
|
9
|
+
- file_hook_two
|
10
|
+
---
|
11
|
+
anyhost-01:
|
12
|
+
host: localhost
|
13
|
+
---
|
14
|
+
remove_task:
|
15
|
+
command:
|
16
|
+
- "rm -f /var/tmp/hello_rundock_from_file_hook_inner_two_scenario"
|
17
|
+
---
|
18
|
+
file_hook_one:
|
19
|
+
hook_type: file
|
20
|
+
filepath: /var/tmp/hello_rundock_from_file_hook_inner_one_scenario
|
21
|
+
file_hook_two:
|
22
|
+
hook_type: file
|
23
|
+
filepath: /var/tmp/hello_rundock_from_file_hook_inner_two_scenario
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_one_scenario') do
|
4
|
+
it { should be_file }
|
5
|
+
its(:content) { should match(/hookname:file_one /) }
|
6
|
+
its(:content) { should match(/DEBUG/) }
|
7
|
+
end
|
8
|
+
|
9
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_array_1_scenario') do
|
10
|
+
it { should be_file }
|
11
|
+
its(:content) { should match(/anyhost-01/) }
|
12
|
+
its(:content) { should match(/hookname:file_array_1 /) }
|
13
|
+
its(:content) { should match(/DEBUG/) }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_array_2_scenario') do
|
17
|
+
it { should be_file }
|
18
|
+
its(:content) { should match(/anyhost-01/) }
|
19
|
+
its(:content) { should match(/hookname:file_array_2 /) }
|
20
|
+
its(:content) { should match(/DEBUG/) }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_all_1_scenario') do
|
24
|
+
it { should be_file }
|
25
|
+
its(:content) { should match(/hookname:file_all_1 /) }
|
26
|
+
its(:content) { should match(/DEBUG/) }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_all_2_scenario') do
|
30
|
+
it { should be_file }
|
31
|
+
its(:content) { should match(/hookname:file_all_2 /) }
|
32
|
+
its(:content) { should match(/DEBUG/) }
|
33
|
+
end
|
@@ -1,28 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe file('/var/tmp/
|
3
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_inner_one_scenario') do
|
4
4
|
it { should be_file }
|
5
|
-
its(:content) { should match(/hookname:
|
5
|
+
its(:content) { should match(/hookname:file_hook_one /) }
|
6
|
+
its(:content) { should match(/DEBUG/) }
|
6
7
|
end
|
7
8
|
|
8
|
-
describe file('/var/tmp/
|
9
|
+
describe file('/var/tmp/hello_rundock_from_file_hook_inner_two_scenario') do
|
9
10
|
it { should be_file }
|
10
|
-
its(:content) { should match(/
|
11
|
-
its(:content) { should match(/
|
12
|
-
end
|
13
|
-
|
14
|
-
describe file('/var/tmp/hello_rundock_from_file_hook_array_2_scenario') do
|
15
|
-
it { should be_file }
|
16
|
-
its(:content) { should match(/anyhost-01/) }
|
17
|
-
its(:content) { should match(/hookname:file_array_2 /) }
|
18
|
-
end
|
19
|
-
|
20
|
-
describe file('/var/tmp/hello_rundock_from_file_hook_all_1_scenario') do
|
21
|
-
it { should be_file }
|
22
|
-
its(:content) { should match(/hookname:file_all_1 /) }
|
23
|
-
end
|
24
|
-
|
25
|
-
describe file('/var/tmp/hello_rundock_from_file_hook_all_2_scenario') do
|
26
|
-
it { should be_file }
|
27
|
-
its(:content) { should match(/hookname:file_all_2 /) }
|
11
|
+
its(:content) { should match(/hookname:file_hook_two /) }
|
12
|
+
its(:content) { should match(/DEBUG/) }
|
28
13
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
- node: anyhost-01
|
2
2
|
command:
|
3
3
|
- "echo 'hookname:file_all_1 ' > /var/tmp/hello_rundock_from_file_hook_all_1_scenario"
|
4
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_all_1_scenario"
|
4
5
|
- "echo 'hookname:file_all_2 ' > /var/tmp/hello_rundock_from_file_hook_all_2_scenario"
|
6
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_all_2_scenario"
|
5
7
|
hook: all
|
6
8
|
---
|
7
9
|
anyhost-01:
|
data/spec/integration/scenarios/{simple_file_hooks_scenario.yml → file_hooks_by_option_scenario.yml}
RENAMED
@@ -1,10 +1,13 @@
|
|
1
1
|
- node: anyhost-01
|
2
2
|
command:
|
3
3
|
- "echo 'hookname:file_one ' > /var/tmp/hello_rundock_from_file_hook_one_scenario"
|
4
|
+
- "echo '[DEBUG:] dumy log' >> /var/tmp/hello_rundock_from_file_hook_one_scenario"
|
4
5
|
- "echo 'anyhost-01' > /var/tmp/hello_rundock_from_file_hook_array_1_scenario"
|
5
6
|
- "echo 'anyhost-01' > /var/tmp/hello_rundock_from_file_hook_array_2_scenario"
|
6
7
|
- "echo 'hookname:file_array_1 ' >> /var/tmp/hello_rundock_from_file_hook_array_1_scenario"
|
7
8
|
- "echo 'hookname:file_array_2 ' >> /var/tmp/hello_rundock_from_file_hook_array_2_scenario"
|
9
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_array_1_scenario"
|
10
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_array_2_scenario"
|
8
11
|
hook:
|
9
12
|
- file_one
|
10
13
|
- file_array_1
|
@@ -0,0 +1,24 @@
|
|
1
|
+
- node: anyhost-01
|
2
|
+
command:
|
3
|
+
- "echo 'hookname:file_hook_one ' > /var/tmp/hello_rundock_from_file_hook_inner_one_scenario"
|
4
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_inner_one_scenario"
|
5
|
+
- "echo 'hookname:file_hook_two ' > /var/tmp/hello_rundock_from_file_hook_inner_two_scenario"
|
6
|
+
- "echo '[DEBUG:] dummy log' >> /var/tmp/hello_rundock_from_file_hook_inner_two_scenario"
|
7
|
+
hook:
|
8
|
+
- file_hook_one
|
9
|
+
- file_hook_two
|
10
|
+
---
|
11
|
+
anyhost-01:
|
12
|
+
host: 172.17.42.1
|
13
|
+
ssh_opts:
|
14
|
+
port: 22222
|
15
|
+
user: tester
|
16
|
+
key: "<replaced_by_platforms>"
|
17
|
+
---
|
18
|
+
---
|
19
|
+
file_hook_one:
|
20
|
+
hook_type: file
|
21
|
+
filepath: /var/tmp/hello_rundock_from_file_hook_inner_one_scenario
|
22
|
+
file_hook_two:
|
23
|
+
hook_type: file
|
24
|
+
filepath: /var/tmp/hello_rundock_from_file_hook_inner_two_scenario
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rundock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hiracy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -182,26 +182,29 @@ files:
|
|
182
182
|
- rundock.gemspec
|
183
183
|
- scenario_sample.yml
|
184
184
|
- spec/integration/groups/simple_host_group.yml
|
185
|
-
- spec/integration/hooks/
|
186
|
-
- spec/integration/hooks/
|
185
|
+
- spec/integration/hooks/all_file_hooks_by_option.yml
|
186
|
+
- spec/integration/hooks/file_hooks_by_option.yml
|
187
187
|
- spec/integration/platforms/centos6/Dockerfile
|
188
188
|
- spec/integration/platforms/centos6/setup.sh
|
189
|
-
- spec/integration/platforms/localhost/scenarios/
|
189
|
+
- spec/integration/platforms/localhost/scenarios/all_file_hooks_by_option_scenario.yml
|
190
190
|
- spec/integration/platforms/localhost/scenarios/deploy_scenario.yml
|
191
|
+
- spec/integration/platforms/localhost/scenarios/file_hooks_by_option_scenario.yml
|
192
|
+
- spec/integration/platforms/localhost/scenarios/file_hooks_scenario.yml
|
191
193
|
- spec/integration/platforms/localhost/scenarios/run_anyway_scenario.yml
|
192
194
|
- spec/integration/platforms/localhost/scenarios/simple_echo_scenario.yml
|
193
|
-
- spec/integration/platforms/localhost/scenarios/simple_file_hooks_scenario.yml
|
194
195
|
- spec/integration/platforms/localhost/scenarios/simple_plugin_scenario.yml
|
195
196
|
- spec/integration/platforms/localhost/scenarios/use_default_ssh_scenario.yml
|
196
197
|
- spec/integration/recipes/deploy_spec.rb
|
198
|
+
- spec/integration/recipes/file_hook_by_option_spec.rb
|
197
199
|
- spec/integration/recipes/file_hook_spec.rb
|
198
200
|
- spec/integration/recipes/simple_echo_scenario_spec.rb
|
199
201
|
- spec/integration/recipes/simple_echo_spec.rb
|
200
202
|
- spec/integration/recipes/simple_plugin_scenario_spec.rb
|
201
|
-
- spec/integration/scenarios/
|
203
|
+
- spec/integration/scenarios/all_file_hooks_by_option_scenario.yml
|
202
204
|
- spec/integration/scenarios/deploy_scenario.yml
|
205
|
+
- spec/integration/scenarios/file_hooks_by_option_scenario.yml
|
206
|
+
- spec/integration/scenarios/file_hooks_scenario.yml
|
203
207
|
- spec/integration/scenarios/simple_echo_scenario.yml
|
204
|
-
- spec/integration/scenarios/simple_file_hooks_scenario.yml
|
205
208
|
- spec/integration/scenarios/simple_plugin_scenario.yml
|
206
209
|
- spec/integration/scenarios/use_default_ssh_scenario.yml
|
207
210
|
- spec/integration/spec_helper.rb
|