Set the b64 encoded cert as a string

Sending a byte string to relation-set can result in the data
being sent being prefixed with a "b'". In this case it corrupts
the b64encoding and the receiving charm (ceilometer-agent) cannot
b64decode the data.

* Backported test fixes too to fix the gate.

Change-Id: I004bff0706362f893f2f69b07568be1034dbf574
(cherry picked from commit 7ad2d31417)
This commit is contained in:
Liam Young 2020-05-26 14:48:12 +00:00
parent ad34a6d26e
commit 895dbee21d
4 changed files with 97 additions and 35 deletions

View File

@ -440,7 +440,7 @@ def ceilometer_joined():
# pass the data to agents.
if 'rabbit_ssl_ca' in context:
with open(context['rabbit_ssl_ca'], 'rb') as fh:
context['rabbit_ssl_ca'] = base64.b64encode(fh.read())
context['rabbit_ssl_ca'] = base64.b64encode(fh.read()).decode()
for relid in relation_ids('ceilometer-service'):
relation_set(relid, context)

View File

@ -22,7 +22,7 @@ applications:
to:
- '1'
mongodb:
charm: cs:trusty/mongodb
charm: cs:trusty/mongodb-53
num_units: 1
to:
- '2'
@ -98,4 +98,4 @@ relations:
- - 'nova-cloud-controller:cloud-compute'
- 'nova-compute:cloud-compute'
- - 'nova-cloud-controller:image-service'
- 'glance:image-service'
- 'glance:image-service'

View File

@ -10,58 +10,101 @@ machines:
5: {}
6: {}
7: {}
8: {}
9: {}
10: {}
11: {}
12: {}
13: {}
14: {}
15: {}
applications:
percona-cluster:
charm: cs:~openstack-charmers/percona-cluster
charm: cs:~openstack-charmers-next/percona-cluster
num_units: 1
options:
max-connections: 1000
innodb-buffer-pool-size: 256M
to:
- '0'
rabbitmq-server:
charm: cs:~openstack-charmers/rabbitmq-server
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
to:
- '1'
mongodb:
charm: cs:xenial/mongodb
memcached:
charm: cs:~memcached-team/memcached
num_units: 1
to:
- '2'
keystone:
charm: cs:~openstack-charmers/keystone
num_units: 1
ceph-osd:
charm: cs:~openstack-charmers-next/ceph-osd
num_units: 3
storage:
osd-devices: 'cinder,10G'
options:
openstack-origin: *source
source: *source
to:
- '3'
glance:
charm: cs:~openstack-charmers/glance
num_units: 1
options:
openstack-origin: *source
to:
- '4'
nova-cloud-controller:
charm: cs:~openstack-charmers/nova-cloud-controller
num_units: 1
options:
openstack-origin: *source
to:
- '5'
nova-compute:
charm: cs:~openstack-charmers/nova-compute
num_units: 1
ceph-mon:
charm: cs:~openstack-charmers-next/ceph-mon
num_units: 3
options:
openstack-origin: *source
source: *source
to:
- '6'
- '7'
- '8'
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
options:
openstack-origin: *source
to:
- '9'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
options:
openstack-origin: *source
to:
- '10'
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
options:
openstack-origin: *source
to:
- '11'
nova-compute:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 1
options:
openstack-origin: *source
to:
- '12'
ceilometer:
num_units: 1
options:
openstack-origin: *source
to:
- '7'
- '13'
gnocchi:
charm: cs:~openstack-charmers-next/gnocchi
num_units: 1
options:
openstack-origin: *source
to:
- '14'
ceilometer-agent:
charm: cs:~openstack-charmers/ceilometer-agent
charm: cs:~openstack-charmers-next/ceilometer-agent
mongodb:
num_units: 1
charm: cs:xenial/mongodb
to:
- '15'
relations:
- - 'ceilometer:amqp'
- 'rabbitmq-server:amqp'
@ -69,6 +112,8 @@ relations:
- 'keystone:identity-notifications'
- - 'ceilometer:ceilometer-service'
- 'ceilometer-agent:ceilometer-service'
- - 'ceilometer:metric-service'
- 'gnocchi:metric-service'
- - 'ceilometer:identity-service'
- 'keystone:identity-service'
- - 'ceilometer:shared-db'
@ -98,4 +143,14 @@ relations:
- - 'nova-cloud-controller:cloud-compute'
- 'nova-compute:cloud-compute'
- - 'nova-cloud-controller:image-service'
- 'glance:image-service'
- 'glance:image-service'
- - 'ceph-mon:osd'
- 'ceph-osd:mon'
- - 'gnocchi:shared-db'
- 'percona-cluster:shared-db'
- - 'gnocchi:storage-ceph'
- 'ceph-mon:client'
- - 'gnocchi:coordinator-memcached'
- 'memcached:cache'
- - 'gnocchi:identity-service'
- 'keystone:identity-service'

View File

@ -16,7 +16,7 @@ import copy
import os
import sys
from mock import patch, MagicMock, call
from mock import patch, MagicMock, call, mock_open
# python-apt is not installed as part of test-requirements but is imported by
# some charmhelpers modules so create a fake import.
@ -317,10 +317,17 @@ class CeilometerHooksTest(CharmTestCase):
@patch('charmhelpers.core.hookenv.config')
def test_ceilometer_joined(self, mock_config):
self.relation_ids.return_value = ['ceilometer:0']
self.get_ceilometer_context.return_value = {'test': 'data'}
hooks.hooks.execute(['hooks/ceilometer-service-relation-joined'])
self.relation_set.assert_called_with('ceilometer:0',
{'test': 'data'})
self.get_ceilometer_context.return_value = {
'test': 'data',
'rabbit_ssl_ca': '/etc/certs/rabbit.pem'}
with patch.object(
hooks,
'open',
mock_open(read_data=b'dGVzdCBjZXJ0Cg==')):
hooks.hooks.execute(['hooks/ceilometer-service-relation-joined'])
self.relation_set.assert_called_with(
'ceilometer:0',
{'test': 'data', 'rabbit_ssl_ca': 'ZEdWemRDQmpaWEowQ2c9PQ=='})
@patch('charmhelpers.core.hookenv.config')
def test_identity_notifications_changed(self, mock_config):