diff --git a/manifests/bindings.pp b/manifests/bindings.pp index 88c490339..c615148e8 100644 --- a/manifests/bindings.pp +++ b/manifests/bindings.pp @@ -6,22 +6,30 @@ $php_enable = false, $python_enable = false, $ruby_enable = false, + $client_dev = false, + $daemon_dev = false, # Settings for the various classes. - $java_package_ensure = $mysql::params::java_package_ensure, - $java_package_name = $mysql::params::java_package_name, - $java_package_provider = $mysql::params::java_package_provider, - $perl_package_ensure = $mysql::params::perl_package_ensure, - $perl_package_name = $mysql::params::perl_package_name, - $perl_package_provider = $mysql::params::perl_package_provider, - $php_package_ensure = $mysql::params::php_package_ensure, - $php_package_name = $mysql::params::php_package_name, - $php_package_provider = $mysql::params::php_package_provider, - $python_package_ensure = $mysql::params::python_package_ensure, - $python_package_name = $mysql::params::python_package_name, - $python_package_provider = $mysql::params::python_package_provider, - $ruby_package_ensure = $mysql::params::ruby_package_ensure, - $ruby_package_name = $mysql::params::ruby_package_name, - $ruby_package_provider = $mysql::params::ruby_package_provider + $java_package_ensure = $mysql::params::java_package_ensure, + $java_package_name = $mysql::params::java_package_name, + $java_package_provider = $mysql::params::java_package_provider, + $perl_package_ensure = $mysql::params::perl_package_ensure, + $perl_package_name = $mysql::params::perl_package_name, + $perl_package_provider = $mysql::params::perl_package_provider, + $php_package_ensure = $mysql::params::php_package_ensure, + $php_package_name = $mysql::params::php_package_name, + $php_package_provider = $mysql::params::php_package_provider, + $python_package_ensure = $mysql::params::python_package_ensure, + $python_package_name = $mysql::params::python_package_name, + $python_package_provider = $mysql::params::python_package_provider, + $ruby_package_ensure = $mysql::params::ruby_package_ensure, + $ruby_package_name = $mysql::params::ruby_package_name, + $ruby_package_provider = $mysql::params::ruby_package_provider, + $client_dev_package_ensure = $mysql::params::client_dev_package_ensure, + $client_dev_package_name = $mysql::params::client_dev_package_name, + $client_dev_package_provider = $mysql::params::client_dev_package_provider, + $daemon_dev_package_ensure = $mysql::params::daemon_dev_package_ensure, + $daemon_dev_package_name = $mysql::params::daemon_dev_package_name, + $daemon_dev_package_provider = $mysql::params::daemon_dev_package_provider ) inherits mysql::params { if $java_enable { include '::mysql::bindings::java' } @@ -29,5 +37,7 @@ if $php_enable { include '::mysql::bindings::php' } if $python_enable { include '::mysql::bindings::python' } if $ruby_enable { include '::mysql::bindings::ruby' } + if $client_dev { include '::mysql::bindings::client_dev' } + if $daemon_dev { include '::mysql::bindings::daemon_dev' } } diff --git a/manifests/bindings/client_dev.pp b/manifests/bindings/client_dev.pp new file mode 100644 index 000000000..f8275039a --- /dev/null +++ b/manifests/bindings/client_dev.pp @@ -0,0 +1,14 @@ +# Private class +class mysql::bindings::client_dev { + + if $mysql::bindings::client_dev_package_name { + package { 'mysql-client_dev': + ensure => $mysql::bindings::client_dev_package_ensure, + name => $mysql::bindings::client_dev_package_name, + provider => $mysql::bindings::client_dev_package_provider, + } + } else { + warning("No MySQL client development package configured for ${::operatingsystem}.") + } + +} \ No newline at end of file diff --git a/manifests/bindings/daemon_dev.pp b/manifests/bindings/daemon_dev.pp new file mode 100644 index 000000000..fe2db53ee --- /dev/null +++ b/manifests/bindings/daemon_dev.pp @@ -0,0 +1,14 @@ +# Private class +class mysql::bindings::daemon_dev { + + if $mysql::bindings::daemon_dev_package_name { + package { 'mysql-daemon_dev': + ensure => $mysql::bindings::daemon_dev_package_ensure, + name => $mysql::bindings::daemon_dev_package_name, + provider => $mysql::bindings::daemon_dev_package_provider, + } + } else { + warning("No MySQL daemon development package configured for ${::operatingsystem}.") + } + +} \ No newline at end of file diff --git a/manifests/params.pp b/manifests/params.pp index 42ea6e79c..bacad1798 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -10,17 +10,21 @@ $server_service_manage = true $server_service_enabled = true # mysql::bindings - $bindings_enable = false - $java_package_ensure = 'present' - $java_package_provider = undef - $perl_package_ensure = 'present' - $perl_package_provider = undef - $php_package_ensure = 'present' - $php_package_provider = undef - $python_package_ensure = 'present' - $python_package_provider = undef - $ruby_package_ensure = 'present' - $ruby_package_provider = undef + $bindings_enable = false + $java_package_ensure = 'present' + $java_package_provider = undef + $perl_package_ensure = 'present' + $perl_package_provider = undef + $php_package_ensure = 'present' + $php_package_provider = undef + $python_package_ensure = 'present' + $python_package_provider = undef + $ruby_package_ensure = 'present' + $ruby_package_provider = undef + $client_dev_package_ensure = 'present' + $client_dev_package_provider = undef + $daemon_dev_package_ensure = 'present' + $daemon_dev_package_provider = undef case $::osfamily { @@ -61,20 +65,22 @@ $pidfile = '/var/run/mysqld/mysqld.pid' } - $basedir = '/usr' - $datadir = '/var/lib/mysql' - $root_group = 'root' - $socket = '/var/lib/mysql/mysql.sock' - $ssl_ca = '/etc/mysql/cacert.pem' - $ssl_cert = '/etc/mysql/server-cert.pem' - $ssl_key = '/etc/mysql/server-key.pem' - $tmpdir = '/tmp' + $basedir = '/usr' + $datadir = '/var/lib/mysql' + $root_group = 'root' + $socket = '/var/lib/mysql/mysql.sock' + $ssl_ca = '/etc/mysql/cacert.pem' + $ssl_cert = '/etc/mysql/server-cert.pem' + $ssl_key = '/etc/mysql/server-key.pem' + $tmpdir = '/tmp' # mysql::bindings - $java_package_name = 'mysql-connector-java' - $perl_package_name = 'perl-DBD-MySQL' - $php_package_name = 'php-mysql' - $python_package_name = 'MySQL-python' - $ruby_package_name = 'ruby-mysql' + $java_package_name = 'mysql-connector-java' + $perl_package_name = 'perl-DBD-MySQL' + $php_package_name = 'php-mysql' + $python_package_name = 'MySQL-python' + $ruby_package_name = 'ruby-mysql' + $client_dev_package_name = 'libmysqlclient-devel' + $daemon_dev_package_name = 'mysql-devel' } 'Suse': { @@ -116,24 +122,26 @@ /OpenSuSE/ => 'rubygem-mysql', /(SLES|SLED)/ => 'ruby-mysql', } + $client_dev_package_name = 'libmysqlclient-devel' + $daemon_dev_package_name = 'mysql-devel' } 'Debian': { - $client_package_name = 'mysql-client' - $server_package_name = 'mysql-server' + $client_package_name = 'mysql-client' + $server_package_name = 'mysql-server' - $basedir = '/usr' - $config_file = '/etc/mysql/my.cnf' - $datadir = '/var/lib/mysql' - $log_error = '/var/log/mysql/error.log' - $pidfile = '/var/run/mysqld/mysqld.pid' - $root_group = 'root' - $server_service_name = 'mysql' - $socket = '/var/run/mysqld/mysqld.sock' - $ssl_ca = '/etc/mysql/cacert.pem' - $ssl_cert = '/etc/mysql/server-cert.pem' - $ssl_key = '/etc/mysql/server-key.pem' - $tmpdir = '/tmp' + $basedir = '/usr' + $config_file = '/etc/mysql/my.cnf' + $datadir = '/var/lib/mysql' + $log_error = '/var/log/mysql/error.log' + $pidfile = '/var/run/mysqld/mysqld.pid' + $root_group = 'root' + $server_service_name = 'mysql' + $socket = '/var/run/mysqld/mysqld.sock' + $ssl_ca = '/etc/mysql/cacert.pem' + $ssl_cert = '/etc/mysql/server-cert.pem' + $ssl_key = '/etc/mysql/server-key.pem' + $tmpdir = '/tmp' # mysql::bindings $java_package_name = 'libmysql-java' $perl_package_name = 'libdbd-mysql-perl' @@ -143,6 +151,8 @@ 'trusty' => 'ruby-mysql', default => 'libmysql-ruby', } + $client_dev_package_name = 'libmysqlclient-dev' + $daemon_dev_package_name = 'mysqld-dev' } 'FreeBSD': { @@ -166,6 +176,9 @@ $php_package_name = 'php5-mysql' $python_package_name = 'databases/py-MySQLdb' $ruby_package_name = 'databases/ruby-mysql' + # The libraries installed by these packages are included in client and server packages, no installation required. + $client_dev_package_name = undef + $daemon_dev_package_name = undef } default: { @@ -191,6 +204,9 @@ $php_package_name = 'php-mysql' $python_package_name = 'MySQL-python' $ruby_package_name = 'ruby-mysql' + # The libraries installed by these packages are included in client and server packages, no installation required. + $client_dev_package_name = undef + $daemon_dev_package_name = undef } default: { diff --git a/spec/acceptance/mysql_bindings_spec.rb b/spec/acceptance/mysql_bindings_spec.rb index e9cdb36ea..9aededd82 100644 --- a/spec/acceptance/mysql_bindings_spec.rb +++ b/spec/acceptance/mysql_bindings_spec.rb @@ -14,17 +14,21 @@ if fact('operatingsystemmajrelease') == '7' ruby_package_provider = 'gem' end + client_dev_package = 'libmysqlclient-devel' + daemon_dev_package = 'mysql-devel' when 'Suse' - java_package = 'mysql-connector-java' - perl_package = 'perl-DBD-mysql' - php_package = 'apache2-mod_php53' - python_package = 'python-mysql' + java_package = 'mysql-connector-java' + perl_package = 'perl-DBD-mysql' + php_package = 'apache2-mod_php53' + python_package = 'python-mysql' case operatingsystem when /OpenSuSE/ ruby_package = 'rubygem-mysql' when /(SLES|SLED)/ ruby_package = 'ruby-mysql' end + client_dev_package = 'libmysqlclient-devel' + daemon_dev_package = 'mysql-devel' when 'Debian' java_package = 'libmysql-java' perl_package = 'libdbd-mysql-perl' @@ -35,12 +39,16 @@ else ruby_package = 'libmysql-ruby' end + client_dev_package = 'libmysqlclient-dev' + daemon_dev_package = 'mysqld-dev' when 'FreeBSD' java_package = 'databases/mysql-connector-java' perl_package = 'p5-DBD-mysql' php_package = 'php5-mysql' python_package = 'databases/py-MySQLdb' ruby_package = 'ruby-mysql' + client_dev_package = nil + daemon_dev_package = nil else case operatingsystem when 'Amazon' @@ -49,6 +57,8 @@ php_package = 'php5-mysql' python_package = 'MySQL-python' ruby_package = 'ruby-mysql' + client_dev_package = nil + daemon_dev_package = nil end end @@ -82,21 +92,29 @@ class { 'mysql::bindings': php_enable => true, python_enable => true, ruby_enable => true, + client_dev => true, + daemon_dev => true, java_package_ensure => present, perl_package_ensure => present, php_package_ensure => present, python_package_ensure => present, ruby_package_ensure => present, + client_dev_ensure => present, + daemon_dev_ensure => present, java_package_name => #{java_package}, perl_package_name => #{perl_package}, php_package_name => #{php_package}, python_package_name => #{python_package}, ruby_package_name => #{ruby_package}, + client_dev_package_name => #{client_dev_package}, + daemon_dev_package_name => #{daemon_dev_package}, java_package_provider => undef, perl_package_provider => undef, php_package_provider => undef, python_package_provider => undef, ruby_package_provider => #{ruby_package_provider}, + client_dev_provider => undef, + daemon_dev_provider => undef, } EOS diff --git a/spec/classes/mysql_bindings_spec.rb b/spec/classes/mysql_bindings_spec.rb index 3168d8c39..cc512bda1 100644 --- a/spec/classes/mysql_bindings_spec.rb +++ b/spec/classes/mysql_bindings_spec.rb @@ -7,9 +7,11 @@ 'php_enable' => true, 'python_enable' => true, 'ruby_enable' => true, + 'client_dev' => true, + 'daemon_dev' => true, }} - shared_examples 'bindings' do |osfamily, operatingsystem, operatingsystemrelease, java_name, perl_name, php_name, python_name, ruby_name| + shared_examples 'bindings' do |osfamily, operatingsystem, operatingsystemrelease, java_name, perl_name, php_name, python_name, ruby_name, client_dev_name, daemon_dev_name| let :facts do { :osfamily => osfamily, :operatingsystem => operatingsystem, :operatingsystemrelease => operatingsystemrelease, :root_home => '/root', @@ -31,11 +33,23 @@ :name => ruby_name, :ensure => 'present' )} + if client_dev_name + it { should contain_package('mysql-client_dev').with( + :name => client_dev_name, + :ensure => 'present' + )} + end + if daemon_dev_name + it { should contain_package('mysql-daemon_dev').with( + :name => daemon_dev_name, + :ensure => 'present' + )} + end end context 'Debian' do - it_behaves_like 'bindings', 'Debian', 'Debian', '7.4','libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby' - it_behaves_like 'bindings', 'Debian', 'Ubuntu', '14.04', 'libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby' + it_behaves_like 'bindings', 'Debian', 'Debian', '7.4','libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby', 'libmysqlclient-dev', 'mysqld-dev' + it_behaves_like 'bindings', 'Debian', 'Ubuntu', '14.04', 'libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby', 'libmysqlclient-dev', 'mysqld-dev' end context 'freebsd' do @@ -43,8 +57,8 @@ end context 'redhat' do - it_behaves_like 'bindings', 'RedHat', 'RedHat', '6.5', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql' - it_behaves_like 'bindings', 'RedHat', 'OpenSuSE', '11.3', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql' + it_behaves_like 'bindings', 'RedHat', 'RedHat', '6.5', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql', 'libmysqlclient-devel', 'mysql-devel' + it_behaves_like 'bindings', 'RedHat', 'OpenSuSE', '11.3', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql', 'libmysqlclient-devel', 'mysql-devel' end describe 'on any other os' do