Make nova-compute-{kvm,qemu} packages overridable

To keep the "we define platform choices in the attributes" spirit, the
nova-compute "support packages" for ubuntu should be overridable, too.

This change makes them behave just like  to the
"#{db_type}_python_packages" in openstack-compute::nova-common.

Change-Id: Id38169121e52e0dc8be808c8822db55069e65e48
This commit is contained in:
Stephan Renatus 2014-01-30 17:18:41 +01:00
parent 8798ba7c36
commit e9be12597d
3 changed files with 45 additions and 10 deletions

View File

@ -268,6 +268,8 @@ when 'fedora', 'redhat', 'centos', 'suse' # :pragma-foodcritic: ~FC024 - won't f
'compute_api_metadata_packages' => ['openstack-nova-api'],
'compute_api_metadata_service' => 'openstack-nova-api',
'compute_compute_packages' => ['openstack-nova-compute'],
'qemu_compute_packages' => [],
'kvm_compute_packages' => [],
'compute_compute_service' => 'openstack-nova-compute',
'compute_network_packages' => ['iptables', 'openstack-nova-network'],
'compute_network_service' => 'openstack-nova-network',
@ -316,6 +318,8 @@ when 'ubuntu'
'compute_api_metadata_packages' => ['nova-api-metadata'],
'compute_api_metadata_service' => 'nova-api-metadata',
'compute_compute_packages' => ['nova-compute'],
'qemu_compute_packages' => ['nova-compute-qemu'],
'kvm_compute_packages' => ['nova-compute-kvm'],
'compute_compute_service' => 'nova-compute',
'compute_network_packages' => ['iptables', 'nova-network'],
'compute_network_service' => 'nova-network',

View File

@ -30,19 +30,18 @@ if node['openstack']['compute']['network']['service_type'] == 'nova'
end
platform_options = node['openstack']['compute']['platform']
# Note(maoy): Make sure compute_compute_packages is not a node object.
# so that this is compatible with chef 11 when being changed later.
compute_compute_packages = Array.new(platform_options['compute_compute_packages'])
if platform?(%w(ubuntu))
if node['openstack']['compute']['libvirt']['virt_type'] == 'kvm'
compute_compute_packages << 'nova-compute-kvm'
elsif node['openstack']['compute']['libvirt']['virt_type'] == 'qemu'
compute_compute_packages << 'nova-compute-qemu'
platform_options['compute_compute_packages'].each do |pkg|
package pkg do
options platform_options['package_overrides']
action :upgrade
end
end
compute_compute_packages.each do |pkg|
virt_type = node['openstack']['compute']['libvirt']['virt_type']
platform_options["#{virt_type}_compute_packages"].each do |pkg|
package pkg do
options platform_options['package_overrides']

View File

@ -47,7 +47,17 @@ describe 'openstack-compute::compute' do
expect(chef_run).not_to upgrade_package 'nova-compute-qemu'
end
it "installs qemu when virt_type is 'qemu'" do
it 'honors the package options platform overrides for kvm' do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['compute']['libvirt']['virt_type'] = 'kvm'
node.set['openstack']['compute']['platform']['package_overrides'] = '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes'
chef_run.converge 'openstack-compute::compute'
expect(chef_run).to upgrade_package('nova-compute-kvm').with(options: '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes')
end
it 'installs qemu when virt_type is qemu' do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu'
@ -57,6 +67,28 @@ describe 'openstack-compute::compute' do
expect(chef_run).not_to upgrade_package 'nova-compute-kvm'
end
it 'honors the package options platform overrides for qemu' do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu'
node.set['openstack']['compute']['platform']['package_overrides'] = '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes'
chef_run.converge 'openstack-compute::compute'
expect(chef_run).to upgrade_package('nova-compute-qemu').with(options: '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes')
end
%w{qemu kvm}.each do |virt_type|
it "honors the package name platform overrides for #{virt_type}" do
chef_run = ::ChefSpec::Runner.new ::UBUNTU_OPTS
node = chef_run.node
node.set['openstack']['compute']['libvirt']['virt_type'] = virt_type
node.set['openstack']['compute']['platform']["#{virt_type}_compute_packages"] = ["my-nova-#{virt_type}"]
chef_run.converge 'openstack-compute::compute'
expect(chef_run).to upgrade_package("my-nova-#{virt_type}")
end
end
describe 'nova-compute.conf' do
before do
@file = @chef_run.cookbook_file '/etc/nova/nova-compute.conf'