beaker-puppet 1.29.0 → 2.0.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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +28 -7
  5. data/.rubocop.yml +5 -0
  6. data/.rubocop_todo.yml +842 -0
  7. data/CHANGELOG.md +31 -0
  8. data/Gemfile +5 -20
  9. data/Rakefile +64 -169
  10. data/acceptance/config/acceptance-options.rb +3 -3
  11. data/acceptance/config/gem/acceptance-options.rb +8 -8
  12. data/acceptance/config/git/acceptance-options.rb +8 -8
  13. data/acceptance/config/pkg/acceptance-options.rb +7 -7
  14. data/acceptance/pre_suite/gem/install.rb +6 -6
  15. data/acceptance/pre_suite/git/install.rb +22 -22
  16. data/acceptance/pre_suite/pkg/install.rb +3 -3
  17. data/acceptance/tests/backwards_compatible.rb +6 -7
  18. data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
  19. data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
  20. data/acceptance/tests/install_smoke_test.rb +5 -4
  21. data/acceptance/tests/stub_host.rb +11 -10
  22. data/acceptance/tests/web_helpers_test.rb +11 -10
  23. data/beaker-puppet.gemspec +16 -23
  24. data/bin/beaker-puppet +2 -4
  25. data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
  26. data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
  27. data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
  28. data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
  29. data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
  30. data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
  31. data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
  32. data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
  33. data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
  34. data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
  35. data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
  36. data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
  37. data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
  38. data/lib/beaker-puppet/version.rb +1 -1
  39. data/lib/beaker-puppet/wrappers.rb +13 -14
  40. data/lib/beaker-puppet.rb +4 -5
  41. data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
  42. data/setup/common/000-delete-puppet-when-none.rb +2 -4
  43. data/setup/common/003_solaris_cert_fix.rb +74 -70
  44. data/setup/common/005_redhat_subscription_fix.rb +3 -2
  45. data/setup/common/011_Install_Puppet_Server.rb +7 -9
  46. data/setup/common/012_Finalize_Installs.rb +5 -5
  47. data/setup/common/025_StopFirewall.rb +1 -1
  48. data/setup/common/030_StopSssd.rb +2 -2
  49. data/setup/common/040_ValidateSignCert.rb +10 -12
  50. data/setup/common/045_EnsureMasterStarted.rb +2 -2
  51. data/setup/gem/010_GemInstall.rb +5 -4
  52. data/setup/git/000_EnvSetup.rb +48 -48
  53. data/setup/git/010_TestSetup.rb +13 -12
  54. data/setup/git/020_PuppetUserAndGroup.rb +3 -2
  55. data/setup/git/060_InstallModules.rb +14 -14
  56. data/setup/git/070_InstallCACerts.rb +82 -82
  57. data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
  58. data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
  59. data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
  60. data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
  61. data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
  62. data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
  63. data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
  64. data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
  65. data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
  66. data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
  67. data/spec/beaker-puppet/wrappers_spec.rb +10 -10
  68. data/spec/helpers.rb +85 -91
  69. data/tasks/ci.rake +171 -179
  70. metadata +33 -62
  71. data/setup/common/020_InstallCumulusModules.rb +0 -13
  72. data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
  73. data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
data/spec/helpers.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module TestFileHelpers
2
- def create_files file_array
2
+ def create_files(file_array)
3
3
  file_array.each do |f|
4
4
  FileUtils.mkdir_p File.dirname(f)
5
5
  FileUtils.touch f
@@ -7,137 +7,131 @@ module TestFileHelpers
7
7
  end
8
8
 
9
9
  def fog_file_contents
10
- { :default => { :aws_access_key_id => "IMANACCESSKEY",
11
- :aws_secret_access_key => "supersekritkey",
12
- :aix_hypervisor_server => "aix_hypervisor.labs.net",
13
- :aix_hypervisor_username => "aixer",
14
- :aix_hypervisor_keyfile => "/Users/user/.ssh/id_rsa-acceptance",
15
- :solaris_hypervisor_server => "solaris_hypervisor.labs.net",
16
- :solaris_hypervisor_username => "harness",
17
- :solaris_hypervisor_keyfile => "/Users/user/.ssh/id_rsa-old.private",
18
- :solaris_hypervisor_vmpath => "rpoooool/zs",
19
- :solaris_hypervisor_snappaths => ["rpoooool/USER/z0"],
20
- :vsphere_server => "vsphere.labs.net",
21
- :vsphere_username => "vsphere@labs.com",
22
- :vsphere_password => "supersekritpassword"} }
10
+ { default: { aws_access_key_id: 'IMANACCESSKEY',
11
+ aws_secret_access_key: 'supersekritkey',
12
+ aix_hypervisor_server: 'aix_hypervisor.labs.net',
13
+ aix_hypervisor_username: 'aixer',
14
+ aix_hypervisor_keyfile: '/Users/user/.ssh/id_rsa-acceptance',
15
+ solaris_hypervisor_server: 'solaris_hypervisor.labs.net',
16
+ solaris_hypervisor_username: 'harness',
17
+ solaris_hypervisor_keyfile: '/Users/user/.ssh/id_rsa-old.private',
18
+ solaris_hypervisor_vmpath: 'rpoooool/zs',
19
+ solaris_hypervisor_snappaths: ['rpoooool/USER/z0'],
20
+ vsphere_server: 'vsphere.labs.net',
21
+ vsphere_username: 'vsphere@labs.com',
22
+ vsphere_password: 'supersekritpassword', } }
23
23
  end
24
-
25
24
  end
26
25
 
27
26
  module HostHelpers
28
- HOST_DEFAULTS = { :platform => 'unix',
29
- :roles => ['agent'],
30
- :snapshot => 'snap',
31
- :ip => 'default.ip.address',
32
- :private_ip => 'private.ip.address',
33
- :dns_name => 'default.box.tld',
34
- :box => 'default_box_name',
35
- :box_url => 'http://default.box.url',
36
- :image => 'default_image',
37
- :flavor => 'm1.large',
38
- :user_data => '#cloud-config\nmanage_etc_hosts: true\nfinal_message: "The host is finally up!"'
39
- }
40
-
41
- HOST_NAME = "vm%d"
42
- HOST_SNAPSHOT = "snapshot%d"
43
- HOST_IP = "ip.address.for.%s"
44
- HOST_BOX = "vm2%s_of_my_box"
45
- HOST_BOX_URL = "http://address.for.my.box.%s"
46
- HOST_DNS_NAME = "%s.box.tld"
47
- HOST_TEMPLATE = "%s_has_a_template"
48
- HOST_PRIVATE_IP = "private.ip.for.%s"
27
+ HOST_DEFAULTS = { platform: 'unix',
28
+ roles: ['agent'],
29
+ snapshot: 'snap',
30
+ ip: 'default.ip.address',
31
+ private_ip: 'private.ip.address',
32
+ dns_name: 'default.box.tld',
33
+ box: 'default_box_name',
34
+ box_url: 'http://default.box.url',
35
+ image: 'default_image',
36
+ flavor: 'm1.large',
37
+ user_data: '#cloud-config\nmanage_etc_hosts: true\nfinal_message: "The host is finally up!"', }
38
+
39
+ HOST_NAME = 'vm%d'
40
+ HOST_SNAPSHOT = 'snapshot%d'
41
+ HOST_IP = 'ip.address.for.%s'
42
+ HOST_BOX = 'vm2%s_of_my_box'
43
+ HOST_BOX_URL = 'http://address.for.my.box.%s'
44
+ HOST_DNS_NAME = '%s.box.tld'
45
+ HOST_TEMPLATE = '%s_has_a_template'
46
+ HOST_PRIVATE_IP = 'private.ip.for.%s'
49
47
 
50
48
  def logger
51
- double( 'logger' ).as_null_object
49
+ double('logger').as_null_object
52
50
  end
53
51
 
54
52
  def make_opts
55
53
  opts = Beaker::Options::Presets.new
56
- opts.presets.merge( opts.env_vars ).merge( { :logger => logger,
57
- :host_config => 'sample.config',
58
- :type => nil,
59
- :pooling_api => 'http://vcloud.delivery.puppetlabs.net/',
60
- :datastore => 'instance0',
61
- :folder => 'Delivery/Quality Assurance/Staging/Dynamic',
62
- :resourcepool => 'delivery/Quality Assurance/Staging/Dynamic',
63
- :gce_project => 'beaker-compute',
64
- :gce_keyfile => '/path/to/keyfile.p12',
65
- :gce_password => 'notasecret',
66
- :gce_email => '12345678910@developer.gserviceaccount.com',
67
- :openstack_api_key => "P1as$w0rd",
68
- :openstack_username => "user",
69
- :openstack_auth_url => "http://openstack_hypervisor.labs.net:5000/v2.0/tokens",
70
- :openstack_tenant => "testing",
71
- :openstack_network => "testing",
72
- :openstack_keyname => "nopass",
73
- :floating_ip_pool => "my_pool",
74
- :security_group => ['my_sg', 'default'] } )
54
+ opts.presets.merge(opts.env_vars).merge({ logger: logger,
55
+ host_config: 'sample.config',
56
+ type: nil,
57
+ pooling_api: 'http://vcloud.delivery.puppetlabs.net/',
58
+ datastore: 'instance0',
59
+ folder: 'Delivery/Quality Assurance/Staging/Dynamic',
60
+ resourcepool: 'delivery/Quality Assurance/Staging/Dynamic',
61
+ gce_project: 'beaker-compute',
62
+ gce_keyfile: '/path/to/keyfile.p12',
63
+ gce_password: 'notasecret',
64
+ gce_email: '12345678910@developer.gserviceaccount.com',
65
+ openstack_api_key: 'P1as$w0rd',
66
+ openstack_username: 'user',
67
+ openstack_auth_url: 'http://openstack_hypervisor.labs.net:5000/v2.0/tokens',
68
+ openstack_tenant: 'testing',
69
+ openstack_network: 'testing',
70
+ openstack_keyname: 'nopass',
71
+ floating_ip_pool: 'my_pool',
72
+ security_group: %w[my_sg default], })
75
73
  end
76
74
 
77
- def generate_result (name, opts )
78
- result = double( 'result' )
75
+ def generate_result(name, opts)
76
+ result = double('result')
79
77
  stdout = opts.has_key?(:stdout) ? opts[:stdout] : name
80
78
  stderr = opts.has_key?(:stderr) ? opts[:stderr] : name
81
- exit_code = opts.has_key?(:exit_code) ? opts[:exit_code] : 0
79
+ exit_code = opts.has_key?(:exit_code) ? opts[:exit_code] : 0
82
80
  exit_code = [exit_code].flatten
83
- allow( result ).to receive( :stdout ).and_return( stdout )
84
- allow( result ).to receive( :stderr ).and_return( stderr )
85
- allow( result ).to receive( :exit_code ).and_return( *exit_code )
81
+ allow(result).to receive(:stdout).and_return(stdout)
82
+ allow(result).to receive(:stderr).and_return(stderr)
83
+ allow(result).to receive(:exit_code).and_return(*exit_code)
86
84
  result
87
85
  end
88
86
 
89
- def make_host_opts name, opts
90
- make_opts.merge( { 'HOSTS' => { name => opts } } ).merge( opts )
87
+ def make_host_opts(name, opts)
88
+ make_opts.merge({ 'HOSTS' => { name => opts } }).merge(opts)
91
89
  end
92
90
 
93
- def make_host name, host_hash
91
+ def make_host(name, host_hash)
94
92
  host_hash = Beaker::Options::OptionsHash.new.merge(HOST_DEFAULTS.merge(host_hash))
95
93
 
96
- host = Beaker::Host.create( name, host_hash, make_opts)
94
+ host = Beaker::Host.create(name, host_hash, make_opts)
97
95
 
98
- allow(host).to receive( :exec ).and_return( generate_result( name, host_hash ) )
99
- allow(host).to receive( :close )
96
+ allow(host).to receive(:exec).and_return(generate_result(name, host_hash))
97
+ allow(host).to receive(:close)
100
98
  host
101
99
  end
102
100
 
103
- def make_hosts preset_opts = {}, amt = 3
101
+ def make_hosts(preset_opts = {}, amt = 3)
104
102
  hosts = []
105
103
  (1..amt).each do |num|
106
104
  name = HOST_NAME % num
107
- opts = { :snapshot => HOST_SNAPSHOT % num,
108
- :ip => HOST_IP % name,
109
- :private_ip => HOST_PRIVATE_IP % name,
110
- :dns_name => HOST_DNS_NAME % name,
111
- :template => HOST_TEMPLATE % name,
112
- :box => HOST_BOX % name,
113
- :box_url => HOST_BOX_URL % name }.merge( preset_opts )
105
+ opts = { snapshot: HOST_SNAPSHOT % num,
106
+ ip: HOST_IP % name,
107
+ private_ip: HOST_PRIVATE_IP % name,
108
+ dns_name: HOST_DNS_NAME % name,
109
+ template: HOST_TEMPLATE % name,
110
+ box: HOST_BOX % name,
111
+ box_url: HOST_BOX_URL % name, }.merge(preset_opts)
114
112
  hosts << make_host(name, opts)
115
113
  end
116
114
  hosts
117
115
  end
118
116
 
119
- def make_instance instance_data = {}
117
+ def make_instance(instance_data = {})
120
118
  OpenStruct.new instance_data
121
119
  end
122
-
123
120
  end
124
121
 
125
122
  module PlatformHelpers
126
-
127
- DEBIANPLATFORMS = ['debian',
128
- 'ubuntu',
129
- 'cumulus',
130
- 'huaweios']
131
-
123
+ DEBIANPLATFORMS = %w[debian
124
+ ubuntu
125
+ huaweios]
132
126
 
133
127
  FEDORASYSTEMD = (14..29).to_a.collect! { |i| "fedora-#{i}" }
134
128
 
135
- SYSTEMDPLATFORMS = ['el-7',
136
- 'centos-7',
137
- 'redhat-7',
138
- 'oracle-7',
139
- 'scientific-7',
140
- 'eos-7'].concat(FEDORASYSTEMD)
129
+ SYSTEMDPLATFORMS = %w[el-7
130
+ centos-7
131
+ redhat-7
132
+ oracle-7
133
+ scientific-7
134
+ eos-7].concat(FEDORASYSTEMD)
141
135
 
142
136
  FEDORASYSTEMV = (1..13).to_a.collect! { |i| "fedora-#{i}" }
143
137
 
@@ -147,5 +141,5 @@ module PlatformHelpers
147
141
  'redhat',
148
142
  'oracle',
149
143
  'scientific',
150
- 'eos'].concat(FEDORASYSTEMV)
144
+ 'eos',].concat(FEDORASYSTEMV)
151
145
  end