beaker-vagrant 0.6.7 → 0.7.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/.github/workflows/release.yml +24 -0
- data/beaker-vagrant.gemspec +2 -6
- data/lib/beaker-vagrant/version.rb +1 -1
- data/lib/beaker/hypervisor/vagrant.rb +33 -66
- data/lib/beaker/hypervisor/vagrant_custom.rb +1 -0
- data/lib/beaker/hypervisor/vagrant_libvirt.rb +16 -26
- data/spec/beaker/hypervisor/vagrant_custom_spec.rb +3 -2
- data/spec/beaker/hypervisor/vagrant_desktop_spec.rb +33 -47
- data/spec/beaker/hypervisor/vagrant_fusion_spec.rb +14 -14
- data/spec/beaker/hypervisor/vagrant_libvirt_spec.rb +23 -26
- data/spec/beaker/hypervisor/vagrant_parallels_spec.rb +20 -23
- data/spec/beaker/hypervisor/vagrant_spec.rb +41 -118
- data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +47 -69
- data/spec/beaker/hypervisor/vagrant_workstation_spec.rb +33 -47
- metadata +14 -21
@@ -2,99 +2,77 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Beaker::VagrantVirtualbox do
|
4
4
|
let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
|
5
|
-
let( :vagrant ) {
|
6
|
-
let(:vagrantfile_path)
|
7
|
-
|
8
|
-
File.expand_path( File.join( path, 'Vagrantfile' ))
|
9
|
-
end
|
10
|
-
|
11
|
-
before :each do
|
12
|
-
@hosts = make_hosts()
|
13
|
-
end
|
5
|
+
let( :vagrant ) { described_class.new( hosts, options ) }
|
6
|
+
let(:vagrantfile_path) { vagrant.instance_variable_get( :@vagrant_file ) }
|
7
|
+
let(:hosts) { make_hosts() }
|
14
8
|
|
15
9
|
it "uses the virtualbox provider for provisioning" do
|
16
|
-
|
10
|
+
hosts.each do |host|
|
17
11
|
host_prev_name = host['user']
|
18
12
|
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
19
13
|
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
20
14
|
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
21
15
|
end
|
22
|
-
expect( vagrant ).to receive( :hack_etc_hosts ).with(
|
16
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
|
23
17
|
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider virtualbox" ).once
|
24
18
|
vagrant.provision
|
25
19
|
end
|
26
20
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
expect( vagrantfile ).to include( %Q{ v.vm.provider :virtualbox do |vb|\n vb.customize ['modifyvm', :id, '--memory', '1024', '--cpus', '1', '--audio', 'none']\n end})
|
35
|
-
end
|
36
|
-
|
37
|
-
it "can disable the vb guest plugin" do
|
38
|
-
options.merge!({ :vbguest_plugin => 'disable' })
|
39
|
-
|
40
|
-
vfile_section = vagrant.class.provider_vfile_section( @hosts.first, options )
|
41
|
-
|
42
|
-
match = vfile_section.match(/vb.vbguest.auto_update = false/)
|
21
|
+
context 'can make a Vagrantfile' do
|
22
|
+
subject do
|
23
|
+
FakeFS do
|
24
|
+
vagrant.make_vfile(hosts)
|
25
|
+
File.read(vagrant.instance_variable_get(:@vagrant_file))
|
26
|
+
end
|
27
|
+
end
|
43
28
|
|
44
|
-
|
29
|
+
it "can make a Vagrantfile for a set of hosts" do
|
30
|
+
is_expected.to include( %Q{ v.vm.provider :virtualbox do |vb|\n vb.customize ['modifyvm', :id, '--memory', '1024', '--cpus', '1', '--audio', 'none']\n end})
|
31
|
+
end
|
45
32
|
|
46
|
-
|
33
|
+
context 'with ioapic(multiple cores)' do
|
34
|
+
let(:hosts) { make_hosts({:ioapic => 'true'}, 1) }
|
47
35
|
|
48
|
-
|
49
|
-
|
50
|
-
hosts = make_hosts({:ioapic => 'true'},1)
|
36
|
+
it { is_expected.to include( " vb.customize ['modifyvm', :id, '--ioapic', 'on']") }
|
37
|
+
end
|
51
38
|
|
52
|
-
|
39
|
+
context 'with NAT DNS' do
|
40
|
+
let(:hosts) { make_hosts({:natdns => 'on'}, 1) }
|
53
41
|
|
54
|
-
|
55
|
-
|
56
|
-
|
42
|
+
it { is_expected.to include( " vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']") }
|
43
|
+
it { is_expected.to include( " vb.customize ['modifyvm', :id, '--natdnsproxy1', 'on']") }
|
44
|
+
end
|
57
45
|
|
58
|
-
|
59
|
-
|
60
|
-
vagrant.make_vfile( hosts )
|
61
|
-
vagrantfile = File.read( vagrantfile_path )
|
46
|
+
context 'storage with the USB controller' do
|
47
|
+
let(:hosts) { make_hosts({:volumes => { 'test_disk' => { size: '5120' }}, :volume_storage_controller => 'USB' }) }
|
62
48
|
|
63
|
-
|
64
|
-
|
65
|
-
|
49
|
+
it { is_expected.to include(" vb.customize ['modifyvm', :id, '--usb', 'on']") }
|
50
|
+
it { is_expected.to include(" vb.customize ['storagectl', :id, '--name', 'Beaker USB Controller', '--add', 'usb', '--portcount', '8', '--controller', 'USB', '--bootable', 'off']") }
|
51
|
+
it { is_expected.to include(" vb.customize ['createhd', '--filename', 'vm1-test_disk.vdi', '--size', '5120']") }
|
52
|
+
it { is_expected.to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker USB Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']") }
|
53
|
+
end
|
66
54
|
|
67
|
-
|
68
|
-
|
69
|
-
hosts = make_hosts({:volumes => { 'test_disk' => { size: '5120' }}, :volume_storage_controller => 'USB' })
|
55
|
+
context 'storage with the LSILogic controller' do
|
56
|
+
let(:hosts) { make_hosts({:volumes => { 'test_disk' => { size: '5120' }}, :volume_storage_controller => 'LSILogic' }) }
|
70
57
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
expect( vagrantfile ).to include(" vb.customize ['createhd', '--filename', 'vm1-test_disk.vdi', '--size', '5120']")
|
76
|
-
expect( vagrantfile ).to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker USB Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']")
|
77
|
-
end
|
58
|
+
it { is_expected.to include(" vb.customize ['storagectl', :id, '--name', 'Beaker LSILogic Controller', '--add', 'scsi', '--portcount', '16', '--controller', 'LSILogic', '--bootable', 'off']") }
|
59
|
+
it { is_expected.to include(" vb.customize ['createhd', '--filename', 'vm1-test_disk.vdi', '--size', '5120']") }
|
60
|
+
it { is_expected.to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker LSILogic Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']") }
|
61
|
+
end
|
78
62
|
|
79
|
-
|
80
|
-
|
81
|
-
hosts = make_hosts({:volumes => { 'test_disk' => { size: '5120' }}, :volume_storage_controller => 'LSILogic' })
|
63
|
+
context "storage with the default controller" do
|
64
|
+
let(:hosts) { make_hosts({:volumes => { 'test_disk' => { size: '5120' }}}) }
|
82
65
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
expect( vagrantfile ).to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker LSILogic Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']")
|
66
|
+
it { is_expected.to include(" vb.customize ['storagectl', :id, '--name', 'Beaker IntelAHCI Controller', '--add', 'sata', '--portcount', '2', '--controller', 'IntelAHCI', '--bootable', 'off']") }
|
67
|
+
it { is_expected.to include(" vb.customize ['createhd', '--filename', 'vm1-test_disk.vdi', '--size', '5120']") }
|
68
|
+
it { is_expected.to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker IntelAHCI Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']") }
|
69
|
+
end
|
88
70
|
end
|
89
71
|
|
90
|
-
|
91
|
-
|
92
|
-
|
72
|
+
context 'disabled vb guest plugin' do
|
73
|
+
let(:options) { super().merge({ :vbguest_plugin => 'disable' }) }
|
74
|
+
subject { vagrant.class.provider_vfile_section( hosts.first, options ) }
|
93
75
|
|
94
|
-
|
95
|
-
vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
|
96
|
-
expect( vagrantfile ).to include(" vb.customize ['storagectl', :id, '--name', 'Beaker IntelAHCI Controller', '--add', 'sata', '--portcount', '2', '--controller', 'IntelAHCI', '--bootable', 'off']")
|
97
|
-
expect( vagrantfile ).to include(" vb.customize ['createhd', '--filename', 'vm1-test_disk.vdi', '--size', '5120']")
|
98
|
-
expect( vagrantfile ).to include(" vb.customize ['storageattach', :id, '--storagectl', 'Beaker IntelAHCI Controller', '--port', '0', '--device', '0', '--type', 'hdd', '--medium', 'vm1-test_disk.vdi']")
|
76
|
+
it { is_expected.to match(/vb\.vbguest\.auto_update = false/) }
|
99
77
|
end
|
100
78
|
end
|
@@ -2,71 +2,57 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Beaker::VagrantWorkstation do
|
4
4
|
let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
|
5
|
-
let( :vagrant ) {
|
6
|
-
|
7
|
-
before :each do
|
8
|
-
@hosts = make_hosts()
|
9
|
-
end
|
5
|
+
let( :vagrant ) { described_class.new( hosts, options ) }
|
6
|
+
let( :hosts ) { make_hosts() }
|
10
7
|
|
11
8
|
it "uses the vmware_workstation provider for provisioning" do
|
12
|
-
|
9
|
+
hosts.each do |host|
|
13
10
|
host_prev_name = host['user']
|
14
11
|
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
15
12
|
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
16
13
|
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
17
14
|
end
|
18
|
-
expect( vagrant ).to receive( :hack_etc_hosts ).with(
|
15
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( hosts, options ).once
|
19
16
|
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_workstation" ).once
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
it "can make a Vagranfile for a set of hosts" do
|
24
|
-
path = vagrant.instance_variable_get( :@vagrant_path )
|
25
|
-
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
26
|
-
|
27
|
-
vagrant.make_vfile( @hosts )
|
28
|
-
|
29
|
-
vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
|
30
|
-
expect( vagrantfile ).to include( %Q{ v.vm.provider :vmware_workstation do |v|\n v.vmx['memsize'] = '1024'\n end})
|
17
|
+
FakeFS do
|
18
|
+
vagrant.provision
|
19
|
+
end
|
31
20
|
end
|
32
21
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
expect( vagrantfile ).to include( %Q{ v.vmx['whitelist_verified'] = 'true'})
|
41
|
-
end
|
22
|
+
context 'can make a Vagrantfile' do
|
23
|
+
subject do
|
24
|
+
FakeFS do
|
25
|
+
vagrant.make_vfile(hosts)
|
26
|
+
File.read(vagrant.instance_variable_get(:@vagrant_file))
|
27
|
+
end
|
28
|
+
end
|
42
29
|
|
43
|
-
|
44
|
-
|
45
|
-
|
30
|
+
it "for a set of hosts" do
|
31
|
+
is_expected.to include( %Q{ v.vm.provider :vmware_workstation do |v|\n v.vmx['memsize'] = '1024'\n end})
|
32
|
+
end
|
46
33
|
|
47
|
-
|
34
|
+
context 'with whitelist_verified' do
|
35
|
+
let(:hosts) { make_hosts({:whitelist_verified => true}, 1) }
|
48
36
|
|
49
|
-
|
50
|
-
|
51
|
-
end
|
37
|
+
it { is_expected.to include( %Q{ v.vmx['whitelist_verified'] = 'true'}) }
|
38
|
+
end
|
52
39
|
|
53
|
-
|
54
|
-
|
55
|
-
hosts = make_hosts({:unmount_default_hgfs => true},1)
|
40
|
+
context 'with functional_hgfs' do
|
41
|
+
let(:hosts) { make_hosts({:functional_hgfs => true}, 1) }
|
56
42
|
|
57
|
-
|
43
|
+
it { is_expected.to include( %Q{ v.vmx['functional_hgfs'] = 'true'}) }
|
44
|
+
end
|
58
45
|
|
59
|
-
|
60
|
-
|
61
|
-
end
|
46
|
+
context 'with unmount_default_hgfs' do
|
47
|
+
let(:hosts) { make_hosts({:unmount_default_hgfs => true}, 1) }
|
62
48
|
|
63
|
-
|
64
|
-
|
65
|
-
hosts = make_hosts({:gui => true},1)
|
49
|
+
it { is_expected.to include( %Q{ v.vmx['unmount_default_hgfs'] = 'true'}) }
|
50
|
+
end
|
66
51
|
|
67
|
-
|
52
|
+
context "with gui" do
|
53
|
+
let(:hosts) { make_hosts({:gui => true},1) }
|
68
54
|
|
69
|
-
|
70
|
-
|
55
|
+
it { is_expected.to include( %Q{ v.vmx['gui'] = true}) }
|
56
|
+
end
|
71
57
|
end
|
72
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-vagrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rishi Javia, Kevin Imber, Tony Vu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -42,30 +42,36 @@ dependencies:
|
|
42
42
|
name: fakefs
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0.6'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '2.0'
|
48
51
|
type: :development
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '0.6'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: rake
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '13.0'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '13.0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: simplecov
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +128,6 @@ dependencies:
|
|
122
128
|
- - ">="
|
123
129
|
- !ruby/object:Gem::Version
|
124
130
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: stringify-hash
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.0.0
|
132
|
-
type: :runtime
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.0.0
|
139
131
|
description: For use for the Beaker acceptance testing tool
|
140
132
|
email:
|
141
133
|
- rishi.javia@puppet.com, kevin.imber@puppet.com, tony.vu@puppet.com
|
@@ -145,6 +137,7 @@ extensions: []
|
|
145
137
|
extra_rdoc_files: []
|
146
138
|
files:
|
147
139
|
- ".github/dependabot.yml"
|
140
|
+
- ".github/workflows/release.yml"
|
148
141
|
- ".github/workflows/test.yml"
|
149
142
|
- ".gitignore"
|
150
143
|
- ".rspec"
|
@@ -197,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
190
|
- !ruby/object:Gem::Version
|
198
191
|
version: '0'
|
199
192
|
requirements: []
|
200
|
-
rubygems_version: 3.
|
193
|
+
rubygems_version: 3.1.6
|
201
194
|
signing_key:
|
202
195
|
specification_version: 4
|
203
196
|
summary: Beaker DSL Extension Helpers!
|