]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
Migrate mysql backend to use openstacklib::db::mysql
authorColleen Murphy <colleen@puppetlabs.com>
Thu, 31 Jul 2014 18:11:26 +0000 (11:11 -0700)
committerColleen Murphy <colleen@puppetlabs.com>
Wed, 13 Aug 2014 18:13:44 +0000 (11:13 -0700)
Implements: blueprint commmon-openstack-database-resource
Change-Id: Iaa4f1cfb6a26795112117e2d3230b4a11250e2df

.fixtures.yml
Modulefile
manifests/db.pp
manifests/db/mysql.pp
manifests/db/mysql/host_access.pp [deleted file]
spec/classes/ceilometer_db_mysql_spec.rb

index 08b2b2d85957f0cc4cc198a50e468578c4b714ac..cf0f5e521f193759c2b51e53aaa0e62c76dcba63 100644 (file)
@@ -6,6 +6,7 @@ fixtures:
       repo: 'git://github.com/puppetlabs/puppetlabs-mysql.git'
       ref:  'origin/2.2.x'
     'nova': 'git://github.com/stackforge/puppet-nova.git'
+    'openstacklib': 'git://github.com/stackforge/puppet-openstacklib.git'
     'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
   symlinks:
     'ceilometer': "#{source_dir}"
index 53dbc1dc4d6be326742220d06390d57125b38802..aa446a02ac8370aa3c2db23c62cf5c5c75a0b224 100644 (file)
@@ -9,5 +9,5 @@ source       'https://github.com/stackforge/puppet-ceilometer'
 
 dependency 'puppetlabs/inifile', '>=1.0.0 <2.0.0'
 dependency 'puppetlabs/keystone', '>=4.0.0 <5.0.0'
-dependency 'puppetlabs/mysql', '>=0.9.0 <3.0.0'
 dependency 'puppetlabs/stdlib', '>= 3.2.0'
+dependency 'stackforge/openstacklib', '>=5.0.0'
index 0f17bf8885dc79e9e6f339cd7d92cb891c3a70b6..3bed0c1383646e2b999f3af0192c2f378219d04f 100644 (file)
 #    enable dbsync.
 #
 #  [*mysql_module*]
-#    (optional) Mysql puppet module version to use. Tested versions
-#    are 0.9 and 2.2
-#    Defaults to '2.2'
+#    (optional) Deprecated. Does nothing.
 #
 class ceilometer::db (
   $database_connection = 'mysql://ceilometer:ceilometer@localhost/ceilometer',
   $sync_db             = true,
-  $mysql_module        = '2.2',
+  $mysql_module        = undef,
 ) {
 
   include ceilometer::params
 
+  if $mysql_module {
+    warning('The mysql_module parameter is deprecated. The latest 2.x mysql module will be used.')
+  }
+
   Package<| title == 'ceilometer-common' |> -> Class['ceilometer::db']
 
   validate_re($database_connection,
@@ -31,11 +33,7 @@ class ceilometer::db (
     /^mysql:\/\//: {
       $backend_package = false
 
-      if ($mysql_module >= 2.2) {
-        include mysql::bindings::python
-      } else {
-        include mysql::python
-      }
+      include mysql::bindings::python
     }
     /^postgres:\/\//: {
       $backend_package = $::ceilometer::params::psycopg_package_name
index 728ea967122a9b849b5bd81266461146eb81636e..6fd47c45ce6f45d7a7072c14da1a9504a7902237 100644 (file)
 #    the database collation. Optional. Defaults to 'utf8_unicode_ci'
 #
 #  [*mysql_module*]
-#    (optional) Mysql module version to use. Tested versions
-#    are 0.9 and 2.2
-#    Defaults to '2.2'
+#    (optional) Deprecated. Does nothing.
 #
 class ceilometer::db::mysql(
   $password      = false,
   $dbname        = 'ceilometer',
   $user          = 'ceilometer',
-  $host          = 'localhost',
+  $host          = '127.0.0.1',
   $allowed_hosts = undef,
   $charset       = 'utf8',
   $collate       = 'utf8_unicode_ci',
-  $mysql_module  = '2.2',
+  $mysql_module  = undef,
 ) {
 
-  validate_string($password)
-
-  Class['mysql::server'] -> Class['ceilometer::db::mysql']
-  Class['ceilometer::db::mysql'] -> Exec<| title == 'ceilometer-dbsync' |>
-  Mysql::Db[$dbname] ~> Exec<| title == 'ceilometer-dbsync' |>
-
-  if $mysql_module >= 2.2 {
-    mysql::db { $dbname:
-      user         => $user,
-      password     => $password,
-      host         => $host,
-      charset      => $charset,
-      collate      => $collate,
-      require      => Class['mysql::server'],
-    }
-  } else {
-    mysql::db { $dbname:
-      user         => $user,
-      password     => $password,
-      host         => $host,
-      charset      => $charset,
-      require      => Class['mysql::config'],
-    }
+  if $mysql_module {
+    warning('The mysql_module parameter is deprecated. The latest 2.x mysql module will be used.')
   }
 
-  # Check allowed_hosts to avoid duplicate resource declarations
-  if is_array($allowed_hosts) and delete($allowed_hosts,$host) != [] {
-    $real_allowed_hosts = delete($allowed_hosts,$host)
-  } elsif is_string($allowed_hosts) and ($allowed_hosts != $host) {
-    $real_allowed_hosts = $allowed_hosts
-  }
+  validate_string($password)
 
-  if $real_allowed_hosts {
-    ceilometer::db::mysql::host_access { $real_allowed_hosts:
-      user         => $user,
-      password     => $password,
-      database     => $dbname,
-      mysql_module => $mysql_module,
-    }
+  ::openstacklib::db::mysql { 'ceilometer':
+    user          => $user,
+    password_hash => mysql_password($password),
+    dbname        => $dbname,
+    host          => $host,
+    charset       => $charset,
+    collate       => $collate,
+    allowed_hosts => $allowed_hosts,
   }
+
+  ::Openstacklib::Db::Mysql['ceilometer'] ~> Exec<| title == 'ceilometer-dbsync' |>
 }
diff --git a/manifests/db/mysql/host_access.pp b/manifests/db/mysql/host_access.pp
deleted file mode 100644 (file)
index e91a551..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# Allow a user to access the ceilometer database
-#
-# == Namevar
-#  The host to allow
-#
-# == Parameters
-#  [*user*]
-#    username to allow
-#
-#  [*password*]
-#    user password
-#
-#  [*database*]
-#    the database name
-#
-define ceilometer::db::mysql::host_access ($user, $password, $database, $mysql_module='2.2')  {
-  # New types for mysql module v2.0+
-  if ($mysql_module >= 2.2) {
-    mysql_user { "${user}@${name}":
-      password_hash => mysql_password($password),
-      provider      => 'mysql',
-      require       => Mysql_database[$database],
-    }
-
-    mysql_grant { "${user}@${name}/${database}":
-      privileges => 'all',
-      provider   => 'mysql',
-      table      => "${database}.*",
-      user       => "${user}@${name}",
-      require    => Mysql_user["${user}@${name}"]
-    }
-
-  } else {
-    database_user { "${user}@${name}":
-      password_hash => mysql_password($password),
-      provider      => 'mysql',
-      require       => Database[$database],
-    }
-
-    database_grant { "${user}@${name}/${database}":
-      # TODO figure out which privileges to grant.
-      privileges => 'all',
-      provider   => 'mysql',
-      require    => Database_user["${user}@${name}"]
-    }
-  }
-}
index 30d97c62b28a7af7e04b276fec0dd139d1bea138..5d32abad66ef511f8e7ad23429cb94576c39be61 100644 (file)
@@ -13,7 +13,6 @@ describe 'ceilometer::db::mysql' do
       :host         => 'localhost',
       :charset      => 'utf8',
       :collate      => 'utf8_unicode_ci',
-      :mysql_module => '0.9',
     }
   end
 
@@ -25,12 +24,11 @@ describe 'ceilometer::db::mysql' do
     end
 
     it 'creates a mysql database' do
-      should contain_mysql__db( params[:dbname] ).with(
-        :user     => params[:user],
-        :password => params[:password],
-        :host     => params[:host],
-        :charset  => params[:charset],
-        :require  => 'Class[Mysql::Config]'
+      should contain_openstacklib__db__mysql( params[:dbname] ).with(
+        :user          => params[:user],
+        :password_hash => '*58C036CDA51D8E8BBBBF2F9EA5ABF111ADA444F0',
+        :host          => params[:host],
+        :charset       => params[:charset]
       )
     end
   end
@@ -62,16 +60,6 @@ describe 'ceilometer::db::mysql' do
       }
     end
 
-    it {should_not contain_ceilometer__db__mysql__host_access("localhost").with(
-      :user     => 'ceilometer',
-      :password => 'ceilometerpass',
-      :database => 'ceilometer'
-    )}
-    it {should contain_ceilometer__db__mysql__host_access("%").with(
-      :user     => 'ceilometer',
-      :password => 'ceilometerpass',
-      :database => 'ceilometer'
-    )}
   end
 
   describe "overriding allowed_hosts param to string" do
@@ -85,11 +73,6 @@ describe 'ceilometer::db::mysql' do
       }
     end
 
-    it {should contain_ceilometer__db__mysql__host_access("192.168.1.1").with(
-      :user     => 'ceilometer',
-      :password => 'ceilometerpass2',
-      :database => 'ceilometer'
-    )}
   end
 
   describe "overriding allowed_hosts param equals to host param " do
@@ -103,10 +86,5 @@ describe 'ceilometer::db::mysql' do
       }
     end
 
-    it {should_not contain_ceilometer__db__mysql__host_access("localhost").with(
-      :user     => 'ceilometer',
-      :password => 'ceilometerpass2',
-      :database => 'ceilometer'
-    )}
   end
 end