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-identity/+/815147
Change-Id: Iecf9c2a68d3c246412d2a09a7ac0888dd406c268
Signed-off-by: Lance Albertson <lance@osuosl.org>
This commit is contained in:
Lance Albertson 2021-10-22 16:54:24 -07:00
parent 21424d8868
commit f04c63bd47
15 changed files with 206 additions and 124 deletions

View File

@ -38,7 +38,7 @@ Cookbooks
The following cookbooks are dependencies: The following cookbooks are dependencies:
- 'apache2', '~> 8.1' - 'apache2', '~> 8.6'
- 'openstackclient' - 'openstackclient'
- 'openstack-common', '>= 20.0.0' - 'openstack-common', '>= 20.0.0'
- 'openstack-identity', '>= 20.0.0' - 'openstack-identity', '>= 20.0.0'

View File

@ -124,40 +124,83 @@ default['openstack']['telemetry']['polling']['meters'] =
end end
case node['platform_family'] case node['platform_family']
when 'rhel' when 'rhel'
default['openstack']['telemetry']['platform'] = { default['openstack']['telemetry']['platform'] =
'common_packages' => %w(openstack-ceilometer-common mod_wsgi), case node['platform_version'].to_i
'gnocchi_packages' => %w(openstack-gnocchi-api openstack-gnocchi-metricd), when 8
'gnocchi-api_service' => 'openstack-gnocchi-api', {
'gnocchi-metricd_service' => 'gnocchi-metricd', 'common_packages' => %w(openstack-ceilometer-common),
'agent_central_packages' => %w(openstack-ceilometer-central), 'gnocchi_packages' => %w(openstack-gnocchi-api openstack-gnocchi-metricd),
'agent_central_service' => 'openstack-ceilometer-central', 'gnocchi-api_service' => 'openstack-gnocchi-api',
'agent_compute_packages' => %w(openstack-ceilometer-compute), 'gnocchi-metricd_service' => 'gnocchi-metricd',
'agent_compute_service' => 'openstack-ceilometer-compute', 'agent_central_packages' => %w(openstack-ceilometer-central),
'agent_notification_packages' => %w(openstack-ceilometer-collector openstack-ceilometer-notification), 'agent_central_service' => 'openstack-ceilometer-central',
'agent_notification_service' => 'openstack-ceilometer-notification', 'agent_compute_packages' => %w(openstack-ceilometer-compute),
'ceilometer-api_wsgi_file' => '/usr/lib/python2.7/site-packages/ceilometer/api/app.wsgi', 'agent_compute_service' => 'openstack-ceilometer-compute',
'gnocchi-api_wsgi_file' => '/usr/lib/python2.7/site-packages/gnocchi/rest/wsgi.py', 'agent_notification_packages' => %w(openstack-ceilometer-collector openstack-ceilometer-notification),
'package_overrides' => '', 'agent_notification_service' => 'openstack-ceilometer-notification',
} 'ceilometer-api_wsgi_file' => '/usr/lib/python3.6/site-packages/ceilometer/api/app.wsgi',
'gnocchi-api_wsgi_file' => '/usr/lib/python3.6/site-packages/gnocchi/rest/wsgi.py',
'package_overrides' => '',
}
when 7
{
'common_packages' => %w(openstack-ceilometer-common),
'gnocchi_packages' => %w(openstack-gnocchi-api openstack-gnocchi-metricd),
'gnocchi-api_service' => 'openstack-gnocchi-api',
'gnocchi-metricd_service' => 'gnocchi-metricd',
'agent_central_packages' => %w(openstack-ceilometer-central),
'agent_central_service' => 'openstack-ceilometer-central',
'agent_compute_packages' => %w(openstack-ceilometer-compute),
'agent_compute_service' => 'openstack-ceilometer-compute',
'agent_notification_packages' => %w(openstack-ceilometer-collector openstack-ceilometer-notification),
'agent_notification_service' => 'openstack-ceilometer-notification',
'ceilometer-api_wsgi_file' => '/usr/lib/python2.7/site-packages/ceilometer/api/app.wsgi',
'gnocchi-api_wsgi_file' => '/usr/lib/python2.7/site-packages/gnocchi/rest/wsgi.py',
'package_overrides' => '',
}
end
default['openstack']['aodh']['platform'] = { default['openstack']['aodh']['platform'] =
'aodh_packages' => case node['platform_version'].to_i
%w( when 8
openstack-aodh-api {
openstack-aodh-evaluator 'aodh_packages' =>
openstack-aodh-expirer %w(
openstack-aodh-listener openstack-aodh-api
openstack-aodh-notifier openstack-aodh-evaluator
python-aodhclient openstack-aodh-expirer
), openstack-aodh-listener
'aodh_services' => openstack-aodh-notifier
%w( python3-aodhclient
openstack-aodh-evaluator ),
openstack-aodh-notifier 'aodh_services' =>
openstack-aodh-listener %w(
), openstack-aodh-evaluator
'aodh-api_wsgi_file' => '/usr/lib/python2.7/site-packages/aodh/api/app.wsgi', openstack-aodh-notifier
} openstack-aodh-listener
),
'aodh-api_wsgi_file' => '/usr/lib/python3.6/site-packages/aodh/api/app.wsgi',
}
when 7
{
'aodh_packages' =>
%w(
openstack-aodh-api
openstack-aodh-evaluator
openstack-aodh-expirer
openstack-aodh-listener
openstack-aodh-notifier
python-aodhclient
),
'aodh_services' =>
%w(
openstack-aodh-evaluator
openstack-aodh-notifier
openstack-aodh-listener
),
'aodh-api_wsgi_file' => '/usr/lib/python2.7/site-packages/aodh/api/app.wsgi',
}
end
when 'debian' when 'debian'
default['openstack']['telemetry']['platform'] = { default['openstack']['telemetry']['platform'] = {

View File

@ -9,7 +9,7 @@ version '20.0.0'
supports os supports os
end end
depends 'apache2', '~> 8.1' depends 'apache2', '~> 8.6'
depends 'openstackclient' depends 'openstackclient'
depends 'openstack-common', '>= 20.0.0' depends 'openstack-common', '>= 20.0.0'
depends 'openstack-identity', '>= 20.0.0' depends 'openstack-identity', '>= 20.0.0'

View File

@ -102,7 +102,7 @@ else
end end
end end
apache2_module 'wsgi' apache2_mod_wsgi 'aodh'
apache2_module 'ssl' if node['openstack']['aodh']['ssl']['enabled'] apache2_module 'ssl' if node['openstack']['aodh']['ssl']['enabled']
# create the aodh-api apache directory # create the aodh-api apache directory

View File

@ -127,7 +127,7 @@ else
end end
end end
apache2_module 'wsgi' apache2_mod_wsgi 'gnocchi'
apache2_module 'ssl' if node['openstack']['telemetry_metric']['ssl']['enabled'] apache2_module 'ssl' if node['openstack']['telemetry_metric']['ssl']['enabled']
# create the gnocchi-api apache directory # create the gnocchi-api apache directory

View File

@ -1,20 +1,22 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::agent-central' do describe 'openstack-telemetry::agent-central' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
include_examples 'expect-runs-common-recipe' include_examples 'expect-runs-common-recipe'
it 'installs the agent-central package' do it 'installs the agent-central package' do
expect(chef_run).to upgrade_package 'openstack-ceilometer-central' expect(chef_run).to upgrade_package 'openstack-ceilometer-central'
end end
it 'starts the agent-central service' do it 'starts the agent-central service' do
expect(chef_run).to start_service 'openstack-ceilometer-central' expect(chef_run).to start_service 'openstack-ceilometer-central'
end
end end
end end
end end

View File

@ -1,20 +1,22 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::agent-compute' do describe 'openstack-telemetry::agent-compute' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
include_examples 'expect-runs-common-recipe' include_examples 'expect-runs-common-recipe'
it 'installs the agent-compute package' do it 'installs the agent-compute package' do
expect(chef_run).to upgrade_package 'openstack-ceilometer-compute' expect(chef_run).to upgrade_package 'openstack-ceilometer-compute'
end end
it 'starts ceilometer-agent-compute service' do it 'starts ceilometer-agent-compute service' do
expect(chef_run).to start_service('openstack-ceilometer-compute') expect(chef_run).to start_service('openstack-ceilometer-compute')
end
end end
end end
end end

View File

@ -1,20 +1,22 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::agent-notification' do describe 'openstack-telemetry::agent-notification' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
include_examples 'expect-runs-common-recipe' include_examples 'expect-runs-common-recipe'
it do it do
expect(chef_run).to upgrade_package %w(openstack-ceilometer-collector openstack-ceilometer-notification) expect(chef_run).to upgrade_package %w(openstack-ceilometer-collector openstack-ceilometer-notification)
end end
it 'starts the agent-notification service' do it 'starts the agent-notification service' do
expect(chef_run).to start_service 'openstack-ceilometer-notification' expect(chef_run).to start_service 'openstack-ceilometer-notification'
end
end end
end end
end end

View File

@ -1,27 +1,36 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::aodh' do describe 'openstack-telemetry::aodh' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
it 'installs the aodh packages' do case p
expect(chef_run).to upgrade_package %w(openstack-aodh-api openstack-aodh-evaluator openstack-aodh-expirer openstack-aodh-listener openstack-aodh-notifier python-aodhclient) when REDHAT_7
end it 'installs the aodh packages' do
expect(chef_run).to upgrade_package %w(openstack-aodh-api openstack-aodh-evaluator openstack-aodh-expirer openstack-aodh-listener openstack-aodh-notifier python-aodhclient)
end
when REDHAT_8
it 'installs the aodh packages' do
expect(chef_run).to upgrade_package %w(openstack-aodh-api openstack-aodh-evaluator openstack-aodh-expirer openstack-aodh-listener openstack-aodh-notifier python3-aodhclient)
end
end
it 'starts aodh services' do it 'starts aodh services' do
expect(chef_run).to start_service('openstack-aodh-evaluator') expect(chef_run).to start_service('openstack-aodh-evaluator')
expect(chef_run).to start_service('openstack-aodh-notifier') expect(chef_run).to start_service('openstack-aodh-notifier')
expect(chef_run).to start_service('openstack-aodh-listener') expect(chef_run).to start_service('openstack-aodh-listener')
end end
it 'subscribes to /etc/aodh/aodh.conf' do it 'subscribes to /etc/aodh/aodh.conf' do
expect(chef_run.service('openstack-aodh-evaluator')).to subscribe_to('template[/etc/aodh/aodh.conf]') expect(chef_run.service('openstack-aodh-evaluator')).to subscribe_to('template[/etc/aodh/aodh.conf]')
expect(chef_run.service('openstack-aodh-notifier')).to subscribe_to('template[/etc/aodh/aodh.conf]') expect(chef_run.service('openstack-aodh-notifier')).to subscribe_to('template[/etc/aodh/aodh.conf]')
expect(chef_run.service('openstack-aodh-listener')).to subscribe_to('template[/etc/aodh/aodh.conf]') expect(chef_run.service('openstack-aodh-listener')).to subscribe_to('template[/etc/aodh/aodh.conf]')
end
end end
end end
end end

View File

@ -17,7 +17,7 @@ describe 'openstack-telemetry::aodh' do
end end
it do it do
expect(chef_run).to enable_apache2_module('wsgi') expect(chef_run).to create_apache2_mod_wsgi 'aodh'
end end
it do it do

View File

@ -1,19 +1,28 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::common' do describe 'openstack-telemetry::common' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
it 'installs mysql python packages by default' do case p
expect(chef_run).to upgrade_package 'MySQL-python' when REDHAT_7
end it do
expect(chef_run).to upgrade_package 'MySQL-python'
end
when REDHAT_8
it do
expect(chef_run).to upgrade_package 'python3-PyMySQL'
end
end
it 'installs the common packages' do it 'installs the common packages' do
expect(chef_run).to upgrade_package %w(openstack-ceilometer-common mod_wsgi) expect(chef_run).to upgrade_package %w(openstack-ceilometer-common)
end
end end
end end
end end

View File

@ -1,21 +1,23 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::gnocchi_configure' do describe 'openstack-telemetry::gnocchi_configure' do
describe 'rhel' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
it do it do
expect(chef_run).to_not create_cookbook_file('/etc/ceilometer/gnocchi_resources.yaml') expect(chef_run).to_not create_cookbook_file('/etc/ceilometer/gnocchi_resources.yaml')
.with( .with(
source: 'gnocchi_resources.yaml', source: 'gnocchi_resources.yaml',
owner: 'ceilometer', owner: 'ceilometer',
group: 'ceilometer', group: 'ceilometer',
mode: '640' mode: '640'
) )
end
end end
end end
end end

View File

@ -13,7 +13,7 @@ describe 'openstack-telemetry::gnocchi_configure' do
end end
it do it do
expect(chef_run).to enable_apache2_module('wsgi') expect(chef_run).to create_apache2_mod_wsgi 'gnocchi'
end end
it do it do

View File

@ -1,20 +1,22 @@
require_relative 'spec_helper' require_relative 'spec_helper'
describe 'openstack-telemetry::gnocchi_install' do describe 'openstack-telemetry::gnocchi_install' do
describe 'redhat' do ALL_RHEL.each do |p|
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } context "redhat #{p[:version]}" do
let(:node) { runner.node } let(:runner) { ChefSpec::SoloRunner.new(p) }
cached(:chef_run) { runner.converge(described_recipe) } let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs' include_context 'telemetry-stubs'
it do it do
expect(chef_run).to upgrade_package %w(openstack-gnocchi-api openstack-gnocchi-metricd) expect(chef_run).to upgrade_package %w(openstack-gnocchi-api openstack-gnocchi-metricd)
end end
it do it do
expect(chef_run).to stop_service('openstack-gnocchi-api') expect(chef_run).to stop_service('openstack-gnocchi-api')
expect(chef_run).to disable_service('openstack-gnocchi-api') expect(chef_run).to disable_service('openstack-gnocchi-api')
end
end end
end end
end end

View File

@ -9,10 +9,21 @@ RSpec.configure do |config|
config.file_cache_path = '/var/chef/cache' config.file_cache_path = '/var/chef/cache'
end end
REDHAT_OPTS = { REDHAT_7 = {
platform: 'redhat', platform: 'redhat',
version: '7', version: '7',
}.freeze }.freeze
REDHAT_8 = {
platform: 'redhat',
version: '8',
}.freeze
ALL_RHEL = [
REDHAT_7,
REDHAT_8,
].freeze
UBUNTU_OPTS = { UBUNTU_OPTS = {
platform: 'ubuntu', platform: 'ubuntu',
version: '18.04', version: '18.04',