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:
parent
511f2e8eb8
commit
09100f95b6
|
@ -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():
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue