diff --git a/README.md b/README.md index 9a18e70..000ff01 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,8 @@ Attributes ========== * `openstack['telemetry']['api']['auth']['version']` - Select v2.0 or v3.0. Default v2.0. The auth API version used to interact with identity service. +TODO: Add DB2 support on other platforms +* `openstack['telemetry']['platform']['db2_python_packages']` - Array of DB2 python packages, only available on redhat platform Testing ===== diff --git a/attributes/default.rb b/attributes/default.rb index e6eb3c5..e8210be 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -52,6 +52,8 @@ end case platform when 'suse' # :pragma-foodcritic: ~FC024 - won't fix this default['openstack']['telemetry']['platform'] = { + 'mysql_python_packages' => ['python-mysql'], + 'postgresql_python_packages' => ['python-psycopg2'], 'common_packages' => ['openstack-ceilometer'], 'agent_central_packages' => ['openstack-ceilometer-agent-central'], 'agent_central_service' => 'openstack-ceilometer-agent-central', @@ -72,6 +74,9 @@ when 'suse' # :pragma-foodcritic: ~FC024 - won't fix this when 'fedora', 'redhat', 'centos' default['openstack']['telemetry']['platform'] = { + 'mysql_python_packages' => ['MySQL-python'], + 'db2_python_packages' => ['python-ibm-db', 'python-ibm-db-sa'], + 'postgresql_python_packages' => ['python-psycopg2'], 'common_packages' => ['openstack-ceilometer-common'], 'agent_central_packages' => ['openstack-ceilometer-central'], 'agent_central_service' => 'openstack-ceilometer-central', @@ -92,6 +97,8 @@ when 'fedora', 'redhat', 'centos' when 'ubuntu' default['openstack']['telemetry']['platform'] = { + 'mysql_python_packages' => ['python-mysqldb'], + 'postgresql_python_packages' => ['python-psycopg2'], 'common_packages' => ['ceilometer-common'], 'agent_central_packages' => ['ceilometer-agent-central'], 'agent_central_service' => 'ceilometer-agent-central', diff --git a/recipes/common.rb b/recipes/common.rb index 702974c..bc27d21 100644 --- a/recipes/common.rb +++ b/recipes/common.rb @@ -29,6 +29,14 @@ if node['openstack']['telemetry']['syslog']['use'] end platform = node['openstack']['telemetry']['platform'] + +db_type = node['openstack']['db']['telemetry']['service_type'] +platform["#{db_type}_python_packages"].each do |pkg| + package pkg do + action :install + end +end + platform['common_packages'].each do |pkg| package pkg end diff --git a/spec/common-rhel_spec.rb b/spec/common-rhel_spec.rb index 0641f4d..639fb90 100644 --- a/spec/common-rhel_spec.rb +++ b/spec/common-rhel_spec.rb @@ -10,6 +10,22 @@ describe 'openstack-telemetry::common' do include_context 'telemetry-stubs' + it 'installs mysql python packages by default' do + expect(chef_run).to install_package 'MySQL-python' + end + + it 'installs db2 python packages if explicitly told' do + node.set['openstack']['db']['telemetry']['service_type'] = 'db2' + ['python-ibm-db', 'python-ibm-db-sa'].each do |pkg| + expect(chef_run).to install_package pkg + end + end + + it 'installs postgresql python packages if explicitly told' do + node.set['openstack']['db']['telemetry']['service_type'] = 'postgresql' + expect(chef_run).to install_package 'python-psycopg2' + end + it 'installs the common package' do expect(chef_run).to install_package 'openstack-ceilometer-common' end diff --git a/spec/common-suse_spec.rb b/spec/common-suse_spec.rb index 3aa8ca9..5ee7227 100644 --- a/spec/common-suse_spec.rb +++ b/spec/common-suse_spec.rb @@ -10,6 +10,15 @@ describe 'openstack-telemetry::common' do include_context 'telemetry-stubs' + it 'installs mysql python packages by default' do + expect(chef_run).to install_package 'python-mysql' + end + + it 'installs postgresql python packages if explicitly told' do + node.set['openstack']['db']['telemetry']['service_type'] = 'postgresql' + expect(chef_run).to install_package 'python-psycopg2' + end + it 'installs the common package' do expect(chef_run).to install_package 'openstack-ceilometer' end diff --git a/spec/common_spec.rb b/spec/common_spec.rb index c3cac0a..1e9ee00 100644 --- a/spec/common_spec.rb +++ b/spec/common_spec.rb @@ -20,6 +20,15 @@ describe 'openstack-telemetry::common' do end end + it 'installs mysql python packages by default' do + expect(chef_run).to install_package 'python-mysqldb' + end + + it 'installs postgresql python packages if explicitly told' do + node.set['openstack']['db']['telemetry']['service_type'] = 'postgresql' + expect(chef_run).to install_package 'python-psycopg2' + end + it 'installs the common package' do expect(chef_run).to install_package 'ceilometer-common' end