beaker 1.8.1 → 1.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/beaker +1 -1
- data/lib/beaker.rb +1 -1
- data/lib/beaker/cli.rb +15 -35
- data/lib/beaker/host_prebuilt_steps.rb +335 -0
- data/lib/beaker/hypervisor.rb +53 -4
- data/lib/beaker/hypervisor/aixer.rb +2 -2
- data/lib/beaker/hypervisor/blimper.rb +5 -5
- data/lib/beaker/hypervisor/fusion.rb +3 -3
- data/lib/beaker/hypervisor/solaris.rb +2 -2
- data/lib/beaker/hypervisor/vagrant.rb +6 -16
- data/lib/beaker/hypervisor/vcloud.rb +6 -6
- data/lib/beaker/hypervisor/vcloud_pooled.rb +4 -4
- data/lib/beaker/hypervisor/vsphere.rb +3 -3
- data/lib/beaker/network_manager.rb +51 -37
- data/lib/beaker/options/presets.rb +1 -0
- data/lib/beaker/shared.rb +2 -2
- data/lib/beaker/shared/host_role_parser.rb +36 -0
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/host_prebuilt_steps_spec.rb +421 -0
- data/spec/beaker/hypervisor/google_compute.rb +23 -0
- data/spec/beaker/hypervisor/vagrant_spec.rb +5 -4
- data/spec/beaker/hypervisor/vcloud_pooled_spec.rb +2 -2
- data/spec/beaker/hypervisor/vcloud_spec.rb +2 -2
- data/spec/beaker/hypervisor/vsphere_spec.rb +2 -2
- data/spec/beaker/options/parser_spec.rb +1 -1
- data/spec/beaker/shared/host_role_parser_spec.rb +58 -0
- metadata +10 -18
- data/lib/beaker/shared/host_handler.rb +0 -51
- data/lib/beaker/utils.rb +0 -7
- data/lib/beaker/utils/ntp_control.rb +0 -57
- data/lib/beaker/utils/repo_control.rb +0 -90
- data/lib/beaker/utils/setup_helper.rb +0 -66
- data/lib/beaker/utils/validator.rb +0 -36
- data/spec/beaker/shared/host_handler_spec.rb +0 -104
- data/spec/beaker/utils/ntp_control_spec.rb +0 -70
- data/spec/beaker/utils/repo_control_spec.rb +0 -168
- data/spec/beaker/utils/setup_helper_spec.rb +0 -82
- data/spec/beaker/utils/validator_spec.rb +0 -91
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Beaker
|
4
|
+
describe GoogleCompute do
|
5
|
+
let( :gc ) { Beaker::GoogleCompute.new( @hosts, make_opts ) }
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
@hosts = make_hosts()
|
9
|
+
apiclient = double()
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can provision hosts" do
|
14
|
+
gc.provision
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -2,7 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Beaker
|
4
4
|
describe Vagrant do
|
5
|
-
let( :
|
5
|
+
let( :options ) { make_opts.merge({ 'logger' => double().as_null_object }) }
|
6
|
+
let( :vagrant ) { Beaker::Vagrant.new( @hosts, options ) }
|
6
7
|
|
7
8
|
before :each do
|
8
9
|
@hosts = make_hosts()
|
@@ -61,7 +62,7 @@ module Beaker
|
|
61
62
|
|
62
63
|
Command.should_receive( :new ).with("sudo su -c \"cp -r .ssh /root/.\"").once
|
63
64
|
|
64
|
-
vagrant.copy_ssh_to_root( host )
|
65
|
+
vagrant.copy_ssh_to_root( host, options )
|
65
66
|
|
66
67
|
end
|
67
68
|
|
@@ -71,7 +72,7 @@ module Beaker
|
|
71
72
|
|
72
73
|
Command.should_receive( :new ).with("sudo su -c \"cp -r .ssh /home/Administrator/.\"").once
|
73
74
|
|
74
|
-
vagrant.copy_ssh_to_root( host )
|
75
|
+
vagrant.copy_ssh_to_root( host, options )
|
75
76
|
|
76
77
|
end
|
77
78
|
end
|
@@ -140,7 +141,7 @@ module Beaker
|
|
140
141
|
@hosts.each do |host|
|
141
142
|
host_prev_name = host['user']
|
142
143
|
vagrant.should_receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
143
|
-
vagrant.should_receive( :copy_ssh_to_root ).with( host ).once
|
144
|
+
vagrant.should_receive( :copy_ssh_to_root ).with( host, options ).once
|
144
145
|
vagrant.should_receive( :set_ssh_config ).with( host, host_prev_name ).once
|
145
146
|
end
|
146
147
|
vagrant.should_receive( :hack_etc_hosts ).with( @hosts ).once
|
@@ -50,7 +50,7 @@ module Beaker
|
|
50
50
|
vcloud.stub( :sleep ).and_return( true )
|
51
51
|
vcloud.provision
|
52
52
|
|
53
|
-
hosts = vcloud.instance_variable_get( :@
|
53
|
+
hosts = vcloud.instance_variable_get( :@hosts )
|
54
54
|
hosts.each do | host |
|
55
55
|
expect( host['vmhostname'] ).to be === 'pool'
|
56
56
|
end
|
@@ -70,7 +70,7 @@ module Beaker
|
|
70
70
|
vcloud.provision
|
71
71
|
vcloud.cleanup
|
72
72
|
|
73
|
-
hosts = vcloud.instance_variable_get( :@
|
73
|
+
hosts = vcloud.instance_variable_get( :@hosts )
|
74
74
|
hosts.each do | host |
|
75
75
|
name = host.name
|
76
76
|
vm = MockVsphereHelper.find_vm( name )
|
@@ -29,7 +29,7 @@ module Beaker
|
|
29
29
|
vcloud.stub( :sleep ).and_return( true )
|
30
30
|
vcloud.provision
|
31
31
|
|
32
|
-
hosts = vcloud.instance_variable_get( :@
|
32
|
+
hosts = vcloud.instance_variable_get( :@hosts )
|
33
33
|
hosts.each do | host |
|
34
34
|
name = host['vmhostname']
|
35
35
|
vm = MockVsphereHelper.find_vm( name )
|
@@ -54,7 +54,7 @@ module Beaker
|
|
54
54
|
vcloud.provision
|
55
55
|
vcloud.cleanup
|
56
56
|
|
57
|
-
hosts = vcloud.instance_variable_get( :@
|
57
|
+
hosts = vcloud.instance_variable_get( :@hosts )
|
58
58
|
vm_names = hosts.map {|h| h['vmhostname'] }.compact
|
59
59
|
vm_names.each do | name |
|
60
60
|
vm = MockVsphereHelper.find_vm( name )
|
@@ -17,7 +17,7 @@ module Beaker
|
|
17
17
|
|
18
18
|
vsphere.provision
|
19
19
|
|
20
|
-
hosts = vsphere.instance_variable_get( :@
|
20
|
+
hosts = vsphere.instance_variable_get( :@hosts )
|
21
21
|
hosts.each do |host|
|
22
22
|
expect( MockVsphereHelper.find_vm( host.name ).powerState ) == "poweredOn"
|
23
23
|
end
|
@@ -53,7 +53,7 @@ module Beaker
|
|
53
53
|
vsphere = Beaker::Vsphere.new( make_hosts(), make_opts )
|
54
54
|
vsphere.cleanup
|
55
55
|
|
56
|
-
hosts = vsphere.instance_variable_get( :@
|
56
|
+
hosts = vsphere.instance_variable_get( :@hosts )
|
57
57
|
hosts.each do |host|
|
58
58
|
expect( MockVsphereHelper.find_vm( host.name ).powerState ) == "poweredOff"
|
59
59
|
end
|
@@ -133,7 +133,7 @@ module Beaker
|
|
133
133
|
it "can correctly combine arguments from different sources" do
|
134
134
|
FakeFS.deactivate!
|
135
135
|
args = ["-h", hosts_path, "--log-level", "debug", "--type", "git", "--install", "PUPPET/1.0,HIERA/hello"]
|
136
|
-
expect(parser.parse_args(args)).to be === {:log_level=>"debug", :trace_limit=>10, :hosts_file=>hosts_path, :options_file=>nil, :type=>"git", :provision=>true, :preserve_hosts=>'never', :root_keys=>false, :quiet=>false, :xml=>false, :color=>true, :dry_run=>false, :timeout=>300, :fail_mode=>'slow', :timesync=>false, :repo_proxy=>false, :add_el_extras=>false, :consoleport=>443, :pe_dir=>"/opt/enterprise/dists", :pe_version_file=>"LATEST", :pe_version_file_win=>"LATEST-win", :dot_fog=>"#{home}/.fog", :help=>false, :ec2_yaml=>"config/image_templates/ec2.yaml", :ssh=>{:config=>false, :paranoid=>false, :timeout=>300, :auth_methods=>["publickey"], :port=>22, :forward_agent=>true, :keys=>["#{home}/.ssh/id_rsa"], :user_known_hosts_file=>"#{home}/.ssh/known_hosts"}, :install=>["git://github.com/puppetlabs/puppet.git#1.0", "git://github.com/puppetlabs/hiera.git#hello"], :HOSTS=>{:"pe-ubuntu-lucid"=>{:roles=>["agent", "dashboard", "database", "master"], :vmname=>"pe-ubuntu-lucid", :platform=>"ubuntu-10.04-i386", :snapshot=>"clean-w-keys", :hypervisor=>"fusion"}, :"pe-centos6"=>{:roles=>["agent"], :vmname=>"pe-centos6", :platform=>"el-6-i386", :hypervisor=>"fusion", :snapshot=>"clean-w-keys"}}, :nfs_server=>"none", :helper=>[], :load_path=>[], :tests=>[], :pre_suite=>[], :post_suite=>[], :modules=>[]}
|
136
|
+
expect(parser.parse_args(args)).to be === {:log_level=>"debug", :trace_limit=>10, :hosts_file=>hosts_path, :options_file=>nil, :type=>"git", :provision=>true, :preserve_hosts=>'never', :root_keys=>false, :quiet=>false, :xml=>false, :color=>true, :dry_run=>false, :timeout=>300, :fail_mode=>'slow', :timesync=>false, :repo_proxy=>false, :add_el_extras=>false, :add_master_entry=>false, :consoleport=>443, :pe_dir=>"/opt/enterprise/dists", :pe_version_file=>"LATEST", :pe_version_file_win=>"LATEST-win", :dot_fog=>"#{home}/.fog", :help=>false, :ec2_yaml=>"config/image_templates/ec2.yaml", :ssh=>{:config=>false, :paranoid=>false, :timeout=>300, :auth_methods=>["publickey"], :port=>22, :forward_agent=>true, :keys=>["#{home}/.ssh/id_rsa"], :user_known_hosts_file=>"#{home}/.ssh/known_hosts"}, :install=>["git://github.com/puppetlabs/puppet.git#1.0", "git://github.com/puppetlabs/hiera.git#hello"], :HOSTS=>{:"pe-ubuntu-lucid"=>{:roles=>["agent", "dashboard", "database", "master"], :vmname=>"pe-ubuntu-lucid", :platform=>"ubuntu-10.04-i386", :snapshot=>"clean-w-keys", :hypervisor=>"fusion"}, :"pe-centos6"=>{:roles=>["agent"], :vmname=>"pe-centos6", :platform=>"el-6-i386", :hypervisor=>"fusion", :snapshot=>"clean-w-keys"}}, :nfs_server=>"none", :helper=>[], :load_path=>[], :tests=>[], :pre_suite=>[], :post_suite=>[], :modules=>[]}
|
137
137
|
end
|
138
138
|
|
139
139
|
it "ensures that fail-mode is one of fast/slow" do
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Beaker
|
4
|
+
module Shared
|
5
|
+
describe HostRoleParser do
|
6
|
+
let( :host_handler ) { Beaker::Shared::HostRoleParser }
|
7
|
+
let( :platform ) { @platform || 'unix' }
|
8
|
+
let( :hosts ) { hosts = make_hosts( { :platform => platform } )
|
9
|
+
hosts[0][:roles] = ['agent']
|
10
|
+
hosts[1][:roles] = ['master', 'dashboard', 'agent', 'database']
|
11
|
+
hosts[2][:roles] = ['agent']
|
12
|
+
hosts }
|
13
|
+
|
14
|
+
context "hosts_with_role" do
|
15
|
+
it "can find the master in a set of hosts" do
|
16
|
+
|
17
|
+
expect( host_handler.hosts_with_role( hosts, 'master' ) ).to be === [hosts[1]]
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
it "can find all agents in a set of hosts" do
|
22
|
+
|
23
|
+
expect( host_handler.hosts_with_role( hosts, 'agent' ) ).to be === hosts
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns [] when no match is found in a set of hosts" do
|
28
|
+
|
29
|
+
expect( host_handler.hosts_with_role( hosts, 'surprise' ) ).to be === []
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
context "only_host_with_role" do
|
36
|
+
it "can find the single master in a set of hosts" do
|
37
|
+
|
38
|
+
expect( host_handler.only_host_with_role( hosts, 'master' ) ).to be === hosts[1]
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
it "throws an error when more than one host with matching role is found" do
|
43
|
+
|
44
|
+
expect{ host_handler.only_host_with_role( hosts, 'agent' ) }.to raise_error(ArgumentError)
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
it "throws an error when no host is found matching the role" do
|
49
|
+
|
50
|
+
expect{ host_handler.only_host_with_role( hosts, 'surprise' ) }.to raise_error(ArgumentError)
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -301,6 +301,7 @@ files:
|
|
301
301
|
- lib/beaker/host/windows/group.rb
|
302
302
|
- lib/beaker/host/windows/pkg.rb
|
303
303
|
- lib/beaker/host/windows/user.rb
|
304
|
+
- lib/beaker/host_prebuilt_steps.rb
|
304
305
|
- lib/beaker/hypervisor.rb
|
305
306
|
- lib/beaker/hypervisor/aixer.rb
|
306
307
|
- lib/beaker/hypervisor/blimper.rb
|
@@ -325,17 +326,12 @@ files:
|
|
325
326
|
- lib/beaker/result.rb
|
326
327
|
- lib/beaker/shared.rb
|
327
328
|
- lib/beaker/shared/error_handler.rb
|
328
|
-
- lib/beaker/shared/
|
329
|
+
- lib/beaker/shared/host_role_parser.rb
|
329
330
|
- lib/beaker/shared/repetition.rb
|
330
331
|
- lib/beaker/shared/timed.rb
|
331
332
|
- lib/beaker/ssh_connection.rb
|
332
333
|
- lib/beaker/test_case.rb
|
333
334
|
- lib/beaker/test_suite.rb
|
334
|
-
- lib/beaker/utils.rb
|
335
|
-
- lib/beaker/utils/ntp_control.rb
|
336
|
-
- lib/beaker/utils/repo_control.rb
|
337
|
-
- lib/beaker/utils/setup_helper.rb
|
338
|
-
- lib/beaker/utils/validator.rb
|
339
335
|
- lib/beaker/version.rb
|
340
336
|
- spec/beaker/answers_spec.rb
|
341
337
|
- spec/beaker/cli_spec.rb
|
@@ -348,10 +344,12 @@ files:
|
|
348
344
|
- spec/beaker/dsl/structure_spec.rb
|
349
345
|
- spec/beaker/dsl/wrappers_spec.rb
|
350
346
|
- spec/beaker/host/windows/group_spec.rb
|
347
|
+
- spec/beaker/host_prebuilt_steps_spec.rb
|
351
348
|
- spec/beaker/host_spec.rb
|
352
349
|
- spec/beaker/hypervisor/aixer_spec.rb
|
353
350
|
- spec/beaker/hypervisor/blimper_spec.rb
|
354
351
|
- spec/beaker/hypervisor/fusion_spec.rb
|
352
|
+
- spec/beaker/hypervisor/google_compute.rb
|
355
353
|
- spec/beaker/hypervisor/hypervisor_spec.rb
|
356
354
|
- spec/beaker/hypervisor/solaris_spec.rb
|
357
355
|
- spec/beaker/hypervisor/vagrant_spec.rb
|
@@ -374,15 +372,11 @@ files:
|
|
374
372
|
- spec/beaker/platform_spec.rb
|
375
373
|
- spec/beaker/puppet_command_spec.rb
|
376
374
|
- spec/beaker/shared/error_handler_spec.rb
|
377
|
-
- spec/beaker/shared/
|
375
|
+
- spec/beaker/shared/host_role_parser_spec.rb
|
378
376
|
- spec/beaker/shared/repetition_spec.rb
|
379
377
|
- spec/beaker/ssh_connection_spec.rb
|
380
378
|
- spec/beaker/test_case_spec.rb
|
381
379
|
- spec/beaker/test_suite_spec.rb
|
382
|
-
- spec/beaker/utils/ntp_control_spec.rb
|
383
|
-
- spec/beaker/utils/repo_control_spec.rb
|
384
|
-
- spec/beaker/utils/setup_helper_spec.rb
|
385
|
-
- spec/beaker/utils/validator_spec.rb
|
386
380
|
- spec/helpers.rb
|
387
381
|
- spec/matchers.rb
|
388
382
|
- spec/mock_blimpy.rb
|
@@ -427,10 +421,12 @@ test_files:
|
|
427
421
|
- spec/beaker/dsl/structure_spec.rb
|
428
422
|
- spec/beaker/dsl/wrappers_spec.rb
|
429
423
|
- spec/beaker/host/windows/group_spec.rb
|
424
|
+
- spec/beaker/host_prebuilt_steps_spec.rb
|
430
425
|
- spec/beaker/host_spec.rb
|
431
426
|
- spec/beaker/hypervisor/aixer_spec.rb
|
432
427
|
- spec/beaker/hypervisor/blimper_spec.rb
|
433
428
|
- spec/beaker/hypervisor/fusion_spec.rb
|
429
|
+
- spec/beaker/hypervisor/google_compute.rb
|
434
430
|
- spec/beaker/hypervisor/hypervisor_spec.rb
|
435
431
|
- spec/beaker/hypervisor/solaris_spec.rb
|
436
432
|
- spec/beaker/hypervisor/vagrant_spec.rb
|
@@ -453,15 +449,11 @@ test_files:
|
|
453
449
|
- spec/beaker/platform_spec.rb
|
454
450
|
- spec/beaker/puppet_command_spec.rb
|
455
451
|
- spec/beaker/shared/error_handler_spec.rb
|
456
|
-
- spec/beaker/shared/
|
452
|
+
- spec/beaker/shared/host_role_parser_spec.rb
|
457
453
|
- spec/beaker/shared/repetition_spec.rb
|
458
454
|
- spec/beaker/ssh_connection_spec.rb
|
459
455
|
- spec/beaker/test_case_spec.rb
|
460
456
|
- spec/beaker/test_suite_spec.rb
|
461
|
-
- spec/beaker/utils/ntp_control_spec.rb
|
462
|
-
- spec/beaker/utils/repo_control_spec.rb
|
463
|
-
- spec/beaker/utils/setup_helper_spec.rb
|
464
|
-
- spec/beaker/utils/validator_spec.rb
|
465
457
|
- spec/helpers.rb
|
466
458
|
- spec/matchers.rb
|
467
459
|
- spec/mock_blimpy.rb
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
module Shared
|
3
|
-
module HostHandler
|
4
|
-
|
5
|
-
# NOTE: this code is shamelessly stolen from facter's 'domain' fact, but
|
6
|
-
# we don't have access to facter at this point in the run. Also, this
|
7
|
-
# utility method should perhaps be moved to a more central location in the
|
8
|
-
# framework.
|
9
|
-
def get_domain_name(host)
|
10
|
-
domain = nil
|
11
|
-
search = nil
|
12
|
-
resolv_conf = host.exec(Command.new("cat /etc/resolv.conf")).stdout
|
13
|
-
resolv_conf.each_line { |line|
|
14
|
-
if line =~ /^\s*domain\s+(\S+)/
|
15
|
-
domain = $1
|
16
|
-
elsif line =~ /^\s*search\s+(\S+)/
|
17
|
-
search = $1
|
18
|
-
end
|
19
|
-
}
|
20
|
-
return domain if domain
|
21
|
-
return search if search
|
22
|
-
end
|
23
|
-
|
24
|
-
def get_ip(host)
|
25
|
-
host.exec(Command.new("ip a|awk '/global/{print$2}' | cut -d/ -f1 | head -1")).stdout.chomp
|
26
|
-
end
|
27
|
-
|
28
|
-
def set_etc_hosts(host, etc_hosts)
|
29
|
-
host.exec(Command.new("echo '#{etc_hosts}' > /etc/hosts"))
|
30
|
-
end
|
31
|
-
|
32
|
-
def hosts_with_role(hosts, desired_role = nil)
|
33
|
-
hosts.select do |host|
|
34
|
-
desired_role.nil? or host['roles'].include?(desired_role.to_s)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def only_host_with_role(hosts, role)
|
39
|
-
a_host = hosts_with_role(hosts, role)
|
40
|
-
case
|
41
|
-
when a_host.length == 0
|
42
|
-
raise ArgumentError, "There should be one host with #{role} defined!"
|
43
|
-
when a_host.length > 1
|
44
|
-
host_string = ( a_host.map { |host| host.name } ).join( ', ')
|
45
|
-
raise ArgumentError, "There should be only one host with #{role} defined, but I found #{a_host.length} (#{host_string})"
|
46
|
-
end
|
47
|
-
a_host.first
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/beaker/utils.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
module Utils
|
3
|
-
class NTPControl
|
4
|
-
NTPSERVER = 'pool.ntp.org'
|
5
|
-
SLEEPWAIT = 5
|
6
|
-
TRIES = 5
|
7
|
-
def initialize(options, hosts)
|
8
|
-
@options = options.dup
|
9
|
-
@hosts = hosts
|
10
|
-
@logger = options[:logger]
|
11
|
-
end
|
12
|
-
|
13
|
-
def timesync
|
14
|
-
@logger.notify "Update system time sync"
|
15
|
-
@logger.notify "run ntpdate against NTP pool systems"
|
16
|
-
@hosts.each do |host|
|
17
|
-
if host['platform'].include? 'windows'
|
18
|
-
# The exit code of 5 is for Windows 2008 systems where the w32tm /register command
|
19
|
-
# is not actually necessary.
|
20
|
-
host.exec(Command.new("w32tm /register"), :acceptable_exit_codes => [0,5])
|
21
|
-
host.exec(Command.new("net start w32time"), :acceptable_exit_codes => [0,2])
|
22
|
-
host.exec(Command.new("w32tm /config /manualpeerlist:#{NTPSERVER} /syncfromflags:manual /update"))
|
23
|
-
host.exec(Command.new("w32tm /resync"))
|
24
|
-
@logger.notify "NTP date succeeded on #{host}"
|
25
|
-
else
|
26
|
-
case
|
27
|
-
when host['platform'] =~ /solaris-10/
|
28
|
-
ntp_command = "sleep 10 && ntpdate -w #{NTPSERVER}"
|
29
|
-
when host['platform'] =~ /sles-/
|
30
|
-
ntp_command = "sntp #{NTPSERVER}"
|
31
|
-
else
|
32
|
-
ntp_command = "ntpdate -t 20 #{NTPSERVER}"
|
33
|
-
end
|
34
|
-
success=false
|
35
|
-
try = 0
|
36
|
-
until try >= TRIES do
|
37
|
-
try += 1
|
38
|
-
if host.exec(Command.new(ntp_command), :acceptable_exit_codes => (0..255)).exit_code == 0
|
39
|
-
success=true
|
40
|
-
break
|
41
|
-
end
|
42
|
-
sleep SLEEPWAIT
|
43
|
-
end
|
44
|
-
if success
|
45
|
-
@logger.notify "NTP date succeeded on #{host} after #{try} tries"
|
46
|
-
else
|
47
|
-
raise "NTP date was not successful after #{try} tries"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
rescue => e
|
52
|
-
report_and_raise(@logger, e, "timesync (--ntp)")
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
module Beaker
|
2
|
-
module Utils
|
3
|
-
class RepoControl
|
4
|
-
|
5
|
-
APT_CFG = %q{ Acquire::http::Proxy "http://proxy.puppetlabs.net:3128/"; }
|
6
|
-
IPS_PKG_REPO="http://solaris-11-internal-repo.delivery.puppetlabs.net"
|
7
|
-
|
8
|
-
def initialize(options, hosts)
|
9
|
-
@options = options.dup
|
10
|
-
@hosts = hosts
|
11
|
-
@logger = options[:logger]
|
12
|
-
@debug_opt = options[:debug] ? 'vh' : ''
|
13
|
-
end
|
14
|
-
|
15
|
-
def epel_info_for! host
|
16
|
-
version = host['platform'].match(/el-(\d+)/)[1]
|
17
|
-
if version == '6'
|
18
|
-
pkg = 'epel-release-6-8.noarch.rpm'
|
19
|
-
url = "http://mirror.itc.virginia.edu/fedora-epel/6/i386/#{pkg}"
|
20
|
-
elsif version == '5'
|
21
|
-
pkg = 'epel-release-5-4.noarch.rpm'
|
22
|
-
url = "http://archive.linux.duke.edu/pub/epel/5/i386/#{pkg}"
|
23
|
-
else
|
24
|
-
raise "I don't understand your platform description!"
|
25
|
-
end
|
26
|
-
return url
|
27
|
-
end
|
28
|
-
|
29
|
-
def apt_get_update host
|
30
|
-
if host[:platform] =~ /(ubuntu)|(debian)/
|
31
|
-
host.exec(Command.new("apt-get -y -f -m update"))
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def copy_file_to_remote(host, file_path, file_content)
|
36
|
-
Tempfile.open 'beaker' do |tempfile|
|
37
|
-
File.open(tempfile.path, 'w') {|file| file.puts file_content }
|
38
|
-
|
39
|
-
host.do_scp_to(tempfile.path, file_path, @options)
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
def proxy_config
|
45
|
-
# repo_proxy
|
46
|
-
# supports ubuntu, debian and solaris platforms
|
47
|
-
@hosts.each do |host|
|
48
|
-
case
|
49
|
-
when host['platform'] =~ /ubuntu/
|
50
|
-
host.exec(Command.new("if test -f /etc/apt/apt.conf; then mv /etc/apt/apt.conf /etc/apt/apt.conf.bk; fi"))
|
51
|
-
copy_file_to_remote(host, '/etc/apt/apt.conf', APT_CFG)
|
52
|
-
apt_get_update(host)
|
53
|
-
when host['platform'] =~ /debian/
|
54
|
-
host.exec(Command.new("if test -f /etc/apt/apt.conf; then mv /etc/apt/apt.conf /etc/apt/apt.conf.bk; fi"))
|
55
|
-
copy_file_to_remote(host, '/etc/apt/apt.conf', APT_CFG)
|
56
|
-
apt_get_update(host)
|
57
|
-
when host['platform'] =~ /solaris-11/
|
58
|
-
host.exec(Command.new("/usr/bin/pkg unset-publisher solaris || :"))
|
59
|
-
host.exec(Command.new("/usr/bin/pkg set-publisher -g %s solaris" % IPS_PKG_REPO))
|
60
|
-
else
|
61
|
-
@logger.debug "#{host}: repo proxy configuration not modified"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
rescue => e
|
65
|
-
report_and_raise(@logger, e, "proxy_config")
|
66
|
-
end
|
67
|
-
|
68
|
-
def add_el_extras
|
69
|
-
#add_el_extras
|
70
|
-
#only supports el-* platforms
|
71
|
-
@hosts.each do |host|
|
72
|
-
case
|
73
|
-
when host['platform'] =~ /el-(5|6)/
|
74
|
-
result = host.exec(Command.new('rpm -qa | grep epel-release'), :acceptable_exit_codes => [0,1])
|
75
|
-
if result.exit_code == 1
|
76
|
-
url = epel_info_for! host
|
77
|
-
host.exec(Command.new("rpm -i#{@debug_opt} #{url}"))
|
78
|
-
host.exec(Command.new('yum clean all && yum makecache'))
|
79
|
-
end
|
80
|
-
else
|
81
|
-
@logger.debug "#{host}: package repo configuration not modified"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
rescue => e
|
85
|
-
report_and_raise(@logger, e, "add_repos")
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|