From 08f84ac085e0b602e81806c224c71037315ecc9c Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Fri, 22 Oct 2021 12:28:55 -0700 Subject: [PATCH] CentOS 8 support - Update package names - Migrate to using apache2_mod_wsgi resource and require apache2 ~> 8.6 - Update ChefSpec Depends-On: https://review.opendev.org/c/openstack/cookbook-openstack-image/+/815148 Change-Id: I7223112092393e3c2ef8a871bb2b2e20326dafdd Signed-off-by: Lance Albertson --- README.rst | 2 +- attributes/default.rb | 12 ++++-- metadata.rb | 2 +- recipes/api.rb | 2 +- spec/api-redhat_spec.rb | 35 ++++++++++------- spec/api_spec.rb | 4 +- spec/backup-redhat_spec.rb | 43 ++++++++++++--------- spec/cinder_common-redhat_spec.rb | 16 ++++---- spec/scheduler-redhat_spec.rb | 41 ++++++++++++-------- spec/spec_helper.rb | 13 ++++++- spec/volume-redhat_spec.rb | 63 ++++++++++++++++++++----------- 11 files changed, 147 insertions(+), 86 deletions(-) diff --git a/README.rst b/README.rst index 6f093b0..009b007 100644 --- a/README.rst +++ b/README.rst @@ -36,7 +36,7 @@ Cookbooks The following cookbooks are dependencies: -- 'apache2', '~> 8.1' +- 'apache2', '~> 8.6' - 'lvm' - 'openstackclient' - 'openstack-common', '>= 20.0.0' diff --git a/attributes/default.rb b/attributes/default.rb index 18d135b..6a23092 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -87,15 +87,20 @@ when 'rhel' # :pragma-foodcritic: ~FC024 - won't fix this default['openstack']['block-storage']['volume']['iscsi_helper'] = 'lioadm' default['openstack']['block-storage']['platform'] = { 'cinder_common_packages' => ['openstack-cinder'], - 'cinder_api_packages' => %w(openstack-cinder mod_wsgi), + 'cinder_api_packages' => %w(openstack-cinder), 'cinder_api_service' => 'openstack-cinder-api', - 'cinder_volume_packages' => %w(qemu-img-ev), + 'cinder_volume_packages' => node['platform_version'].to_i >= 8 ? %w(qemu-img) : %w(qemu-img-ev), 'cinder_volume_service' => 'openstack-cinder-volume', 'cinder_scheduler_packages' => [], 'cinder_scheduler_service' => 'openstack-cinder-scheduler', 'cinder_backup_packages' => [], 'cinder_backup_service' => 'openstack-cinder-backup', - 'cinder_iscsitarget_packages' => %w(targetcli dbus-python), + 'cinder_iscsitarget_packages' => + if node['platform_version'].to_i >= 8 + %w(targetcli python3-dbus) + else + %w(targetcli dbus-python) + end, 'cinder_iscsitarget_service' => 'target', 'cinder_lvm_packages' => %w(lvm2), 'package_overrides' => '', @@ -106,7 +111,6 @@ when 'debian' 'cinder_common_packages' => %w(cinder-common), 'cinder_api_packages' => %w( - libapache2-mod-wsgi-py3 python3-cinder cinder-api ), diff --git a/metadata.rb b/metadata.rb index c12cff0..236afe6 100644 --- a/metadata.rb +++ b/metadata.rb @@ -9,7 +9,7 @@ version '20.0.0' supports os end -depends 'apache2', '~> 8.1' +depends 'apache2', '~> 8.6' depends 'lvm' depends 'openstackclient' depends 'openstack-common', '>= 20.0.0' diff --git a/recipes/api.rb b/recipes/api.rb index 5ecfb56..43c57f0 100644 --- a/recipes/api.rb +++ b/recipes/api.rb @@ -77,7 +77,7 @@ else end end -apache2_module 'wsgi' +apache2_mod_wsgi 'openstack' apache2_module 'ssl' if node['openstack']['block-storage']['ssl']['enabled'] # remove the cinder-wsgi.conf automatically generated from package diff --git a/spec/api-redhat_spec.rb b/spec/api-redhat_spec.rb index 5f69485..43105a2 100644 --- a/spec/api-redhat_spec.rb +++ b/spec/api-redhat_spec.rb @@ -4,23 +4,32 @@ require_relative 'spec_helper' describe 'openstack-block-storage::api' do - describe 'redhat' do - let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } - let(:node) { runner.node } - cached(:chef_run) { runner.converge(described_recipe) } + ALL_RHEL.each do |p| + context "redhat #{p[:version]}" do + let(:runner) { ChefSpec::SoloRunner.new(p) } + let(:node) { runner.node } + cached(:chef_run) { runner.converge(described_recipe) } - include_context 'block-storage-stubs' + include_context 'block-storage-stubs' - it do - expect(chef_run).to_not create_file('/etc/apache2/conf-available/cinder-wsgi.conf') - end + it do + expect(chef_run).to_not create_file('/etc/apache2/conf-available/cinder-wsgi.conf') + end - it do - expect(chef_run).to upgrade_package %w(openstack-cinder mod_wsgi) - end + it do + expect(chef_run).to upgrade_package %w(openstack-cinder) + end - it 'upgrades mysql python package' do - expect(chef_run).to upgrade_package 'MySQL-python' + case p + when REDHAT_7 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'MySQL-python' + end + when REDHAT_8 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'python3-PyMySQL' + end + end end end end diff --git a/spec/api_spec.rb b/spec/api_spec.rb index b601fb9..3719cb1 100644 --- a/spec/api_spec.rb +++ b/spec/api_spec.rb @@ -23,7 +23,7 @@ describe 'openstack-block-storage::api' do end it do - expect(chef_run).to upgrade_package %w(libapache2-mod-wsgi-py3 python3-cinder cinder-api) + expect(chef_run).to upgrade_package %w(python3-cinder cinder-api) end it 'upgrades mysql python3 package' do @@ -75,7 +75,7 @@ describe 'openstack-block-storage::api' do end it do - expect(chef_run).to enable_apache2_module('wsgi') + expect(chef_run).to create_apache2_mod_wsgi('openstack') end it do diff --git a/spec/backup-redhat_spec.rb b/spec/backup-redhat_spec.rb index 39ce932..eb5bdbc 100644 --- a/spec/backup-redhat_spec.rb +++ b/spec/backup-redhat_spec.rb @@ -4,28 +4,37 @@ require_relative 'spec_helper' describe 'openstack-block-storage::backup' do - describe 'redhat' do - let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } - let(:node) { runner.node } - cached(:chef_run) { runner.converge(described_recipe) } + ALL_RHEL.each do |p| + context "redhat #{p[:version]}" do + let(:runner) { ChefSpec::SoloRunner.new(p) } + let(:node) { runner.node } + cached(:chef_run) { runner.converge(described_recipe) } - include_context 'block-storage-stubs' + include_context 'block-storage-stubs' - describe 'enable cinder backup service' do - before do - node.override['openstack']['block-storage']['backup']['enabled'] = true - end + describe 'enable cinder backup service' do + before do + node.override['openstack']['block-storage']['backup']['enabled'] = true + end - it 'starts cinder backup' do - expect(chef_run).to start_service 'openstack-cinder-backup' - end + it 'starts cinder backup' do + expect(chef_run).to start_service 'openstack-cinder-backup' + end - it 'starts cinder backup on boot' do - expect(chef_run).to enable_service 'openstack-cinder-backup' - end + it 'starts cinder backup on boot' do + expect(chef_run).to enable_service 'openstack-cinder-backup' + end - it 'upgrades mysql python package' do - expect(chef_run).to upgrade_package 'MySQL-python' + case p + when REDHAT_7 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'MySQL-python' + end + when REDHAT_8 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'python3-PyMySQL' + end + end end end end diff --git a/spec/cinder_common-redhat_spec.rb b/spec/cinder_common-redhat_spec.rb index cfa41ac..f7d8656 100644 --- a/spec/cinder_common-redhat_spec.rb +++ b/spec/cinder_common-redhat_spec.rb @@ -4,15 +4,17 @@ require_relative 'spec_helper' describe 'openstack-block-storage::cinder-common' do - describe 'rhel' do - let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } - let(:node) { runner.node } - cached(:chef_run) { runner.converge(described_recipe) } + ALL_RHEL.each do |p| + context "redhat #{p[:version]}" do + let(:runner) { ChefSpec::SoloRunner.new(p) } + let(:node) { runner.node } + cached(:chef_run) { runner.converge(described_recipe) } - include_context 'block-storage-stubs' + include_context 'block-storage-stubs' - it 'upgrades the openstack-cinder package' do - expect(chef_run).to upgrade_package 'openstack-cinder' + it 'upgrades the openstack-cinder package' do + expect(chef_run).to upgrade_package 'openstack-cinder' + end end end end diff --git a/spec/scheduler-redhat_spec.rb b/spec/scheduler-redhat_spec.rb index d855f39..ff440a4 100644 --- a/spec/scheduler-redhat_spec.rb +++ b/spec/scheduler-redhat_spec.rb @@ -4,27 +4,36 @@ require_relative 'spec_helper' describe 'openstack-block-storage::scheduler' do - describe 'redhat' do - let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } - let(:node) { runner.node } - cached(:chef_run) { runner.converge(described_recipe) } + ALL_RHEL.each do |p| + context "redhat #{p[:version]}" do + let(:runner) { ChefSpec::SoloRunner.new(p) } + let(:node) { runner.node } + cached(:chef_run) { runner.converge(described_recipe) } - include_context 'block-storage-stubs' + include_context 'block-storage-stubs' - it 'upgrades cinder scheduler package' do - expect(chef_run).to upgrade_package 'openstack-cinder' - end + it 'upgrades cinder scheduler package' do + expect(chef_run).to upgrade_package 'openstack-cinder' + end - it 'starts cinder scheduler' do - expect(chef_run).to start_service 'openstack-cinder-scheduler' - end + it 'starts cinder scheduler' do + expect(chef_run).to start_service 'openstack-cinder-scheduler' + end - it 'starts cinder scheduler on boot' do - expect(chef_run).to enable_service 'openstack-cinder-scheduler' - end + it 'starts cinder scheduler on boot' do + expect(chef_run).to enable_service 'openstack-cinder-scheduler' + end - it 'upgrades mysql python package' do - expect(chef_run).to upgrade_package 'MySQL-python' + case p + when REDHAT_7 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'MySQL-python' + end + when REDHAT_8 + it 'upgrades mysql python package' do + expect(chef_run).to upgrade_package 'python3-PyMySQL' + end + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 74cbef7..64d9054 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,10 +12,21 @@ RSpec.configure do |config| config.file_cache_path = '/var/chef/cache' end -REDHAT_OPTS = { +REDHAT_7 = { platform: 'redhat', version: '7', }.freeze + +REDHAT_8 = { + platform: 'redhat', + version: '8', +}.freeze + +ALL_RHEL = [ + REDHAT_7, + REDHAT_8, +].freeze + UBUNTU_OPTS = { platform: 'ubuntu', version: '18.04', diff --git a/spec/volume-redhat_spec.rb b/spec/volume-redhat_spec.rb index 405f1d1..18cea23 100644 --- a/spec/volume-redhat_spec.rb +++ b/spec/volume-redhat_spec.rb @@ -4,36 +4,53 @@ require_relative 'spec_helper' describe 'openstack-block-storage::volume' do - describe 'redhat' do - let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } - let(:node) { runner.node } - cached(:chef_run) { runner.converge(described_recipe) } + ALL_RHEL.each do |p| + context "redhat #{p[:version]}" do + let(:runner) { ChefSpec::SoloRunner.new(p) } + let(:node) { runner.node } + cached(:chef_run) { runner.converge(described_recipe) } - include_context 'block-storage-stubs' + include_context 'block-storage-stubs' - it 'upgrades mysql python package' do - expect(chef_run).to upgrade_package('MySQL-python') - end + case p + when REDHAT_7 + it do + expect(chef_run).to upgrade_package('MySQL-python') + end - it 'upgrades qemu-img-ev package' do - expect(chef_run).to upgrade_package('qemu-img-ev') - end + it do + expect(chef_run).to upgrade_package('qemu-img-ev') + end - it do - expect(chef_run).to upgrade_package %w(targetcli dbus-python) - end + it do + expect(chef_run).to upgrade_package %w(targetcli dbus-python) + end + when REDHAT_8 + it do + expect(chef_run).to upgrade_package('python3-PyMySQL') + end - it 'starts cinder volume' do - expect(chef_run).to start_service('openstack-cinder-volume') - end + it do + expect(chef_run).to upgrade_package('qemu-img') + end - it 'starts cinder volume on boot' do - expect(chef_run).to enable_service('openstack-cinder-volume') - end + it do + expect(chef_run).to upgrade_package %w(targetcli python3-dbus) + end + end - context 'ISCSI' do - it 'starts iscsi target on boot' do - expect(chef_run).to enable_service('iscsitarget') + it do + expect(chef_run).to start_service('openstack-cinder-volume') + end + + it do + expect(chef_run).to enable_service('openstack-cinder-volume') + end + + context 'ISCSI' do + it do + expect(chef_run).to enable_service('iscsitarget') + end end end end