Skip to content

Commit e813f06

Browse files
runwaldarshuSean OMeara
authored and
Sean OMeara
committed
Supporting version and action configuration for mysql package
Signed-off-by: Sean OMeara <[email protected]>
1 parent 80cba64 commit e813f06

File tree

11 files changed

+256
-5
lines changed

11 files changed

+256
-5
lines changed

.rubocop.yml

+8-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,12 @@ PerceivedComplexity:
2525
CyclomaticComplexity:
2626
Enabled: false
2727

28+
PerceivedComplexity:
29+
Enabled: false
30+
2831
Style/FileName:
29-
Enabled: false
32+
Enabled: false
33+
34+
AllCops:
35+
Exclude:
36+
- 'Guardfile'

attributes/default.rb

+4
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,7 @@
2020

2121
# port
2222
default['mysql']['port'] = '3306'
23+
24+
# server package version and action
25+
default['mysql']['server_package_version'] = nil
26+
default['mysql']['server_package_action'] = 'install'

libraries/provider_mysql_service_fedora.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ def whyrun_supported?
1616

1717
action :create do
1818
package new_resource.parsed_package_name do
19-
action :install
19+
action new_resource.parsed_package_action
20+
version new_resource.parsed_package_version
2021
end
2122

2223
directory include_dir do

libraries/provider_mysql_service_rhel.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ def whyrun_supported?
3030
end
3131

3232
package new_resource.parsed_package_name do
33-
action :install
33+
action new_resource.parsed_package_action
34+
version new_resource.parsed_package_version
3435
end
3536

3637
directory include_dir do

libraries/provider_mysql_service_ubuntu.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ def whyrun_supported?
4646
# package automatically initializes database and starts service.
4747
# ... because that's totally super convenient.
4848
package new_resource.parsed_package_name do
49-
action :install
49+
action new_resource.parsed_package_action
50+
version new_resource.parsed_package_version
5051
end
5152

5253
# service

libraries/resource_mysql_service.rb

+10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class MysqlService < Chef::Resource::LWRPBase
2121
attribute :service_name, :kind_of => String, :name_attribute => true
2222
attribute :template_source, :kind_of => String, :default => nil
2323
attribute :version, :kind_of => String, :default => nil
24+
attribute :package_version, :kind_of => String, :default => nil
25+
attribute :package_action, :kind_of => String, :default => nil
2426
end
2527

2628
include Opscode::Mysql::Helpers
@@ -52,6 +54,14 @@ def parsed_package_name
5254
)
5355
end
5456

57+
def parsed_package_version
58+
return package_version if package_version
59+
end
60+
61+
def parsed_package_action
62+
return package_action if package_action
63+
end
64+
5565
def parsed_port
5666
return port if port
5767
end

recipes/server.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
remove_anonymous_users node['mysql']['remove_anonymous_users']
2929
remove_test_database node['mysql']['remove_test_database']
3030
root_network_acl node['mysql']['root_network_acl']
31-
version node['mysql']['version']
31+
package_version node['mysql']['server_package_version']
32+
package_action node['mysql']['server_package_action']
3233
action :create
3334
end

spec/unit/mysql_server/fedora/19/custom_stepinto_spec.rb

+74
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,78 @@
139139
expect(fedora_19_custom_run).to write_log('notify reload')
140140
end
141141
end
142+
143+
context 'when using non-default package_version parameter' do
144+
let(:package_version) { '5.5.35-1.el6' }
145+
let(:fedora_19_custom_run) do
146+
ChefSpec::Runner.new(
147+
:step_into => 'mysql_service',
148+
:platform => 'fedora',
149+
:version => '19'
150+
) do |node|
151+
node.set['mysql']['service_name'] = 'fedora_19_custom'
152+
node.set['mysql']['port'] = '3308'
153+
node.set['mysql']['data_dir'] = '/data'
154+
node.set['mysql']['template_source'] = 'custom.erb'
155+
node.set['mysql']['allow_remote_root'] = true
156+
node.set['mysql']['remove_anonymous_users'] = false
157+
node.set['mysql']['remove_test_database'] = false
158+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
159+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
160+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
161+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
162+
node.set['mysql']['server_package_version'] = package_version
163+
end.converge('mysql_test_custom::server')
164+
end
165+
166+
it 'creates mysql_service[fedora_19_custom] with correct package_version' do
167+
expect(fedora_19_custom_run).to create_mysql_service('fedora_19_custom').with(
168+
:parsed_version => '5.5',
169+
:parsed_port => '3308',
170+
:parsed_data_dir => '/data',
171+
:parsed_package_version => package_version
172+
)
173+
end
174+
175+
it 'steps into mysql_service and installs package[community-mysql-server]' do
176+
expect(fedora_19_custom_run).to install_package('community-mysql-server').with(:version => package_version)
177+
end
178+
end
179+
180+
context 'when using non-default package_action parameter' do
181+
let(:package_action) { 'upgrade' }
182+
let(:fedora_19_custom_run) do
183+
ChefSpec::Runner.new(
184+
:step_into => 'mysql_service',
185+
:platform => 'fedora',
186+
:version => '19'
187+
) do |node|
188+
node.set['mysql']['service_name'] = 'fedora_19_custom'
189+
node.set['mysql']['port'] = '3308'
190+
node.set['mysql']['data_dir'] = '/data'
191+
node.set['mysql']['template_source'] = 'custom.erb'
192+
node.set['mysql']['allow_remote_root'] = true
193+
node.set['mysql']['remove_anonymous_users'] = false
194+
node.set['mysql']['remove_test_database'] = false
195+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
196+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
197+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
198+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
199+
node.set['mysql']['server_package_action'] = package_action
200+
end.converge('mysql_test_custom::server')
201+
end
202+
203+
it 'creates mysql_service[fedora_19_custom] with correct package_action' do
204+
expect(fedora_19_custom_run).to create_mysql_service('fedora_19_custom').with(
205+
:parsed_version => '5.5',
206+
:parsed_port => '3308',
207+
:parsed_data_dir => '/data',
208+
:parsed_package_action => package_action
209+
)
210+
end
211+
212+
it 'steps into mysql_service and upgrades package[community-mysql-server]' do
213+
expect(fedora_19_custom_run).to upgrade_package('community-mysql-server')
214+
end
215+
end
142216
end

spec/unit/mysql_server/rhel/5/5_5_stepinto_spec.rb

+76
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,80 @@
144144
expect(centos_5_8_custom3_run).to write_log('notify reload')
145145
end
146146
end
147+
148+
context 'when using non-default package_version parameter' do
149+
let(:package_version) { '5.5.35-1.el6' }
150+
let(:centos_5_8_custom3_run) do
151+
ChefSpec::Runner.new(
152+
:step_into => 'mysql_service',
153+
:platform => 'centos',
154+
:version => '5.8'
155+
) do |node|
156+
node.set['mysql']['service_name'] = 'centos_5_8_custom3'
157+
node.set['mysql']['version'] = '5.5'
158+
node.set['mysql']['port'] = '3308'
159+
node.set['mysql']['data_dir'] = '/data'
160+
node.set['mysql']['template_source'] = 'custom.erb'
161+
node.set['mysql']['allow_remote_root'] = true
162+
node.set['mysql']['remove_anonymous_users'] = false
163+
node.set['mysql']['remove_test_database'] = false
164+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
165+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
166+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
167+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
168+
node.set['mysql']['server_package_version'] = package_version
169+
end.converge('mysql_test_custom::server')
170+
end
171+
172+
it 'creates mysql_service[centos_5_8_custom3] with correct package_version' do
173+
expect(centos_5_8_custom3_run).to create_mysql_service('centos_5_8_custom3').with(
174+
:version => '5.5',
175+
:port => '3308',
176+
:data_dir => '/data',
177+
:package_version => package_version
178+
)
179+
end
180+
181+
it 'steps into mysql_service and installs package[mysql55-mysql-server]' do
182+
expect(centos_5_8_custom3_run).to install_package('mysql55-mysql-server').with(:version => package_version)
183+
end
184+
end
185+
186+
context 'when using non-default package_action parameter' do
187+
let(:package_action) { 'upgrade' }
188+
let(:centos_5_8_custom3_run) do
189+
ChefSpec::Runner.new(
190+
:step_into => 'mysql_service',
191+
:platform => 'centos',
192+
:version => '5.8'
193+
) do |node|
194+
node.set['mysql']['service_name'] = 'centos_5_8_custom3'
195+
node.set['mysql']['version'] = '5.5'
196+
node.set['mysql']['port'] = '3308'
197+
node.set['mysql']['data_dir'] = '/data'
198+
node.set['mysql']['template_source'] = 'custom.erb'
199+
node.set['mysql']['allow_remote_root'] = true
200+
node.set['mysql']['remove_anonymous_users'] = false
201+
node.set['mysql']['remove_test_database'] = false
202+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
203+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
204+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
205+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
206+
node.set['mysql']['server_package_action'] = package_action
207+
end.converge('mysql_test_custom::server')
208+
end
209+
210+
it 'creates mysql_service[centos_5_8_custom3] with correct package_action' do
211+
expect(centos_5_8_custom3_run).to create_mysql_service('centos_5_8_custom3').with(
212+
:version => '5.5',
213+
:port => '3308',
214+
:data_dir => '/data',
215+
:package_action => package_action
216+
)
217+
end
218+
219+
it 'steps into mysql_service and upgrades package[mysql55-mysql-server]' do
220+
expect(centos_5_8_custom3_run).to upgrade_package('mysql55-mysql-server')
221+
end
222+
end
147223
end

spec/unit/mysql_server/ubuntu/10.04/custom_stepinto_spec.rb

+74
Original file line numberDiff line numberDiff line change
@@ -196,4 +196,78 @@
196196
expect(ubuntu_10_04_custom_run).to write_log('notify reload')
197197
end
198198
end
199+
200+
context 'when using non-default package_version parameter' do
201+
let(:package_version) { '5.1.73-1.el6' }
202+
let(:ubuntu_10_04_custom_run) do
203+
ChefSpec::Runner.new(
204+
:step_into => 'mysql_service',
205+
:platform => 'ubuntu',
206+
:version => '10.04'
207+
) do |node|
208+
node.set['mysql']['service_name'] = 'ubuntu_10_04_custom'
209+
node.set['mysql']['port'] = '3308'
210+
node.set['mysql']['data_dir'] = '/data'
211+
node.set['mysql']['template_source'] = 'custom.erb'
212+
node.set['mysql']['allow_remote_root'] = true
213+
node.set['mysql']['remove_anonymous_users'] = false
214+
node.set['mysql']['remove_test_database'] = false
215+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
216+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
217+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
218+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
219+
node.set['mysql']['server_package_version'] = package_version
220+
end.converge('mysql_test_custom::server')
221+
end
222+
223+
it 'creates mysql_service[ubuntu_10_04_custom] with correct package_version' do
224+
expect(ubuntu_10_04_custom_run).to create_mysql_service('ubuntu_10_04_custom').with(
225+
:parsed_version => '5.1',
226+
:parsed_port => '3308',
227+
:parsed_data_dir => '/data',
228+
:parsed_package_version => package_version
229+
)
230+
end
231+
232+
it 'steps into mysql_service and installs package[mysql-server-5.1]' do
233+
expect(ubuntu_10_04_custom_run).to install_package('mysql-server-5.1').with(:version => package_version)
234+
end
235+
end
236+
237+
context 'when using non-default package_action parameter' do
238+
let(:package_action) { 'upgrade' }
239+
let(:ubuntu_10_04_custom_run) do
240+
ChefSpec::Runner.new(
241+
:step_into => 'mysql_service',
242+
:platform => 'ubuntu',
243+
:version => '10.04'
244+
) do |node|
245+
node.set['mysql']['service_name'] = 'ubuntu_10_04_custom'
246+
node.set['mysql']['port'] = '3308'
247+
node.set['mysql']['data_dir'] = '/data'
248+
node.set['mysql']['template_source'] = 'custom.erb'
249+
node.set['mysql']['allow_remote_root'] = true
250+
node.set['mysql']['remove_anonymous_users'] = false
251+
node.set['mysql']['remove_test_database'] = false
252+
node.set['mysql']['root_network_acl'] = ['10.9.8.7/6', '1.2.3.4/5']
253+
node.set['mysql']['server_root_password'] = 'YUNOSETPASSWORD'
254+
node.set['mysql']['server_debian_password'] = 'postinstallscriptsarestupid'
255+
node.set['mysql']['server_repl_password'] = 'syncmebabyonemoretime'
256+
node.set['mysql']['server_package_action'] = package_action
257+
end.converge('mysql_test_custom::server')
258+
end
259+
260+
it 'creates mysql_service[ubuntu_10_04_custom] with correct package_action' do
261+
expect(ubuntu_10_04_custom_run).to create_mysql_service('ubuntu_10_04_custom').with(
262+
:parsed_version => '5.1',
263+
:parsed_port => '3308',
264+
:parsed_data_dir => '/data',
265+
:parsed_package_action => package_action
266+
)
267+
end
268+
269+
it 'steps into mysql_service and upgrades package[mysql-server-5.1]' do
270+
expect(ubuntu_10_04_custom_run).to upgrade_package('mysql-server-5.1')
271+
end
272+
end
199273
end

test/fixtures/cookbooks/mysql_test_custom/recipes/server.rb

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
server_root_password node['mysql']['server_root_password']
1212
server_debian_password node['mysql']['server_debian_password']
1313
server_repl_password node['mysql']['server_repl_password']
14+
package_version node['mysql']['server_package_version']
15+
package_action node['mysql']['server_package_action']
1416
action :create
1517
end
1618

0 commit comments

Comments
 (0)