From 7583f5cb17ededd3eccebe12fb04025d8dbe9e6a Mon Sep 17 00:00:00 2001 From: Vladimir Kuklin Date: Wed, 4 Jan 2017 18:27:58 +0300 Subject: [PATCH] Fix apt discrepancy around mysql client package When we run galera/mysql packages installation we can get into dependencies issues with mysql client package as it is not installed at the time when perl dbd module requires it. At the same time libperl-dbd-mysql is depending on it, so it fails. Instead we need to ensure that mysql client is installed along with its libraries prior to installing additional packages for galera. Change-Id: Idc91a399a46cd63c2201660bb248c0a0ad3fb9b8 Closes-bug: #1651182 --- .../puppet/osnailyfacter/manifests/database/database.pp | 6 ++++++ tests/noop/spec/hosts/database/database_spec.rb | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/deployment/puppet/osnailyfacter/manifests/database/database.pp b/deployment/puppet/osnailyfacter/manifests/database/database.pp index 4ae136d7a9..f8160fc5c7 100644 --- a/deployment/puppet/osnailyfacter/manifests/database/database.pp +++ b/deployment/puppet/osnailyfacter/manifests/database/database.pp @@ -295,6 +295,12 @@ class osnailyfacter::database::database { override_options => $override_options, } + # LP 1651182 + # Ensure that client library replacement is installed before we try + # to install additional packages + + Class["mysql::client"] -> Package[$::galera::params::additional_packages] + # Make sure the mysql service is stopped with upstart as we will be starting # it with pacemaker Exec <| title == 'clean_up_ubuntu' |> { diff --git a/tests/noop/spec/hosts/database/database_spec.rb b/tests/noop/spec/hosts/database/database_spec.rb index 0c31c98d36..cfaf398e10 100644 --- a/tests/noop/spec/hosts/database/database_spec.rb +++ b/tests/noop/spec/hosts/database/database_spec.rb @@ -174,6 +174,10 @@ describe manifest do expect(graph).to ensure_transitive_dependency("Class[cluster::galera_status]", "Haproxy_backend_status[mysql]") end + it 'should have explicit ordering between the client binary and additional packages' do + expect(graph).to ensure_transitive_dependency("Class[mysql::client]", "Package[percona-xtrabackup]") + end + it 'should setup the /root/.my.cnf' do should contain_class('osnailyfacter::mysql_access').with( :db_password => mysql_database_password