diff --git a/patroni/ctl.py b/patroni/ctl.py index 3ad22e2a..d47239db 100644 --- a/patroni/ctl.py +++ b/patroni/ctl.py @@ -559,13 +559,13 @@ def failover(config_file, cluster_name, master, candidate, force, dcs, scheduled if cluster.leader is None and not cluster.is_paused(): raise PatroniCtlException('This cluster has no master') - if master is None and (not cluster.is_paused() or cluster.leader): + if master is None and not cluster.is_paused(): if force: master = cluster.leader.member.name else: master = click.prompt('Master', type=str, default=cluster.leader.member.name) - if not (master is not None and cluster.leader and cluster.leader.member.name == master): + if master is None or not cluster.leader or cluster.leader.member.name != master: raise PatroniCtlException('Member {0} is not the leader of cluster {1}'.format(master, cluster_name)) candidate_names = [str(m.name) for m in cluster.members if m.name != master] diff --git a/tests/test_ctl.py b/tests/test_ctl.py index 2237145e..c8c93ea1 100644 --- a/tests/test_ctl.py +++ b/tests/test_ctl.py @@ -82,11 +82,6 @@ class TestCtl(unittest.TestCase): result = self.runner.invoke(ctl, ['failover', 'dummy'], input='leader\nother\n2030-01-01T12:23:00\ny') assert result.exit_code == 0 - with patch('patroni.dcs.Cluster.is_paused', Mock(return_value=True)): - result = self.runner.invoke(ctl, - ['failover', 'dummy', '--force', '--scheduled', '2015-01-01T12:00:00+01:00']) - assert result.exit_code == 1 - # Aborting failover,as we anser NO to the confirmation result = self.runner.invoke(ctl, ['failover', 'dummy'], input='leader\nother\n\nN') assert result.exit_code == 1