From 96509710b1f2122f551f2747bf5e7320cd31d136 Mon Sep 17 00:00:00 2001 From: Branan Purvine-Riley Date: Fri, 6 Jul 2012 13:34:03 -0700 Subject: [PATCH] Parameterize the nova db charset RHEL and Debian flavors have different requirements for the DB encoding. This patch allows nova::db::mysql to work correctly for both of them. --- manifests/db/mysql.pp | 3 +++ manifests/params.pp | 2 ++ spec/classes/nova_db_mysql_spec.rb | 34 +++++++++++++++++++++++------- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/manifests/db/mysql.pp b/manifests/db/mysql.pp index 9593da46e..9d4748e91 100644 --- a/manifests/db/mysql.pp +++ b/manifests/db/mysql.pp @@ -10,6 +10,8 @@ class nova::db::mysql( $cluster_id = 'localzone' ) { + include 'nova::params' + require 'mysql::python' # Create the db instance before openstack-nova if its installed Mysql::Db[$dbname] -> Anchor<| title == "nova-start" |> @@ -19,6 +21,7 @@ class nova::db::mysql( user => $user, password => $password, host => $host, + charset => $nova::params::nova_db_charset, # I may want to inject some sql require => Class['mysql::config'], } diff --git a/manifests/params.pp b/manifests/params.pp index e78031e4d..558f82952 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -35,6 +35,7 @@ class nova::params { # redhat specific config defaults $root_helper = 'sudo nova-rootwrap' $lock_path = '/var/lib/nova/tmp' + $nova_db_charset = 'latin1' } 'Debian': { # package names @@ -66,6 +67,7 @@ class nova::params { # debian specific nova config $root_helper = 'sudo nova-rootwrap' $lock_path = '/var/lock/nova' + $nova_db_charset = 'utf8' case $::operatingsystem { 'Debian': { $consoleauth_package_name = 'nova-console' diff --git a/spec/classes/nova_db_mysql_spec.rb b/spec/classes/nova_db_mysql_spec.rb index ed0564ead..8900d1763 100644 --- a/spec/classes/nova_db_mysql_spec.rb +++ b/spec/classes/nova_db_mysql_spec.rb @@ -1,16 +1,34 @@ require 'spec_helper' describe 'nova::db::mysql' do - let :facts do - { :osfamily => "Debian" } - end - let :params do - { :password => "qwerty" } - end - it { should contain_mysql__db('nova').with( + + context 'on a Debian osfamily' do + let :facts do + { :osfamily => "Debian" } + end + let :params do + { :password => "qwerty" } + end + it { should contain_mysql__db('nova').with( :user => 'nova', :password => 'qwerty', + :charset => 'utf8', :require => "Class[Mysql::Config]" - )} + )} + end + context 'on a RedHat osfamily' do + let :facts do + { :osfamily => 'RedHat' } + end + let :params do + { :password => 'qwerty' } + end + it { should contain_mysql__db('nova').with( + :user => 'nova', + :password => 'qwerty', + :charset => 'latin1', + :require => "Class[Mysql::Config]" + )} + end end