Allow packages to be updatable

In order for package updates to occur, package resources need to use
the upgrade action.  This is first phase of blueprint, to get some
consistency, next phase is to allow some update control.

Change-Id: I91d6a47c3b5787df65f78e3e86941de1fb28583d
Implements: blueprint allow-package-updates
This commit is contained in:
Mark Vanderwiel
2014-05-01 12:45:42 -05:00
parent 1343955c51
commit e8189f2fe9
34 changed files with 84 additions and 73 deletions

View File

@@ -1,6 +1,9 @@
# CHANGELOG for cookbook-openstack-compute # CHANGELOG for cookbook-openstack-compute
This file is used to list changes made in each version of cookbook-openstack-compute. This file is used to list changes made in each version of cookbook-openstack-compute.
## 9.1.1
* Fix package action to allow updates
## 9.1.0 ## 9.1.0
* Remove openrc, it's been moved to Common * Remove openrc, it's been moved to Common

View File

@@ -4,7 +4,7 @@ maintainer_email 'matt@opscode.com'
license 'Apache 2.0' license 'Apache 2.0'
description 'The OpenStack Compute service Nova.' description 'The OpenStack Compute service Nova.'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '9.1.0' version '9.1.1'
recipe 'openstack-compute::api-ec2', 'Installs AWS EC2 compatible API' recipe 'openstack-compute::api-ec2', 'Installs AWS EC2 compatible API'
recipe 'openstack-compute::api-metadata', 'Installs the nova metadata package' recipe 'openstack-compute::api-metadata', 'Installs the nova metadata package'

View File

@@ -25,7 +25,8 @@ platform_options = node['openstack']['compute']['platform']
platform_options['libvirt_packages'].each do |pkg| platform_options['libvirt_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
@@ -95,7 +96,8 @@ when 'suse'
when 'kvm' when 'kvm'
node['openstack']['compute']['platform']['kvm_packages'].each do |pkg| node['openstack']['compute']['platform']['kvm_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
execute 'loading kvm modules' do execute 'loading kvm modules' do
@@ -107,7 +109,8 @@ when 'suse'
when 'xen' when 'xen'
node['openstack']['compute']['platform']['xen_packages'].each do |pkg| node['openstack']['compute']['platform']['xen_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
update_boot_kernel_and_trigger_reboot('xen') update_boot_kernel_and_trigger_reboot('xen')
@@ -115,14 +118,16 @@ when 'suse'
when 'qemu' when 'qemu'
node['openstack']['compute']['platform']['kvm_packages'].each do |pkg| node['openstack']['compute']['platform']['kvm_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
when 'lxc' when 'lxc'
node['openstack']['compute']['platform']['lxc_packages'].each do |pkg| node['openstack']['compute']['platform']['lxc_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
service 'boot.cgroup' do service 'boot.cgroup' do

View File

@@ -28,7 +28,8 @@ platform_options = node['openstack']['compute']['platform']
platform_options['libvirt_ceph_packages'].each do |pkg| platform_options['libvirt_ceph_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end

View File

@@ -39,14 +39,16 @@ end
db_type = node['openstack']['db']['compute']['service_type'] db_type = node['openstack']['db']['compute']['service_type']
platform_options["#{db_type}_python_packages"].each do |pkg| platform_options["#{db_type}_python_packages"].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end
# required to run more than one consoleauth process # required to run more than one consoleauth process
platform_options['memcache_python_packages'].each do |pkg| platform_options['memcache_python_packages'].each do |pkg|
package pkg do package pkg do
action :install options platform_options['package_overrides']
action :upgrade
end end
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::api-ec2' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs ec2 api packages' do it 'upgrades ec2 api packages' do
expect(chef_run).to upgrade_package 'openstack-nova-api' expect(chef_run).to upgrade_package 'openstack-nova-api'
end end

View File

@@ -11,9 +11,9 @@ describe 'openstack-compute::api-ec2' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
include_examples 'expect_creates_nova_lock_dir' include_examples 'expect_creates_nova_lock_dir'
include_examples 'expect_installs_python_keystoneclient' include_examples 'expect_upgrades_python_keystoneclient'
it 'installs ec2 api packages' do it 'upgrade ec2 api package' do
expect(chef_run).to upgrade_package 'nova-api-ec2' expect(chef_run).to upgrade_package 'nova-api-ec2'
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::api-metadata' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs metadata api packages' do it 'upgrades metadata api packages' do
expect(chef_run).to upgrade_package 'openstack-nova-api' expect(chef_run).to upgrade_package 'openstack-nova-api'
end end

View File

@@ -11,9 +11,9 @@ describe 'openstack-compute::api-metadata' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
include_examples 'expect_creates_nova_lock_dir' include_examples 'expect_creates_nova_lock_dir'
include_examples 'expect_installs_python_keystoneclient' include_examples 'expect_upgrades_python_keystoneclient'
it 'installs metadata api packages' do it 'upgrades metadata api packages' do
expect(chef_run).to upgrade_package 'nova-api-metadata' expect(chef_run).to upgrade_package 'nova-api-metadata'
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::api-os-compute' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs openstack api packages' do it 'upgrades openstack api packages' do
expect(chef_run).to upgrade_package 'openstack-nova-api' expect(chef_run).to upgrade_package 'openstack-nova-api'
end end

View File

@@ -11,7 +11,7 @@ describe 'openstack-compute::api-os-compute' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
include_examples 'expect_creates_nova_lock_dir' include_examples 'expect_creates_nova_lock_dir'
include_examples 'expect_installs_python_keystoneclient' include_examples 'expect_upgrades_python_keystoneclient'
it 'creates the /var/cache/nova directory' do it 'creates the /var/cache/nova directory' do
expect(chef_run).to create_directory('/var/cache/nova').with( expect(chef_run).to create_directory('/var/cache/nova').with(
@@ -21,7 +21,7 @@ describe 'openstack-compute::api-os-compute' do
) )
end end
it 'installs openstack api packages' do it 'upgrades openstack api packages' do
expect(chef_run).to upgrade_package 'nova-api-os-compute' expect(chef_run).to upgrade_package 'nova-api-os-compute'
end end

View File

@@ -11,7 +11,7 @@ describe 'openstack-compute::client' do
runner.converge(described_recipe) runner.converge(described_recipe)
end end
it 'installs packages' do it 'upgrades python-novaclient package' do
expect(chef_run).to upgrade_package('python-novaclient') expect(chef_run).to upgrade_package('python-novaclient')
end end
end end

View File

@@ -11,7 +11,7 @@ describe 'openstack-compute::client' do
runner.converge(described_recipe) runner.converge(described_recipe)
end end
it 'installs packages' do it 'upgrades python-novaclient package' do
expect(chef_run).to upgrade_package('python-novaclient') expect(chef_run).to upgrade_package('python-novaclient')
end end
end end

View File

@@ -10,23 +10,23 @@ describe 'openstack-compute::compute' do
include_context 'compute_stubs' include_context 'compute_stubs'
it "does not install kvm when virt_type is 'kvm'" do it "does not upgrade kvm when virt_type is 'kvm'" do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'kvm' node.set['openstack']['compute']['libvirt']['virt_type'] = 'kvm'
expect(chef_run).to_not upgrade_package('nova-compute-kvm') expect(chef_run).to_not upgrade_package('nova-compute-kvm')
end end
it "does not install qemu when virt_type is 'qemu'" do it "does not upgrade qemu when virt_type is 'qemu'" do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu' node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu'
expect(chef_run).to_not upgrade_package('nova-compute-qemu') expect(chef_run).to_not upgrade_package('nova-compute-qemu')
end end
it 'installs nova compute packages' do it 'upgrades nova compute package' do
expect(chef_run).to upgrade_package('openstack-nova-compute') expect(chef_run).to upgrade_package('openstack-nova-compute')
end end
it 'installs nfs client packages' do it 'upgrades nfs client package' do
expect(chef_run).to upgrade_package('nfs-utils') expect(chef_run).to upgrade_package('nfs-utils')
expect(chef_run).to upgrade_package('nfs-utils-lib') expect(chef_run).to upgrade_package('nfs-utils-lib')
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::compute' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nfs client packages' do it 'upgrades nfs client packages' do
expect(chef_run).to upgrade_package 'nfs-utils' expect(chef_run).to upgrade_package 'nfs-utils'
expect(chef_run).not_to upgrade_package 'nfs-utils-lib' expect(chef_run).not_to upgrade_package 'nfs-utils-lib'
end end

View File

@@ -28,15 +28,15 @@ describe 'openstack-compute::compute' do
expect(chef_run).to include_recipe 'openstack-compute::network' expect(chef_run).to include_recipe 'openstack-compute::network'
end end
it 'installs nova compute packages' do it 'upgrades nova compute package' do
expect(chef_run).to upgrade_package 'nova-compute' expect(chef_run).to upgrade_package 'nova-compute'
end end
it 'installs nfs client packages' do it 'upgrades nfs client package' do
expect(chef_run).to upgrade_package 'nfs-common' expect(chef_run).to upgrade_package 'nfs-common'
end end
it "installs kvm when virt_type is 'kvm'" do it "upgrades kvm when virt_type is 'kvm'" do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'kvm' node.set['openstack']['compute']['libvirt']['virt_type'] = 'kvm'
expect(chef_run).to upgrade_package 'nova-compute-kvm' expect(chef_run).to upgrade_package 'nova-compute-kvm'
@@ -50,7 +50,7 @@ describe 'openstack-compute::compute' do
expect(chef_run).to upgrade_package('nova-compute-kvm').with(options: '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes') expect(chef_run).to upgrade_package('nova-compute-kvm').with(options: '-o Dpkg::Options::=\'--force-confold\' -o Dpkg::Options::=\'--force-confdef\' --force-yes')
end end
it 'installs qemu when virt_type is qemu' do it 'upgrades qemu when virt_type is qemu' do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu' node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu'
expect(chef_run).to upgrade_package 'nova-compute-qemu' expect(chef_run).to upgrade_package 'nova-compute-qemu'

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::conductor' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs conductor packages' do it 'upgrades conductor package' do
expect(chef_run).to upgrade_package 'openstack-nova-conductor' expect(chef_run).to upgrade_package 'openstack-nova-conductor'
end end

View File

@@ -11,7 +11,7 @@ describe 'openstack-compute::conductor' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
it 'installs conductor packages' do it 'upgrades conductor package' do
expect(chef_run).to upgrade_package 'nova-conductor' expect(chef_run).to upgrade_package 'nova-conductor'
end end

View File

@@ -10,8 +10,8 @@ describe 'openstack-compute::libvirt' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs libvirt packages' do it 'upgrades libvirt packages' do
expect(chef_run).to install_package 'libvirt' expect(chef_run).to upgrade_package 'libvirt'
end end
it 'creates libvirtd group and adds nova as a member' do it 'creates libvirtd group and adds nova as a member' do

View File

@@ -17,8 +17,8 @@ describe 'openstack-compute::libvirt' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs libvirt packages' do it 'upgrade libvirt package' do
expect(chef_run).to install_package 'libvirt' expect(chef_run).to upgrade_package 'libvirt'
end end
it 'starts libvirt' do it 'starts libvirt' do
@@ -33,19 +33,19 @@ describe 'openstack-compute::libvirt' do
expect(chef_run).not_to create_template('/etc/sysconfig/libvirtd') expect(chef_run).not_to create_template('/etc/sysconfig/libvirtd')
end end
it 'installs kvm packages' do it 'upgrade kvm package' do
expect(chef_run).to install_package 'kvm' expect(chef_run).to upgrade_package 'kvm'
end end
it 'installs qemu packages' do it 'upgrade kvm package' do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu' node.set['openstack']['compute']['libvirt']['virt_type'] = 'qemu'
expect(chef_run).to install_package 'kvm' expect(chef_run).to upgrade_package 'kvm'
end end
it 'installs xen packages' do it 'upgrade xen packages' do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'xen' node.set['openstack']['compute']['libvirt']['virt_type'] = 'xen'
['kernel-xen', 'xen', 'xen-tools'].each do |pkg| ['kernel-xen', 'xen', 'xen-tools'].each do |pkg|
expect(chef_run).to install_package pkg expect(chef_run).to upgrade_package pkg
end end
end end
@@ -54,8 +54,8 @@ describe 'openstack-compute::libvirt' do
node.set['openstack']['compute']['libvirt']['virt_type'] = 'lxc' node.set['openstack']['compute']['libvirt']['virt_type'] = 'lxc'
end end
it 'installs packages' do it 'upgrade lxc package' do
expect(chef_run).to install_package 'lxc' expect(chef_run).to upgrade_package 'lxc'
end end
it 'starts boot.cgroupslxc' do it 'starts boot.cgroupslxc' do

View File

@@ -18,8 +18,8 @@ describe 'openstack-compute::libvirt_rbd' do
expect(chef_run).to include_recipe('openstack-common::ceph_client') expect(chef_run).to include_recipe('openstack-common::ceph_client')
end end
it 'installs rbd packages' do it 'upgrades rbd packages' do
expect(chef_run).to install_package 'ceph-common' expect(chef_run).to upgrade_package 'ceph-common'
end end
describe 'if there was no secret with this uuid defined' do describe 'if there was no secret with this uuid defined' do

View File

@@ -10,8 +10,8 @@ describe 'openstack-compute::libvirt' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs libvirt packages' do it 'upgrades libvirt packages' do
expect(chef_run).to install_package 'libvirt-bin' expect(chef_run).to upgrade_package 'libvirt-bin'
end end
it 'does not create libvirtd group and add to nova' do it 'does not create libvirtd group and add to nova' do

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::network' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nova network packages' do it 'upgrades nova network packages' do
expect(chef_run).to upgrade_package('iptables') expect(chef_run).to upgrade_package('iptables')
expect(chef_run).to upgrade_package('openstack-nova-network') expect(chef_run).to upgrade_package('openstack-nova-network')
end end

View File

@@ -16,7 +16,7 @@ describe 'openstack-compute::network' do
node.set['openstack']['compute']['network']['service_type'] = 'nova' node.set['openstack']['compute']['network']['service_type'] = 'nova'
end end
it 'installs nova network packages' do it 'upgrades nova network packages' do
expect(chef_run).to upgrade_package('iptables') expect(chef_run).to upgrade_package('iptables')
expect(chef_run).to upgrade_package('nova-network') expect(chef_run).to upgrade_package('nova-network')
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::nova-cert' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nova cert packages' do it 'upgrades nova cert package' do
expect(chef_run).to upgrade_package 'openstack-nova-cert' expect(chef_run).to upgrade_package 'openstack-nova-cert'
end end

View File

@@ -11,7 +11,7 @@ describe 'openstack-compute::nova-cert' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
it 'installs nova cert packages' do it 'upgrades nova cert package' do
expect(chef_run).to upgrade_package('nova-cert') expect(chef_run).to upgrade_package('nova-cert')
end end

View File

@@ -10,23 +10,23 @@ describe 'openstack-compute::nova-common' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nova common packages' do it 'upgrades nova common package' do
expect(chef_run).to upgrade_package 'openstack-nova-common' expect(chef_run).to upgrade_package 'openstack-nova-common'
end end
it 'installs mysql python packages by default' do it 'upgrades mysql python package' do
expect(chef_run).to install_package 'MySQL-python' expect(chef_run).to upgrade_package 'MySQL-python'
end end
it 'installs db2 python packages if explicitly told' do it 'upgrades db2 python packages if explicitly told' do
node.set['openstack']['db']['compute']['service_type'] = 'db2' node.set['openstack']['db']['compute']['service_type'] = 'db2'
['python-ibm-db', 'python-ibm-db-sa'].each do |pkg| ['python-ibm-db', 'python-ibm-db-sa'].each do |pkg|
expect(chef_run).to install_package pkg expect(chef_run).to upgrade_package pkg
end end
end end
it 'installs memcache python packages' do it 'upgrades memcache python packages' do
expect(chef_run).to install_package 'python-memcached' expect(chef_run).to upgrade_package 'python-memcached'
end end
describe 'nova.conf' do describe 'nova.conf' do

View File

@@ -16,16 +16,16 @@ describe 'openstack-compute::nova-common' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs mysql python packages' do it 'upgrades mysql python package' do
expect(chef_run).to install_package 'python-mysqldb' expect(chef_run).to upgrade_package 'python-mysqldb'
end end
it 'installs nova common packages' do it 'upgrades nova common package' do
expect(chef_run).to upgrade_package 'nova-common' expect(chef_run).to upgrade_package 'nova-common'
end end
it 'installs memcache python packages' do it 'upgrades memcache python package' do
expect(chef_run).to install_package 'python-memcache' expect(chef_run).to upgrade_package 'python-memcache'
end end
it 'creates the /etc/nova directory' do it 'creates the /etc/nova directory' do

View File

@@ -57,7 +57,7 @@ describe 'openstack-compute::nova-setup' do
node.set['openstack']['compute']['network']['floating']['public_network_name'] = 'public' node.set['openstack']['compute']['network']['floating']['public_network_name'] = 'public'
end end
it 'installs the neutron python packages' do it 'upgrades the neutron python packages' do
expect(chef_run).to upgrade_package('python-neutronclient') expect(chef_run).to upgrade_package('python-neutronclient')
expect(chef_run).to upgrade_package('python-pyparsing') expect(chef_run).to upgrade_package('python-pyparsing')
end end

View File

@@ -10,7 +10,7 @@ describe 'openstack-compute::scheduler' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nova scheduler packages' do it 'upgrades nova scheduler package' do
expect(chef_run).to upgrade_package('openstack-nova-scheduler') expect(chef_run).to upgrade_package('openstack-nova-scheduler')
end end

View File

@@ -12,7 +12,7 @@ describe 'openstack-compute::scheduler' do
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
include_examples 'expect_creates_nova_lock_dir' include_examples 'expect_creates_nova_lock_dir'
it 'installs nova scheduler packages' do it 'upgrades nova scheduler package' do
expect(chef_run).to upgrade_package('nova-scheduler') expect(chef_run).to upgrade_package('nova-scheduler')
end end

View File

@@ -88,13 +88,13 @@ shared_context 'compute_stubs' do
end end
shared_examples 'expect_runs_nova_common_recipe' do shared_examples 'expect_runs_nova_common_recipe' do
it 'installs nova-common' do it 'includes nova-common' do
expect(chef_run).to include_recipe 'openstack-compute::nova-common' expect(chef_run).to include_recipe 'openstack-compute::nova-common'
end end
end end
shared_examples 'expect_installs_python_keystoneclient' do shared_examples 'expect_upgrades_python_keystoneclient' do
it 'installs python-keystoneclient' do it 'upgrades python-keystoneclient' do
expect(chef_run).to upgrade_package 'python-keystoneclient' expect(chef_run).to upgrade_package 'python-keystoneclient'
end end
end end

View File

@@ -10,11 +10,11 @@ describe 'openstack-compute::vncproxy' do
include_context 'compute_stubs' include_context 'compute_stubs'
it 'installs nova vncproxy packages' do it 'upgrades nova vncproxy package' do
expect(chef_run).to upgrade_package('openstack-nova-novncproxy') expect(chef_run).to upgrade_package('openstack-nova-novncproxy')
end end
it 'installs nova consoleauth packages' do it 'upgrades nova consoleauth package' do
expect(chef_run).to upgrade_package('openstack-nova-console') expect(chef_run).to upgrade_package('openstack-nova-console')
end end

View File

@@ -11,13 +11,13 @@ describe 'openstack-compute::vncproxy' do
include_context 'compute_stubs' include_context 'compute_stubs'
include_examples 'expect_runs_nova_common_recipe' include_examples 'expect_runs_nova_common_recipe'
it 'installs nova vncproxy packages' do it 'upgrades nova vncproxy packages' do
expect(chef_run).to upgrade_package('novnc') expect(chef_run).to upgrade_package('novnc')
expect(chef_run).to upgrade_package('websockify') expect(chef_run).to upgrade_package('websockify')
expect(chef_run).to upgrade_package('nova-novncproxy') expect(chef_run).to upgrade_package('nova-novncproxy')
end end
it 'installs nova consoleauth packages' do it 'upgrades nova consoleauth package' do
expect(chef_run).to upgrade_package('nova-consoleauth') expect(chef_run).to upgrade_package('nova-consoleauth')
end end