bosh-stemcell 1.5.0.pre.1209 → 1.5.0.pre.1210
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/Berksfile +3 -0
- data/Berksfile.lock +28 -0
- data/Vagrantfile +13 -0
- data/lib/bosh/stemcell/builder_command.rb +6 -3
- data/lib/bosh/stemcell/builder_options.rb +1 -0
- data/lib/bosh/stemcell/stage_collection.rb +27 -14
- data/lib/bosh/stemcell/version.rb +1 -1
- data/spec/bosh/stemcell/builder_command_spec.rb +40 -9
- data/spec/bosh/stemcell/builder_options_spec.rb +1 -0
- data/spec/bosh/stemcell/stage_collection_spec.rb +243 -177
- data/spec/stemcells/go_agent_spec.rb +10 -0
- data/spec/stemcells/ruby_agent_spec.rb +27 -0
- data/spec/support/stemcell_shared_examples.rb +0 -24
- metadata +9 -3
data/Berksfile
ADDED
data/Berksfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"sources": {
|
3
|
+
"golang": {
|
4
|
+
"locked_version": "1.1.2"
|
5
|
+
},
|
6
|
+
"git": {
|
7
|
+
"locked_version": "2.7.0"
|
8
|
+
},
|
9
|
+
"dmg": {
|
10
|
+
"locked_version": "2.0.4"
|
11
|
+
},
|
12
|
+
"build-essential": {
|
13
|
+
"locked_version": "1.4.2"
|
14
|
+
},
|
15
|
+
"yum": {
|
16
|
+
"locked_version": "2.4.0"
|
17
|
+
},
|
18
|
+
"windows": {
|
19
|
+
"locked_version": "1.11.0"
|
20
|
+
},
|
21
|
+
"chef_handler": {
|
22
|
+
"locked_version": "1.1.4"
|
23
|
+
},
|
24
|
+
"runit": {
|
25
|
+
"locked_version": "1.3.0"
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
data/Vagrantfile
CHANGED
@@ -33,5 +33,18 @@ Vagrant.configure('2') do |config|
|
|
33
33
|
BASH
|
34
34
|
end
|
35
35
|
|
36
|
+
config.omnibus.chef_version = :latest
|
37
|
+
config.berkshelf.enabled = true
|
38
|
+
|
39
|
+
config.vm.provision :chef_solo do |chef|
|
40
|
+
chef.run_list = %w(recipe[golang])
|
41
|
+
|
42
|
+
chef.json = {
|
43
|
+
go: {
|
44
|
+
version: '1.1.2',
|
45
|
+
}
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
36
49
|
config.vm.synced_folder '../', '/bosh'
|
37
50
|
end
|
@@ -14,6 +14,7 @@ module Bosh::Stemcell
|
|
14
14
|
@environment = env
|
15
15
|
@infrastructure = Infrastructure.for(options.fetch(:infrastructure_name))
|
16
16
|
@operating_system = OperatingSystem.for(options.fetch(:operating_system_name))
|
17
|
+
@agent_name = options.fetch(:agent_name) || 'ruby'
|
17
18
|
|
18
19
|
@stemcell_builder_options = BuilderOptions.new(
|
19
20
|
env,
|
@@ -40,7 +41,8 @@ module Bosh::Stemcell
|
|
40
41
|
|
41
42
|
stage_collection = StageCollection.new(
|
42
43
|
infrastructure: infrastructure,
|
43
|
-
operating_system: operating_system
|
44
|
+
operating_system: operating_system,
|
45
|
+
agent_name: agent_name,
|
44
46
|
)
|
45
47
|
stage_runner = StageRunner.new(
|
46
48
|
build_path: build_path,
|
@@ -48,8 +50,7 @@ module Bosh::Stemcell
|
|
48
50
|
settings_file: settings_path,
|
49
51
|
work_path: work_root
|
50
52
|
)
|
51
|
-
stage_runner.configure_and_apply(stage_collection.
|
52
|
-
stage_runner.configure_and_apply(stage_collection.infrastructure_stages)
|
53
|
+
stage_runner.configure_and_apply(stage_collection.all_stages)
|
53
54
|
system(rspec_command) || raise('Stemcell specs failed')
|
54
55
|
|
55
56
|
stemcell_file
|
@@ -66,6 +67,7 @@ module Bosh::Stemcell
|
|
66
67
|
:environment,
|
67
68
|
:infrastructure,
|
68
69
|
:operating_system,
|
70
|
+
:agent_name,
|
69
71
|
:stemcell_builder_options
|
70
72
|
)
|
71
73
|
|
@@ -75,6 +77,7 @@ module Bosh::Stemcell
|
|
75
77
|
"STEMCELL_IMAGE=#{image_file_path}",
|
76
78
|
'bundle exec rspec -fd',
|
77
79
|
"spec/stemcells/#{operating_system.name}_spec.rb",
|
80
|
+
"spec/stemcells/#{agent_name}_agent_spec.rb",
|
78
81
|
"spec/stemcells/#{infrastructure.name}_spec.rb",
|
79
82
|
].join(' ')
|
80
83
|
end
|
@@ -27,6 +27,7 @@ module Bosh::Stemcell
|
|
27
27
|
'ruby_bin' => ruby_bin,
|
28
28
|
'bosh_release_src_dir' => File.join(source_root, 'release/src/bosh'),
|
29
29
|
'bosh_agent_src_dir' => File.join(source_root, 'bosh_agent'),
|
30
|
+
'go_agent_src_dir' => File.join(source_root, 'go_agent'),
|
30
31
|
'image_create_disk_size' => image_create_disk_size
|
31
32
|
}.merge(bosh_micro_options).merge(environment_variables).merge(vsphere_options)
|
32
33
|
end
|
@@ -5,8 +5,33 @@ module Bosh::Stemcell
|
|
5
5
|
class StageCollection
|
6
6
|
|
7
7
|
def initialize(options)
|
8
|
-
@infrastructure
|
8
|
+
@infrastructure = options.fetch(:infrastructure)
|
9
9
|
@operating_system = options.fetch(:operating_system)
|
10
|
+
@agent_name = options.fetch(:agent_name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def all_stages
|
14
|
+
operating_system_stages + agent_stages + infrastructure_stages
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader :infrastructure, :operating_system, :agent_name
|
20
|
+
|
21
|
+
def agent_stages
|
22
|
+
case agent_name
|
23
|
+
when 'go'
|
24
|
+
[
|
25
|
+
:bosh_go_agent,
|
26
|
+
#:bosh_micro,
|
27
|
+
]
|
28
|
+
else
|
29
|
+
[
|
30
|
+
:bosh_ruby,
|
31
|
+
:bosh_agent,
|
32
|
+
:bosh_micro,
|
33
|
+
]
|
34
|
+
end
|
10
35
|
end
|
11
36
|
|
12
37
|
def operating_system_stages
|
@@ -29,26 +54,18 @@ module Bosh::Stemcell
|
|
29
54
|
end
|
30
55
|
end
|
31
56
|
|
32
|
-
private
|
33
|
-
|
34
|
-
attr_reader :infrastructure, :operating_system
|
35
|
-
|
36
57
|
def hacked_centos_common
|
37
58
|
[
|
38
59
|
# Bosh steps
|
39
60
|
:bosh_users,
|
40
61
|
:bosh_monit,
|
41
|
-
:bosh_ruby,
|
42
|
-
:bosh_agent,
|
43
62
|
#:bosh_sysstat,
|
44
63
|
#:bosh_sysctl,
|
45
64
|
:bosh_ntpdate,
|
46
65
|
:bosh_sudoers,
|
47
|
-
# Micro BOSH
|
48
|
-
:bosh_micro,
|
49
66
|
# Install GRUB/kernel/etc
|
50
67
|
:system_grub,
|
51
|
-
|
68
|
+
#:system_kernel,
|
52
69
|
]
|
53
70
|
end
|
54
71
|
|
@@ -73,14 +90,10 @@ module Bosh::Stemcell
|
|
73
90
|
# Bosh steps
|
74
91
|
:bosh_users,
|
75
92
|
:bosh_monit,
|
76
|
-
:bosh_ruby,
|
77
|
-
:bosh_agent,
|
78
93
|
:bosh_sysstat,
|
79
94
|
:bosh_sysctl,
|
80
95
|
:bosh_ntpdate,
|
81
96
|
:bosh_sudoers,
|
82
|
-
# Micro BOSH
|
83
|
-
:bosh_micro,
|
84
97
|
# Install GRUB/kernel/etc
|
85
98
|
:system_grub,
|
86
99
|
:system_kernel,
|
@@ -8,6 +8,7 @@ module Bosh::Stemcell
|
|
8
8
|
env,
|
9
9
|
infrastructure_name: infrastructure.name,
|
10
10
|
operating_system_name: operating_system.name,
|
11
|
+
agent_name: agent_name,
|
11
12
|
release_tarball_path: release_tarball_path,
|
12
13
|
version: version
|
13
14
|
)
|
@@ -15,6 +16,9 @@ module Bosh::Stemcell
|
|
15
16
|
|
16
17
|
let(:env) { {} }
|
17
18
|
|
19
|
+
let(:agent_name) { 'ruby' }
|
20
|
+
let(:expected_agent_name) { 'ruby' }
|
21
|
+
|
18
22
|
let(:infrastructure) do
|
19
23
|
instance_double(
|
20
24
|
'Bosh::Stemcell::Infrastructure::Vsphere',
|
@@ -32,7 +36,8 @@ module Bosh::Stemcell
|
|
32
36
|
OperatingSystem.stub(:for).with(operating_system.name).and_return(operating_system)
|
33
37
|
StageCollection.stub(:new).with(
|
34
38
|
infrastructure: infrastructure,
|
35
|
-
operating_system: operating_system
|
39
|
+
operating_system: operating_system,
|
40
|
+
agent_name: agent_name,
|
36
41
|
).and_return(stage_collection)
|
37
42
|
|
38
43
|
StageRunner.stub(:new).with(
|
@@ -62,8 +67,7 @@ module Bosh::Stemcell
|
|
62
67
|
let(:stage_collection) do
|
63
68
|
instance_double(
|
64
69
|
'Bosh::Stemcell::StageCollection',
|
65
|
-
|
66
|
-
infrastructure_stages: ['FAKE_INFRASTRUCTURE_STAGES']
|
70
|
+
all_stages: %w(FAKE_OS_STAGES FAKE_INFRASTRUCTURE_STAGES)
|
67
71
|
)
|
68
72
|
end
|
69
73
|
|
@@ -97,6 +101,36 @@ module Bosh::Stemcell
|
|
97
101
|
end
|
98
102
|
end
|
99
103
|
|
104
|
+
context 'when agent_name is nil' do
|
105
|
+
let(:agent_name) { nil }
|
106
|
+
let(:expected_agent_name) { 'ruby' }
|
107
|
+
|
108
|
+
it 'uses the correct agent name for the stage collection' do
|
109
|
+
StageCollection.should_receive(:new).with(
|
110
|
+
infrastructure: infrastructure,
|
111
|
+
operating_system: operating_system,
|
112
|
+
agent_name: expected_agent_name,
|
113
|
+
).and_return(stage_collection)
|
114
|
+
|
115
|
+
stemcell_builder_command.build
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context 'when agent_name is foo' do
|
120
|
+
let(:agent_name) { 'foo' }
|
121
|
+
let(:expected_agent_name) { 'foo' }
|
122
|
+
|
123
|
+
it 'uses the correct agent name for the stage collection' do
|
124
|
+
StageCollection.should_receive(:new).with(
|
125
|
+
infrastructure: infrastructure,
|
126
|
+
operating_system: operating_system,
|
127
|
+
agent_name: expected_agent_name,
|
128
|
+
).and_return(stage_collection)
|
129
|
+
|
130
|
+
stemcell_builder_command.build
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
100
134
|
describe 'sanitizing the environment' do
|
101
135
|
it 'removes any tgz files from current working directory' do
|
102
136
|
expect {
|
@@ -170,15 +204,14 @@ module Bosh::Stemcell
|
|
170
204
|
"STEMCELL_IMAGE=#{File.join(root_dir, 'work', 'work', 'fake-root-disk-image.raw')}",
|
171
205
|
'bundle exec rspec -fd',
|
172
206
|
"spec/stemcells/#{operating_system.name}_spec.rb",
|
207
|
+
"spec/stemcells/#{agent_name}_agent_spec.rb",
|
173
208
|
"spec/stemcells/#{infrastructure.name}_spec.rb",
|
174
209
|
].join(' ')
|
175
210
|
end
|
176
211
|
|
177
212
|
it 'calls #configure_and_apply' do
|
178
213
|
stage_runner.should_receive(:configure_and_apply).
|
179
|
-
with(
|
180
|
-
stage_runner.should_receive(:configure_and_apply).
|
181
|
-
with(['FAKE_INFRASTRUCTURE_STAGES']).ordered
|
214
|
+
with(%w(FAKE_OS_STAGES FAKE_INFRASTRUCTURE_STAGES)).ordered
|
182
215
|
stemcell_builder_command.should_receive(:system).
|
183
216
|
with(expected_rspec_command).ordered
|
184
217
|
|
@@ -190,9 +223,7 @@ module Bosh::Stemcell
|
|
190
223
|
|
191
224
|
it 'calls #configure_and_apply' do
|
192
225
|
stage_runner.should_receive(:configure_and_apply).
|
193
|
-
with(
|
194
|
-
stage_runner.should_receive(:configure_and_apply).
|
195
|
-
with(['FAKE_INFRASTRUCTURE_STAGES']).ordered
|
226
|
+
with(%w(FAKE_OS_STAGES FAKE_INFRASTRUCTURE_STAGES)).ordered
|
196
227
|
stemcell_builder_command.should_receive(:system).
|
197
228
|
with(expected_rspec_command).ordered
|
198
229
|
|
@@ -108,6 +108,7 @@ module Bosh::Stemcell
|
|
108
108
|
expect(result['ruby_bin']).to eq('fake_ruby_bin')
|
109
109
|
expect(result['bosh_release_src_dir']).to eq(File.join(expected_source_root, '/release/src/bosh'))
|
110
110
|
expect(result['bosh_agent_src_dir']).to eq(File.join(expected_source_root, 'bosh_agent'))
|
111
|
+
expect(result['go_agent_src_dir']).to eq(File.join(expected_source_root, 'go_agent'))
|
111
112
|
expect(result['image_create_disk_size']).to eq(default_disk_size)
|
112
113
|
expect(result['bosh_micro_enabled']).to eq('yes')
|
113
114
|
expect(result['bosh_micro_package_compiler_path']).to eq(
|
@@ -5,206 +5,272 @@ module Bosh::Stemcell
|
|
5
5
|
describe StageCollection do
|
6
6
|
subject(:stage_collection) do
|
7
7
|
StageCollection.new(
|
8
|
-
infrastructure:
|
9
|
-
operating_system: operating_system
|
8
|
+
infrastructure: infrastructure,
|
9
|
+
operating_system: operating_system,
|
10
|
+
agent_name: agent_name,
|
10
11
|
)
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
14
|
+
let(:ubuntu_stages) {
|
15
|
+
[
|
16
|
+
:base_debootstrap,
|
17
|
+
:base_apt,
|
18
|
+
:bosh_users,
|
19
|
+
:bosh_monit,
|
20
|
+
:bosh_sysstat,
|
21
|
+
:bosh_sysctl,
|
22
|
+
:bosh_ntpdate,
|
23
|
+
:bosh_sudoers,
|
24
|
+
:system_grub,
|
25
|
+
:system_kernel,
|
26
|
+
]
|
27
|
+
}
|
28
|
+
|
29
|
+
let(:centos_stages) {
|
30
|
+
[
|
31
|
+
:base_centos,
|
32
|
+
:base_yum,
|
33
|
+
:bosh_users,
|
34
|
+
:bosh_monit,
|
35
|
+
#:bosh_sysstat,
|
36
|
+
#:bosh_sysctl,
|
37
|
+
:bosh_ntpdate,
|
38
|
+
:bosh_sudoers,
|
39
|
+
:system_grub,
|
40
|
+
#:system_kernel,
|
41
|
+
]
|
42
|
+
}
|
43
|
+
|
44
|
+
let(:aws_infrastructure_stages) {
|
45
|
+
[
|
46
|
+
:system_aws_network,
|
47
|
+
:system_aws_clock,
|
48
|
+
:system_aws_modules,
|
49
|
+
:system_parameters,
|
50
|
+
:bosh_clean,
|
51
|
+
:bosh_harden,
|
52
|
+
:bosh_harden_ssh,
|
53
|
+
:bosh_dpkg_list,
|
54
|
+
:image_create,
|
55
|
+
:image_install_grub,
|
56
|
+
:image_aws_update_grub,
|
57
|
+
:image_aws_prepare_stemcell,
|
58
|
+
:stemcell
|
59
|
+
]
|
60
|
+
}
|
61
|
+
|
62
|
+
let(:openstack_infrastructure_stages) {
|
63
|
+
[
|
64
|
+
:system_openstack_network,
|
65
|
+
:system_openstack_clock,
|
66
|
+
:system_openstack_modules,
|
67
|
+
:system_parameters,
|
68
|
+
:bosh_clean,
|
69
|
+
:bosh_harden,
|
70
|
+
:bosh_harden_ssh,
|
71
|
+
:bosh_dpkg_list,
|
72
|
+
:image_create,
|
73
|
+
:image_install_grub,
|
74
|
+
:image_openstack_qcow2,
|
75
|
+
:image_openstack_prepare_stemcell,
|
76
|
+
:stemcell_openstack
|
77
|
+
]
|
78
|
+
}
|
79
|
+
|
80
|
+
let(:vsphere_infrastructure_stages) {
|
81
|
+
[
|
82
|
+
:system_open_vm_tools,
|
83
|
+
:system_parameters,
|
84
|
+
:bosh_clean,
|
85
|
+
:bosh_harden,
|
86
|
+
:bosh_dpkg_list,
|
87
|
+
:image_create,
|
88
|
+
:image_install_grub,
|
89
|
+
:image_vsphere_vmx,
|
90
|
+
:image_vsphere_ovf,
|
91
|
+
:image_vsphere_prepare_stemcell,
|
92
|
+
:stemcell
|
93
|
+
]
|
94
|
+
}
|
95
|
+
|
96
|
+
let(:vsphere_centos_infrastructure_stages) {
|
97
|
+
[
|
98
|
+
#:system_open_vm_tools,
|
99
|
+
:system_parameters,
|
100
|
+
:bosh_clean,
|
101
|
+
:bosh_harden,
|
102
|
+
#:bosh_dpkg_list,
|
103
|
+
:image_create,
|
104
|
+
:image_install_grub,
|
105
|
+
:image_vsphere_vmx,
|
106
|
+
:image_vsphere_ovf,
|
107
|
+
:image_vsphere_prepare_stemcell,
|
108
|
+
:stemcell
|
109
|
+
]
|
110
|
+
}
|
111
|
+
|
112
|
+
describe '#all_stages' do
|
113
|
+
context 'when using the ruby agent' do
|
114
|
+
let(:agent_name) { 'ruby' }
|
115
|
+
let(:agent_stages) {
|
116
|
+
[
|
117
|
+
:bosh_ruby,
|
118
|
+
:bosh_agent,
|
119
|
+
:bosh_micro,
|
120
|
+
]
|
121
|
+
}
|
122
|
+
|
123
|
+
context 'when infrastructure is AWS' do
|
124
|
+
let(:infrastructure) { Infrastructure.for('aws') }
|
125
|
+
|
126
|
+
context 'when operating system is Ubuntu' do
|
127
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
128
|
+
|
129
|
+
it 'has the correct stages' do
|
130
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
131
|
+
agent_stages +
|
132
|
+
aws_infrastructure_stages)
|
133
|
+
end
|
36
134
|
end
|
37
|
-
end
|
38
|
-
end
|
39
135
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
:base_debootstrap,
|
49
|
-
:base_apt,
|
50
|
-
:bosh_users,
|
51
|
-
:bosh_monit,
|
52
|
-
:bosh_ruby,
|
53
|
-
:bosh_agent,
|
54
|
-
:bosh_sysstat,
|
55
|
-
:bosh_sysctl,
|
56
|
-
:bosh_ntpdate,
|
57
|
-
:bosh_sudoers,
|
58
|
-
:bosh_micro,
|
59
|
-
:system_grub,
|
60
|
-
:system_kernel,
|
61
|
-
])
|
136
|
+
context 'when operating system is Centos' do
|
137
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
138
|
+
|
139
|
+
it 'has the correct stages' do
|
140
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
141
|
+
agent_stages +
|
142
|
+
aws_infrastructure_stages)
|
143
|
+
end
|
62
144
|
end
|
63
145
|
end
|
64
|
-
end
|
65
146
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
:bosh_monit,
|
78
|
-
:bosh_ruby,
|
79
|
-
:bosh_agent,
|
80
|
-
#:bosh_sysstat,
|
81
|
-
#:bosh_sysctl,
|
82
|
-
:bosh_ntpdate,
|
83
|
-
:bosh_sudoers,
|
84
|
-
:bosh_micro,
|
85
|
-
:system_grub,
|
86
|
-
#:system_kernel,
|
87
|
-
])
|
147
|
+
context 'when infrastructure is OpenStack' do
|
148
|
+
let(:infrastructure) { Infrastructure.for('openstack') }
|
149
|
+
|
150
|
+
context 'when operating system is Ubuntu' do
|
151
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
152
|
+
|
153
|
+
it 'has the correct stages' do
|
154
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
155
|
+
agent_stages +
|
156
|
+
openstack_infrastructure_stages)
|
157
|
+
end
|
88
158
|
end
|
89
|
-
end
|
90
159
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
:bosh_monit,
|
100
|
-
:bosh_ruby,
|
101
|
-
:bosh_agent,
|
102
|
-
:bosh_sysstat,
|
103
|
-
:bosh_sysctl,
|
104
|
-
:bosh_ntpdate,
|
105
|
-
:bosh_sudoers,
|
106
|
-
:bosh_micro,
|
107
|
-
:system_grub,
|
108
|
-
:system_kernel,
|
109
|
-
])
|
160
|
+
context 'when operating system is CentOS' do
|
161
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
162
|
+
|
163
|
+
it 'has the correct stages' do
|
164
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
165
|
+
agent_stages +
|
166
|
+
openstack_infrastructure_stages)
|
167
|
+
end
|
110
168
|
end
|
111
169
|
end
|
112
|
-
end
|
113
|
-
end
|
114
170
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
:stemcell
|
137
|
-
])
|
171
|
+
context 'when infrastructure is vSphere' do
|
172
|
+
let(:infrastructure) { Infrastructure.for('vsphere') }
|
173
|
+
|
174
|
+
context 'when operating system is Ubuntu' do
|
175
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
176
|
+
|
177
|
+
it 'has the correct stages' do
|
178
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
179
|
+
agent_stages +
|
180
|
+
vsphere_infrastructure_stages)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'when operating system is CentOS' do
|
185
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
186
|
+
|
187
|
+
it 'has the correct stages' do
|
188
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
189
|
+
agent_stages +
|
190
|
+
vsphere_centos_infrastructure_stages)
|
191
|
+
end
|
138
192
|
end
|
139
193
|
end
|
140
194
|
end
|
141
195
|
|
142
|
-
context 'when
|
143
|
-
let(:
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
196
|
+
context 'when using the go agent' do
|
197
|
+
let(:agent_name) { 'go' }
|
198
|
+
let(:agent_stages) {
|
199
|
+
[
|
200
|
+
:bosh_go_agent,
|
201
|
+
#:bosh_micro,
|
202
|
+
]
|
203
|
+
}
|
204
|
+
|
205
|
+
context 'when infrastructure is AWS' do
|
206
|
+
let(:infrastructure) { Infrastructure.for('aws') }
|
207
|
+
|
208
|
+
context 'when operating system is Ubuntu' do
|
209
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
210
|
+
|
211
|
+
it 'has the correct stages' do
|
212
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
213
|
+
agent_stages +
|
214
|
+
aws_infrastructure_stages)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'when operating system is Centos' do
|
219
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
220
|
+
|
221
|
+
it 'has the correct stages' do
|
222
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
223
|
+
agent_stages +
|
224
|
+
aws_infrastructure_stages)
|
225
|
+
end
|
164
226
|
end
|
165
227
|
end
|
166
|
-
end
|
167
228
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
229
|
+
context 'when infrastructure is OpenStack' do
|
230
|
+
let(:infrastructure) { Infrastructure.for('openstack') }
|
231
|
+
|
232
|
+
context 'when operating system is Ubuntu' do
|
233
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
234
|
+
|
235
|
+
it 'has the correct stages' do
|
236
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
237
|
+
agent_stages +
|
238
|
+
openstack_infrastructure_stages)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context 'when operating system is CentOS' do
|
243
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
244
|
+
|
245
|
+
it 'has the correct stages' do
|
246
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
247
|
+
agent_stages +
|
248
|
+
openstack_infrastructure_stages)
|
249
|
+
end
|
188
250
|
end
|
189
251
|
end
|
190
252
|
|
191
|
-
context 'when
|
192
|
-
let(:
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
253
|
+
context 'when infrastructure is vSphere' do
|
254
|
+
let(:infrastructure) { Infrastructure.for('vsphere') }
|
255
|
+
|
256
|
+
context 'when operating system is Ubuntu' do
|
257
|
+
let(:operating_system) { OperatingSystem.for('ubuntu') }
|
258
|
+
|
259
|
+
it 'has the correct stages' do
|
260
|
+
expect(stage_collection.all_stages).to eq(ubuntu_stages +
|
261
|
+
agent_stages +
|
262
|
+
vsphere_infrastructure_stages)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
context 'when operating system is CentOS' do
|
267
|
+
let(:operating_system) { OperatingSystem.for('centos') }
|
268
|
+
|
269
|
+
it 'has the correct stages' do
|
270
|
+
expect(stage_collection.all_stages).to eq(centos_stages +
|
271
|
+
agent_stages +
|
272
|
+
vsphere_centos_infrastructure_stages)
|
273
|
+
end
|
208
274
|
end
|
209
275
|
end
|
210
276
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Stemcell with Ruby Agent' do
|
4
|
+
describe 'installed by bosh_ruby' do
|
5
|
+
describe command('/var/vcap/bosh/bin/ruby -r yaml -e "Psych::SyntaxError"') do
|
6
|
+
it { should return_exit_status(0) }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'installed by bosh_agent' do
|
11
|
+
describe command('/var/vcap/bosh/bin/ruby -r bosh_agent -e "Bosh::Agent"') do
|
12
|
+
it { should return_exit_status(0) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'installed by bosh_micro' do
|
17
|
+
describe file('/var/vcap/micro/apply_spec.yml') do
|
18
|
+
it { should be_file }
|
19
|
+
it { should contain 'deployment: micro' }
|
20
|
+
it { should contain 'powerdns' }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe file('/var/vcap/micro_bosh/data/cache') do
|
24
|
+
it { should be_a_directory }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,16 +1,4 @@
|
|
1
1
|
shared_examples_for 'a stemcell' do
|
2
|
-
describe 'installed by bosh_ruby' do
|
3
|
-
describe command('/var/vcap/bosh/bin/ruby -r yaml -e "Psych::SyntaxError"') do
|
4
|
-
it { should return_exit_status(0) }
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
describe 'installed by bosh_agent' do
|
9
|
-
describe command('/var/vcap/bosh/bin/ruby -r bosh_agent -e "Bosh::Agent"') do
|
10
|
-
it { should return_exit_status(0) }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
2
|
context 'installed by bosh_sudoers' do
|
15
3
|
describe file('/etc/sudoers') do
|
16
4
|
it { should be_file }
|
@@ -18,18 +6,6 @@ shared_examples_for 'a stemcell' do
|
|
18
6
|
end
|
19
7
|
end
|
20
8
|
|
21
|
-
context 'installed by bosh_micro' do
|
22
|
-
describe file('/var/vcap/micro/apply_spec.yml') do
|
23
|
-
it { should be_file }
|
24
|
-
it { should contain 'deployment: micro' }
|
25
|
-
it { should contain 'powerdns' }
|
26
|
-
end
|
27
|
-
|
28
|
-
describe file('/var/vcap/micro_bosh/data/cache') do
|
29
|
-
it { should be_a_directory }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
9
|
# currently `should cotain` on a file does not properly escape $PATH
|
34
10
|
context 'installed by bosh_users' do
|
35
11
|
describe command("grep -q 'export PATH=/var/vcap/bosh/bin:\\$PATH\n' /root/.bashrc") do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-stemcell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.0.pre.
|
4
|
+
version: 1.5.0.pre.1210
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.5.0.pre.
|
21
|
+
version: 1.5.0.pre.1210
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.5.0.pre.
|
29
|
+
version: 1.5.0.pre.1210
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,6 +130,8 @@ extensions: []
|
|
130
130
|
extra_rdoc_files: []
|
131
131
|
files:
|
132
132
|
- .rspec
|
133
|
+
- Berksfile
|
134
|
+
- Berksfile.lock
|
133
135
|
- README.md
|
134
136
|
- Vagrantfile
|
135
137
|
- bosh-stemcell.gemspec
|
@@ -169,7 +171,9 @@ files:
|
|
169
171
|
- spec/spec_helper.rb
|
170
172
|
- spec/stemcells/aws_spec.rb
|
171
173
|
- spec/stemcells/centos_spec.rb
|
174
|
+
- spec/stemcells/go_agent_spec.rb
|
172
175
|
- spec/stemcells/openstack_spec.rb
|
176
|
+
- spec/stemcells/ruby_agent_spec.rb
|
173
177
|
- spec/stemcells/ubuntu_spec.rb
|
174
178
|
- spec/stemcells/vsphere_spec.rb
|
175
179
|
- spec/support/rspec_fire.rb
|
@@ -225,7 +229,9 @@ test_files:
|
|
225
229
|
- spec/spec_helper.rb
|
226
230
|
- spec/stemcells/aws_spec.rb
|
227
231
|
- spec/stemcells/centos_spec.rb
|
232
|
+
- spec/stemcells/go_agent_spec.rb
|
228
233
|
- spec/stemcells/openstack_spec.rb
|
234
|
+
- spec/stemcells/ruby_agent_spec.rb
|
229
235
|
- spec/stemcells/ubuntu_spec.rb
|
230
236
|
- spec/stemcells/vsphere_spec.rb
|
231
237
|
- spec/support/rspec_fire.rb
|