From 085d3569021441810c1dff7c8f4396003c690805 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 12 Aug 2021 17:48:51 +0900 Subject: [PATCH] Ubuntu: Use utf8mb3 charset in MySQL We are observing the failure in Ubuntu integration job caused by broken idempotency. It seems current mysql/mariadb in Ubuntu replaces utf8 with uft8mb3 automatically and this behavior results in unexpected change in second run. This change ensures that we use utf8mb3 in Ubuntu to avoid such mismatch caused by internal translation. Note this change is intended to be a quick gate fix and the charset would be updated to utf8mb4 later. Closes-Bug: #1929073 Change-Id: I7742120758057b5a00f1d093f355fda3791f4e02 --- manifests/aodh.pp | 1 + manifests/barbican.pp | 1 + manifests/cinder.pp | 1 + manifests/designate.pp | 1 + manifests/ec2api.pp | 1 + manifests/glance.pp | 1 + manifests/gnocchi.pp | 1 + manifests/heat.pp | 1 + manifests/ironic.pp | 2 ++ manifests/keystone.pp | 1 + manifests/magnum.pp | 1 + manifests/mistral.pp | 1 + manifests/murano.pp | 1 + manifests/neutron.pp | 1 + manifests/nova.pp | 4 +++- manifests/params.pp | 8 ++++++++ manifests/placement.pp | 1 + manifests/sahara.pp | 1 + manifests/trove.pp | 1 + manifests/vitrage.pp | 1 + manifests/watcher.pp | 1 + manifests/zaqar.pp | 1 + 22 files changed, 32 insertions(+), 1 deletion(-) diff --git a/manifests/aodh.pp b/manifests/aodh.pp index c8f07785e..296e0f979 100644 --- a/manifests/aodh.pp +++ b/manifests/aodh.pp @@ -51,6 +51,7 @@ class openstack_integration::aodh ( notification_driver => 'messagingv2', } class { 'aodh::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'aodh', } class { 'aodh::keystone::auth': diff --git a/manifests/barbican.pp b/manifests/barbican.pp index 953165d99..5f5e8d77c 100644 --- a/manifests/barbican.pp +++ b/manifests/barbican.pp @@ -18,6 +18,7 @@ class openstack_integration::barbican { include barbican class { 'barbican::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'barbican', } class { 'barbican::db': diff --git a/manifests/cinder.pp b/manifests/cinder.pp index 619b005c0..89308b6a5 100644 --- a/manifests/cinder.pp +++ b/manifests/cinder.pp @@ -42,6 +42,7 @@ class openstack_integration::cinder ( } include cinder::client class { 'cinder::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'cinder', } class { 'cinder::keystone::auth': diff --git a/manifests/designate.pp b/manifests/designate.pp index d69375224..6f76881b9 100644 --- a/manifests/designate.pp +++ b/manifests/designate.pp @@ -13,6 +13,7 @@ class openstack_integration::designate { } class { 'designate::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'designate', } class { 'designate::logging': diff --git a/manifests/ec2api.pp b/manifests/ec2api.pp index 0bc42f81d..6b4267f9b 100644 --- a/manifests/ec2api.pp +++ b/manifests/ec2api.pp @@ -12,6 +12,7 @@ class openstack_integration::ec2api { password => 'a_big_secret', } class { 'ec2api::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'ec2api', } case $::osfamily { diff --git a/manifests/glance.pp b/manifests/glance.pp index 1f84ed847..e73ee60cc 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -28,6 +28,7 @@ class openstack_integration::glance ( } class { 'glance::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'glance', } include glance diff --git a/manifests/gnocchi.pp b/manifests/gnocchi.pp index 72ccc0a92..66c378c8f 100644 --- a/manifests/gnocchi.pp +++ b/manifests/gnocchi.pp @@ -29,6 +29,7 @@ class openstack_integration::gnocchi ( coordination_url => $::openstack_integration::config::tooz_url, } class { 'gnocchi::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'gnocchi', } class { 'gnocchi::keystone::auth': diff --git a/manifests/heat.pp b/manifests/heat.pp index ca19f64df..01f94f809 100644 --- a/manifests/heat.pp +++ b/manifests/heat.pp @@ -64,6 +64,7 @@ class openstack_integration::heat ( notification_driver => 'messagingv2', } class { 'heat::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'heat', } class { 'heat::keystone::auth': diff --git a/manifests/ironic.pp b/manifests/ironic.pp index 3a32c552f..ece5b17af 100644 --- a/manifests/ironic.pp +++ b/manifests/ironic.pp @@ -33,6 +33,7 @@ class openstack_integration::ironic { amqp_sasl_mechanisms => 'PLAIN', } class { 'ironic::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'ironic', } class { 'ironic::keystone::auth': @@ -83,6 +84,7 @@ class openstack_integration::ironic { } 'RedHat': { class { 'ironic::inspector::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'a_big_secret', } class { 'ironic::inspector::authtoken': diff --git a/manifests/keystone.pp b/manifests/keystone.pp index eac1371f1..17598b001 100644 --- a/manifests/keystone.pp +++ b/manifests/keystone.pp @@ -52,6 +52,7 @@ class openstack_integration::keystone ( minute => '*/30', } class { 'keystone::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'keystone', } class { 'keystone::db': diff --git a/manifests/magnum.pp b/manifests/magnum.pp index d4fd77ae3..debf44c2a 100644 --- a/manifests/magnum.pp +++ b/manifests/magnum.pp @@ -57,6 +57,7 @@ class openstack_integration::magnum ( } class { 'magnum::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'magnum', } diff --git a/manifests/mistral.pp b/manifests/mistral.pp index 97c48e404..6c0b30a94 100644 --- a/manifests/mistral.pp +++ b/manifests/mistral.pp @@ -42,6 +42,7 @@ class openstack_integration::mistral { password => 'a_big_secret', } class { 'mistral::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'mistral', } class { 'mistral::api': diff --git a/manifests/murano.pp b/manifests/murano.pp index 45498f64e..07fa83d0e 100644 --- a/manifests/murano.pp +++ b/manifests/murano.pp @@ -40,6 +40,7 @@ class openstack_integration::murano { } class { 'murano::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'a_big_secret', } class { 'murano::logging': diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 82eabd46d..58eb94bca 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -116,6 +116,7 @@ class openstack_integration::neutron ( } class { 'neutron::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'neutron', } class { 'neutron::keystone::auth': diff --git a/manifests/nova.pp b/manifests/nova.pp index 1071c78da..366846480 100644 --- a/manifests/nova.pp +++ b/manifests/nova.pp @@ -63,10 +63,12 @@ class openstack_integration::nova ( } class { 'nova::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'nova', } class { 'nova::db::mysql_api': - password => 'nova', + charset => $::openstack_integration::params::mysql_charset, + password => 'nova', } include nova::cell_v2::simple_setup diff --git a/manifests/params.pp b/manifests/params.pp index d0ec4c42d..59540e138 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -5,11 +5,19 @@ class openstack_integration::params { $ca_bundle_cert_path = '/etc/ssl/certs/ca-bundle.crt' $cert_path = '/etc/pki/ca-trust/source/anchors/puppet_openstack.pem' $update_ca_certs_cmd = '/usr/bin/update-ca-trust force-enable && /usr/bin/update-ca-trust extract' + $mysql_charset = 'utf8' } 'Debian': { $ca_bundle_cert_path = '/etc/ssl/certs/puppet_openstack.pem' $cert_path = '/usr/local/share/ca-certificates/puppet_openstack.crt' $update_ca_certs_cmd = '/usr/sbin/update-ca-certificates -f' + if $::operatingsystem == 'Debian' { + $mysql_charset = 'utf8' + } else { + # TODO(tkajinam): This is to fix the gate quickly. We should revisit + # this later. utf8mb4 would be the preferred option + $mysql_charset = 'utf8mb3' + } } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem") diff --git a/manifests/placement.pp b/manifests/placement.pp index b0b1ef7a0..d75040e81 100644 --- a/manifests/placement.pp +++ b/manifests/placement.pp @@ -16,6 +16,7 @@ class openstack_integration::placement { } class { 'placement::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'placement', } diff --git a/manifests/sahara.pp b/manifests/sahara.pp index 279a23b53..7927354d1 100644 --- a/manifests/sahara.pp +++ b/manifests/sahara.pp @@ -25,6 +25,7 @@ class openstack_integration::sahara ( } class { 'sahara::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'sahara', } diff --git a/manifests/trove.pp b/manifests/trove.pp index a021f7f82..c658113bb 100644 --- a/manifests/trove.pp +++ b/manifests/trove.pp @@ -45,6 +45,7 @@ class openstack_integration::trove { nova_proxy_admin_pass => 'a_big_secret', } class { 'trove::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'trove', } class { 'trove::keystone::auth': diff --git a/manifests/vitrage.pp b/manifests/vitrage.pp index 7b36b7275..1b4b91ecf 100644 --- a/manifests/vitrage.pp +++ b/manifests/vitrage.pp @@ -17,6 +17,7 @@ class openstack_integration::vitrage { } class { 'vitrage::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'vitrage', } diff --git a/manifests/watcher.pp b/manifests/watcher.pp index 16314d2c5..41d72dc7c 100644 --- a/manifests/watcher.pp +++ b/manifests/watcher.pp @@ -16,6 +16,7 @@ class openstack_integration::watcher { Exec['update-ca-certificates'] ~> Service['httpd'] } class { 'watcher::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'watcher', } class { 'watcher::db': diff --git a/manifests/zaqar.pp b/manifests/zaqar.pp index 9fe6ea148..2affec555 100644 --- a/manifests/zaqar.pp +++ b/manifests/zaqar.pp @@ -13,6 +13,7 @@ class openstack_integration::zaqar { debug => true, } class { 'zaqar::db::mysql': + charset => $::openstack_integration::params::mysql_charset, password => 'zaqar', } class { 'zaqar::keystone::auth':