From d3980909ad460b78f2c0788a37a414238bb2ae66 Mon Sep 17 00:00:00 2001 From: Stamatis Katsaounis Date: Thu, 24 Oct 2019 11:30:56 +0300 Subject: [PATCH] Add binary_prefix=true argument to mysql uri This patch adds the argument binary_prefix=true to MySQL uri if OpenStack version is equal or greater than Rocky due to Python upper-constraints [1]. This argument is required because of PyMySQL's change from version 0.8 and on [2], in order to fix Gnocchi API warnings like this [3]. [1] https://github.com/openstack/requirements/blob/stable/rocky/upper-constraints.txt#L377 [2] https://github.com/PyMySQL/PyMySQL/blob/master/CHANGELOG#L61-L64 [3] https://github.com/gnocchixyz/gnocchi/issues/847 Change-Id: Ie8b10209daa4de74427e175ef21ddf306a17a0ae Signed-off-by: Stamatis Katsaounis (cherry picked from commit bf7ac78d07a313651e486196309140517d9ad861) --- src/lib/charm/openstack/gnocchi.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/lib/charm/openstack/gnocchi.py b/src/lib/charm/openstack/gnocchi.py index 0128235..664f4c2 100644 --- a/src/lib/charm/openstack/gnocchi.py +++ b/src/lib/charm/openstack/gnocchi.py @@ -76,6 +76,25 @@ def ceph_config(config): return CEPH_CONF +class GnocchiCharmDatabaseRelationAdapter(adapters.DatabaseRelationAdapter): + """ + Overrides default class to add binary_prefix option to solve + 'Invalid utf8 character' warnings + """ + + def get_uri(self, prefix=None): + uri = super(GnocchiCharmDatabaseRelationAdapter, self).get_uri(prefix) + release = ch_utils.get_os_codename_install_source( + self.config['openstack-origin']) + if (ch_utils.OPENSTACK_RELEASES.index(release) >= + ch_utils.OPENSTACK_RELEASES.index('rocky')): + if '?' in uri: + uri += '&binary_prefix=true' + else: + uri += '?binary_prefix=true' + return uri + + class GnocchiCharmRelationAdapaters(adapters.OpenStackAPIRelationAdapters): """ @@ -84,7 +103,7 @@ class GnocchiCharmRelationAdapaters(adapters.OpenStackAPIRelationAdapters): relation_adapters = { 'storage_ceph': charms_openstack.plugins.CephRelationAdapter, - 'shared_db': adapters.DatabaseRelationAdapter, + 'shared_db': GnocchiCharmDatabaseRelationAdapter, 'cluster': adapters.PeerHARelationAdapter, 'coordinator_memcached': adapters.MemcacheRelationAdapter, }