Set cluster-partition-handling on upgrade-charm.
For units deployed before the implementation of the
cluster-partition-handling strategy they won't have that key set in the
leader making the charm believe there are pending tasks, so this change
seeds the key when is not set with the value present in the charm's
configuration.
Change-Id: Ifdae35ffee1ad7a8f4e5248c817cca14b69d9566
Closes-Bug: #1979092
(cherry picked from commit b35247364f
)
This commit is contained in:
parent
23cdf87953
commit
88112ade7d
|
@ -819,6 +819,12 @@ def upgrade_charm():
|
|||
if missing_packages:
|
||||
apt_install(missing_packages, fatal=True)
|
||||
|
||||
if is_leader() and not leader_get(rabbit.CLUSTER_MODE_KEY):
|
||||
log("Setting {} to {} on upgrade-charm.".format(
|
||||
rabbit.CLUSTER_MODE_KEY,
|
||||
config(rabbit.CLUSTER_MODE_KEY)), level='INFO')
|
||||
leader_set({rabbit.CLUSTER_MODE_KEY: config(rabbit.CLUSTER_MODE_KEY)})
|
||||
|
||||
|
||||
MAN_PLUGIN = 'rabbitmq_management'
|
||||
PROM_PLUGIN = 'rabbitmq_prometheus'
|
||||
|
|
|
@ -479,3 +479,48 @@ class RelationUtil(CharmTestCase):
|
|||
'rabbitmq-server')
|
||||
wait_app.assert_called_once_with()
|
||||
self.assertFalse(update_clients.called)
|
||||
|
||||
@patch.object(rabbitmq_server_relations, 'leader_set')
|
||||
@patch.object(rabbitmq_server_relations, 'leader_get')
|
||||
@patch.object(rabbitmq_server_relations, 'apt_install')
|
||||
@patch.object(rabbitmq_server_relations, 'filter_installed_packages')
|
||||
@patch.object(rabbitmq_server_relations, 'apt_update')
|
||||
@patch.object(rabbitmq_server_relations, 'update_clients')
|
||||
@patch('rabbit_utils.clustered_with_leader')
|
||||
@patch('rabbit_utils.update_peer_cluster_status')
|
||||
@patch('rabbit_utils.migrate_passwords_to_peer_relation')
|
||||
@patch.object(rabbitmq_server_relations, 'is_elected_leader')
|
||||
@patch('os.listdir')
|
||||
@patch('charmhelpers.contrib.hardening.harden.config')
|
||||
@patch.object(rabbitmq_server_relations, 'config')
|
||||
def test_upgrade_charm(self, config, harden_config, listdir,
|
||||
is_elected_releader,
|
||||
migrate_passwords_to_peer_relation,
|
||||
update_peer_cluster_status,
|
||||
clustered_with_leader,
|
||||
update_clients,
|
||||
apt_update,
|
||||
filter_installed_packages,
|
||||
apt_install,
|
||||
leader_get,
|
||||
leader_set):
|
||||
config.side_effect = self.test_config
|
||||
harden_config.side_effect = self.test_config
|
||||
is_elected_releader.return_value = True
|
||||
clustered_with_leader.return_value = True
|
||||
filter_installed_packages.side_effect = lambda x: x
|
||||
|
||||
leader_get.return_value = None
|
||||
|
||||
rabbitmq_server_relations.upgrade_charm()
|
||||
|
||||
migrate_passwords_to_peer_relation.assert_called()
|
||||
update_peer_cluster_status.assert_called()
|
||||
apt_update.assert_called_with(fatal=True)
|
||||
apt_install.assert_called_with(['python3-amqplib',
|
||||
'python3-croniter'],
|
||||
fatal=True)
|
||||
leader_set.assert_called_with(
|
||||
{rabbit_utils.CLUSTER_MODE_KEY:
|
||||
self.test_config.get(rabbit_utils.CLUSTER_MODE_KEY)}
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue