Use peer_retrieve to get secrets from other nodes.

The secret sharing previously worked because it used the peer storage
prior to leadership election due to the direct usage of relation_get
rather than using the retrieval methods provided by the peer storage
framework.

Closes Bug: #1541618

(cherry picked from commit fafc1d4ff5)

Change-Id: I9ed88f17bf8659eeaeab4b86fea5c7710611a779
This commit is contained in:
Billy Olsen 2016-02-03 17:09:08 -07:00 committed by Billy Olsen
parent 511f2e8eb8
commit 09100f95b6
2 changed files with 9 additions and 6 deletions

View File

@ -57,7 +57,10 @@ from charmhelpers.contrib.hahelpers.cluster import (
get_hacluster_config,
is_elected_leader
)
from charmhelpers.contrib.peerstorage import peer_store
from charmhelpers.contrib.peerstorage import (
peer_retrieve,
peer_store,
)
from charmhelpers.payload.execd import execd_preinstall
hooks = Hooks()
@ -186,7 +189,7 @@ def cluster_joined():
'cluster-relation-departed')
@restart_on_change(restart_map(), stopstart=True)
def cluster_changed():
shared_secret = relation_get('shared_secret')
shared_secret = peer_retrieve('shared_secret')
if shared_secret is None or shared_secret.strip() == '':
log('waiting for shared secret to be provided by leader')
elif not shared_secret == get_shared_secret():

View File

@ -16,7 +16,6 @@ from test_utils import CharmTestCase
TO_PATCH = [
'relation_get',
'relation_set',
'relation_get',
'configure_installation_source',
'openstack_upgrade_available',
'do_openstack_upgrade',
@ -33,6 +32,7 @@ TO_PATCH = [
'get_packages',
'service_restart',
'update_nrpe_config',
'peer_retrieve',
'peer_store',
'configure_https',
'status_set',
@ -234,7 +234,7 @@ class CeilometerHooksTest(CharmTestCase):
@patch('charmhelpers.core.hookenv.config')
@patch.object(hooks, 'set_shared_secret')
def test_cluster_changed(self, shared_secret, mock_config):
self.relation_get.return_value = None
self.peer_retrieve.return_value = None
hooks.hooks.execute(['hooks/cluster-relation-changed'])
self.assertFalse(shared_secret.called)
@ -243,7 +243,7 @@ class CeilometerHooksTest(CharmTestCase):
@patch.object(hooks, 'set_shared_secret')
def test_cluster_changed_new_secret(self, mock_set_secret, mock_get_secret,
mock_config):
self.relation_get.return_value = "leader_secret"
self.peer_retrieve.return_value = "leader_secret"
mock_get_secret.return_value = "my_secret"
hooks.hooks.execute(['hooks/cluster-relation-changed'])
mock_set_secret.assert_called_with("leader_secret")
@ -253,7 +253,7 @@ class CeilometerHooksTest(CharmTestCase):
@patch.object(hooks, 'set_shared_secret')
def test_cluster_changed_old_secret(self, mock_set_secret, mock_get_secret,
mock_config):
self.relation_get.return_value = "leader_secret"
self.peer_retrieve.return_value = "leader_secret"
mock_get_secret.return_value = "leader_secret"
hooks.hooks.execute(['hooks/cluster-relation-changed'])
self.assertEquals(mock_set_secret.call_count, 0)