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
This commit is contained in:
parent
eac35c1d99
commit
b35247364f
|
@ -819,6 +819,12 @@ def upgrade_charm():
|
||||||
if missing_packages:
|
if missing_packages:
|
||||||
apt_install(missing_packages, fatal=True)
|
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'
|
MAN_PLUGIN = 'rabbitmq_management'
|
||||||
PROM_PLUGIN = 'rabbitmq_prometheus'
|
PROM_PLUGIN = 'rabbitmq_prometheus'
|
||||||
|
|
|
@ -479,3 +479,48 @@ class RelationUtil(CharmTestCase):
|
||||||
'rabbitmq-server')
|
'rabbitmq-server')
|
||||||
wait_app.assert_called_once_with()
|
wait_app.assert_called_once_with()
|
||||||
self.assertFalse(update_clients.called)
|
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