beaker 3.20.0 → 3.21.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.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/beaker.gemspec +4 -5
  3. data/docs/how_to/hypervisors/README.md +7 -3
  4. data/docs/tutorials/quick_start_rake_tasks.md +1 -1
  5. data/lib/beaker/command.rb +1 -1
  6. data/lib/beaker/host.rb +6 -4
  7. data/lib/beaker/host/windows/exec.rb +10 -0
  8. data/lib/beaker/host/windows/pkg.rb +1 -29
  9. data/lib/beaker/host_prebuilt_steps.rb +1 -0
  10. data/lib/beaker/hypervisor.rb +26 -37
  11. data/lib/beaker/ssh_connection.rb +8 -15
  12. data/lib/beaker/version.rb +1 -1
  13. data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +1 -1
  14. data/spec/beaker/host/windows/exec_spec.rb +18 -0
  15. data/spec/beaker/host/windows/pkg_spec.rb +0 -7
  16. data/spec/beaker/host_prebuilt_steps_spec.rb +1 -0
  17. data/spec/beaker/host_spec.rb +31 -40
  18. data/spec/beaker/hypervisor/hypervisor_spec.rb +20 -34
  19. data/spec/beaker/ssh_connection_spec.rb +18 -19
  20. data/spec/spec_helper.rb +0 -1
  21. metadata +23 -57
  22. data/docs/how_to/hypervisors/aws.md +0 -149
  23. data/docs/how_to/hypervisors/ec2.md +0 -81
  24. data/docs/how_to/hypervisors/google_compute_engine.md +0 -41
  25. data/docs/how_to/hypervisors/vagrant.md +0 -165
  26. data/docs/how_to/hypervisors/vagrant_hosts_file_examples.md +0 -60
  27. data/docs/how_to/hypervisors/vagrant_libvirt.md +0 -58
  28. data/docs/how_to/hypervisors/vmware_fusion.md +0 -36
  29. data/docs/how_to/hypervisors/vsphere.md +0 -54
  30. data/lib/beaker/hypervisor/aws_sdk.rb +0 -989
  31. data/lib/beaker/hypervisor/ec2_helper.rb +0 -41
  32. data/lib/beaker/hypervisor/fusion.rb +0 -65
  33. data/lib/beaker/hypervisor/google_compute.rb +0 -164
  34. data/lib/beaker/hypervisor/google_compute_helper.rb +0 -577
  35. data/lib/beaker/hypervisor/vagrant.rb +0 -286
  36. data/lib/beaker/hypervisor/vagrant_custom.rb +0 -11
  37. data/lib/beaker/hypervisor/vagrant_fusion.rb +0 -17
  38. data/lib/beaker/hypervisor/vagrant_libvirt.rb +0 -41
  39. data/lib/beaker/hypervisor/vagrant_parallels.rb +0 -18
  40. data/lib/beaker/hypervisor/vagrant_virtualbox.rb +0 -76
  41. data/lib/beaker/hypervisor/vagrant_workstation.rb +0 -13
  42. data/lib/beaker/hypervisor/vsphere.rb +0 -85
  43. data/lib/beaker/hypervisor/vsphere_helper.rb +0 -204
  44. data/spec/beaker/hypervisor/aws_sdk_spec.rb +0 -980
  45. data/spec/beaker/hypervisor/ec2_helper_spec.rb +0 -44
  46. data/spec/beaker/hypervisor/fusion_spec.rb +0 -41
  47. data/spec/beaker/hypervisor/vagrant_custom_spec.rb +0 -46
  48. data/spec/beaker/hypervisor/vagrant_fusion_spec.rb +0 -32
  49. data/spec/beaker/hypervisor/vagrant_libvirt_spec.rb +0 -61
  50. data/spec/beaker/hypervisor/vagrant_parallels_spec.rb +0 -44
  51. data/spec/beaker/hypervisor/vagrant_spec.rb +0 -479
  52. data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +0 -44
  53. data/spec/beaker/hypervisor/vagrant_workstation_spec.rb +0 -32
  54. data/spec/beaker/hypervisor/vsphere_helper_spec.rb +0 -163
  55. data/spec/beaker/hypervisor/vsphere_spec.rb +0 -90
@@ -1,44 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Beaker::VagrantVirtualbox do
4
- let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantVirtualbox.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
10
-
11
- it "uses the virtualbox provider for provisioning" do
12
- @hosts.each do |host|
13
- host_prev_name = host['user']
14
- expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
- expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
- expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
- end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
19
- expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider virtualbox" ).once
20
- vagrant.provision
21
- end
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 :virtualbox do |vb|\n vb.customize ['modifyvm', :id, '--memory', '1024', '--cpus', '1']\n end})
31
- end
32
-
33
- it "can disable the vb guest plugin" do
34
- options.merge!({ :vbguest_plugin => 'disable' })
35
-
36
- vfile_section = vagrant.class.provider_vfile_section( @hosts.first, options )
37
-
38
- match = vfile_section.match(/vb.vbguest.auto_update = false/)
39
-
40
- expect( match ).to_not be nil
41
-
42
- end
43
-
44
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Beaker::VagrantWorkstation do
4
- let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
5
- let( :vagrant ) { Beaker::VagrantWorkstation.new( @hosts, options ) }
6
-
7
- before :each do
8
- @hosts = make_hosts()
9
- end
10
-
11
- it "uses the vmware_workstation provider for provisioning" do
12
- @hosts.each do |host|
13
- host_prev_name = host['user']
14
- expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
15
- expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
16
- expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
17
- end
18
- expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
19
- expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_workstation" ).once
20
- vagrant.provision
21
- end
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})
31
- end
32
- end
@@ -1,163 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Beaker
4
- describe VsphereHelper do
5
- let( :logger ) { double('logger').as_null_object }
6
- let( :vInfo ) { { :server => "vsphere.labs.net", :user => "vsphere@labs.com", :pass => "supersekritpassword" } }
7
- let( :vsphere_helper ) { VsphereHelper.new ( vInfo.merge( { :logger => logger } ) ) }
8
- let( :snaplist ) { { 'snap1' => { 'snap1sub1' => nil ,
9
- 'snap1sub2' => nil },
10
- 'snap2' => nil,
11
- 'snap3' => { 'snap3sub1' => nil ,
12
- 'snap3sub2' => nil ,
13
- 'snap3sub3' => nil } } }
14
- let( :vms ) { [ MockRbVmomiVM.new( 'mockvm1', snaplist ),
15
- MockRbVmomiVM.new( 'mockvm2', snaplist ),
16
- MockRbVmomiVM.new( 'mockvm3', snaplist ) ] }
17
-
18
- before :each do
19
- stub_const( "RbVmomi", MockRbVmomi )
20
- end
21
-
22
- describe "#load_config" do
23
-
24
- it 'can load a .fog file' do
25
- allow( File ).to receive( :exists? ).and_return( true )
26
- allow( YAML ).to receive( :load_file ).and_return( fog_file_contents )
27
-
28
- expect( VsphereHelper.load_config ).to be === vInfo
29
-
30
- end
31
-
32
- it 'raises an error when the .fog file is missing' do
33
- allow( File ).to receive( :exists? ).and_return( false )
34
-
35
- expect{ VsphereHelper.load_config }.to raise_error( ArgumentError )
36
-
37
- end
38
-
39
- end
40
-
41
- describe "#find_snapshot" do
42
- it 'can find a given snapshot name' do
43
- mockvm = MockRbVmomiVM.new( 'mockvm', snaplist )
44
-
45
- expect( vsphere_helper.find_snapshot( mockvm, 'snap2' ) ).to be === mockvm.get_snapshot( 'snap2' )
46
-
47
- end
48
-
49
- end
50
-
51
- describe "#find_customization" do
52
- it 'returns the customization spec' do
53
-
54
- expect( vsphere_helper.find_customization( 'name' ) ).to be === true
55
-
56
- end
57
-
58
- end
59
-
60
- describe "#find_vms" do
61
- it 'finds the list of vms' do
62
- connection = vsphere_helper.instance_variable_get( :@connection )
63
- connection.set_info( vms )
64
-
65
- expect( vsphere_helper.find_vms( 'mockvm1' ) ).to be === {vms[0].name => vms[0]}
66
- end
67
-
68
- it 'returns {} when no vm is found' do
69
- connection = vsphere_helper.instance_variable_get( :@connection )
70
- connection.set_info( vms )
71
-
72
- expect( vsphere_helper.find_vms( 'novm' ) ).to be === {}
73
- end
74
-
75
- end
76
-
77
- describe "#find_datastore" do
78
- it 'finds the datastore from the connection object' do
79
- connection = vsphere_helper.instance_variable_get( :@connection )
80
- dc = connection.serviceInstance.find_datacenter('testdc')
81
- expect(vsphere_helper.find_datastore( dc,'datastorename' ) ).to be === true
82
- end
83
-
84
- end
85
-
86
- describe "#find_folder" do
87
- it 'can find a folder in the datacenter' do
88
- connection = vsphere_helper.instance_variable_get( :@connection )
89
- expect(vsphere_helper.find_folder( 'testdc','root' ) ).to be === connection.serviceInstance.find_datacenter('testdc').vmFolder
90
- end
91
-
92
- end
93
-
94
- describe "#find_pool" do
95
- it 'can find a pool in a folder in the datacenter' do
96
- connection = vsphere_helper.instance_variable_get( :@connection )
97
- dc = connection.serviceInstance.find_datacenter('testdc')
98
- dc.hostFolder = MockRbVmomi::VIM::Folder.new
99
- dc.hostFolder.name = "/root"
100
-
101
- expect(vsphere_helper.find_pool( 'testdc','root' ) ).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
102
-
103
- end
104
- it 'can find a pool in a clustercomputeresource in the datacenter' do
105
- connection = vsphere_helper.instance_variable_get( :@connection )
106
- dc = connection.serviceInstance.find_datacenter('testdc')
107
- dc.hostFolder = MockRbVmomi::VIM::ClusterComputeResource.new
108
- dc.hostFolder.name = "/root"
109
-
110
- expect(vsphere_helper.find_pool( 'testdc','root' ) ).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
111
- end
112
- it 'can find a pool in a resourcepool in the datacenter' do
113
- connection = vsphere_helper.instance_variable_get( :@connection )
114
- dc = connection.serviceInstance.find_datacenter('testdc')
115
- dc.hostFolder = MockRbVmomi::VIM::ResourcePool.new
116
- dc.hostFolder.name = "/root"
117
-
118
- expect(vsphere_helper.find_pool( 'testdc','root' ) ).to be === connection.serviceInstance.find_datacenter('testdc').hostFolder
119
- end
120
-
121
- end
122
-
123
- describe "#wait_for_tasks" do
124
- it "can wait for tasks to error" do
125
- allow( vsphere_helper ).to receive( :sleep ).and_return( true )
126
- vms.each do |vm|
127
- vm.info.state = 'error'
128
- end
129
-
130
- expect(vsphere_helper.wait_for_tasks( vms, 0, 5 ) ).to be === vms
131
- end
132
-
133
- it "can wait for tasks to succeed" do
134
- allow( vsphere_helper ).to receive( :sleep ).and_return( true )
135
- vms.each do |vm|
136
- vm.info.state = 'success'
137
- end
138
-
139
- expect(vsphere_helper.wait_for_tasks( vms, 0, 5 ) ).to be === vms
140
- end
141
-
142
- it "errors when tasks fail to error/success before timing out" do
143
- allow( vsphere_helper ).to receive( :sleep ).and_return( true )
144
- vms.each do |vm|
145
- vm.info.state = 'nope'
146
- end
147
-
148
- expect{ vsphere_helper.wait_for_tasks( vms, 0, 5 ) }.to raise_error
149
- end
150
-
151
- end
152
-
153
- describe "#close" do
154
- it 'closes the connection' do
155
- connection = vsphere_helper.instance_variable_get( :@connection )
156
- expect( connection ).to receive( :close ).once
157
-
158
- vsphere_helper.close
159
- end
160
- end
161
-
162
- end
163
- end
@@ -1,90 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Beaker
4
- describe Vsphere do
5
-
6
- before :each do
7
- MockVsphereHelper.set_config( fog_file_contents )
8
- MockVsphereHelper.set_vms( make_hosts() )
9
- stub_const( "VsphereHelper", MockVsphereHelper )
10
- end
11
-
12
- describe "#provision" do
13
-
14
- it 'provisions hosts' do
15
- MockVsphereHelper.powerOff
16
- vsphere = Beaker::Vsphere.new( make_hosts(), make_opts )
17
-
18
- vsphere.provision
19
-
20
- hosts = vsphere.instance_variable_get( :@hosts )
21
- hosts.each do |host|
22
- expect( MockVsphereHelper.find_vm( host.name ).powerState ) == "poweredOn"
23
- end
24
-
25
- end
26
-
27
- it 'raises an error if a vm is missing in Vsphere' do
28
- MockVsphereHelper.powerOff
29
- hosts = make_hosts()
30
- hosts[0][:vmname] = 'unknown'
31
- vsphere = Beaker::Vsphere.new( hosts, make_opts )
32
-
33
- expect{ vsphere.provision }.to raise_error
34
-
35
- end
36
-
37
- it 'raises an error if a vm does not have a given snapshot name' do
38
- MockVsphereHelper.powerOff
39
- hosts = make_hosts()
40
- hosts[0]["snapshot"] = 'unknown'
41
- vsphere = Beaker::Vsphere.new( hosts, make_opts )
42
-
43
- expect{ vsphere.provision }.to raise_error
44
-
45
- end
46
-
47
- it 'provisions hosts if no snapshot is provided' do
48
- MockVsphereHelper.powerOff
49
- hosts = make_hosts()
50
- hosts[0]["snapshot"] = nil
51
- vsphere = Beaker::Vsphere.new( hosts, make_opts )
52
-
53
- vsphere.provision
54
-
55
- hosts.each do |host|
56
- expect( MockVsphereHelper.find_vm( host.name ).powerState ) == "poweredOn"
57
- end
58
-
59
- end
60
-
61
- end
62
-
63
- describe "#cleanup" do
64
-
65
- it "cleans up" do
66
- MockVsphereHelper.powerOn
67
- vsphere = Beaker::Vsphere.new( make_hosts(), make_opts )
68
- vsphere.cleanup
69
-
70
- hosts = vsphere.instance_variable_get( :@hosts )
71
- hosts.each do |host|
72
- expect( MockVsphereHelper.find_vm( host.name ).powerState ) == "poweredOff"
73
- end
74
- end
75
-
76
- it 'raises an error if a vm is missing in Vsphere' do
77
- MockVsphereHelper.powerOn
78
- hosts = make_hosts()
79
- hosts[0][:vmname] = 'unknown'
80
- vsphere = Beaker::Vsphere.new( hosts, make_opts )
81
-
82
- expect{ vsphere.cleanup }.to raise_error
83
-
84
- end
85
-
86
- end
87
-
88
- end
89
-
90
- end