Handle PostgreSQL self-restart demotion preflight
This commit is contained in:
@@ -124,3 +124,63 @@ result = plugin.demote_prepare(
|
||||
assert result["ocf_rc"] == 1
|
||||
assert result["reason"] == "successor_not_configured"
|
||||
print("unconfigured_successor rejected")
|
||||
|
||||
print()
|
||||
print("===== SELF-RESTART PREPARE =====")
|
||||
|
||||
self_restart_state = {
|
||||
"postgresql": {
|
||||
"notification": {
|
||||
"type": "pre",
|
||||
"operation": "demote",
|
||||
"demote_uname": "david-eve",
|
||||
"promote_uname": "david-eve",
|
||||
"promoted_uname": "david-eve",
|
||||
"unpromoted_uname": "david-prodesk david-macbookpro",
|
||||
"received_at": time.time(),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
result = plugin.demote_prepare(
|
||||
{
|
||||
"PACEMAKER_NODE_NAME": "david-eve",
|
||||
"PG_REPLICATION_PEERS": (
|
||||
"david-prodesk=192.168.1.4:5432,"
|
||||
"david-eve=192.168.1.3:5432"
|
||||
),
|
||||
},
|
||||
self_restart_state,
|
||||
{},
|
||||
)
|
||||
|
||||
assert result["ocf_rc"] == 0
|
||||
assert result["ready"] is False
|
||||
assert result["identity_validated"] is True
|
||||
assert result["reason"] == "local_restart_checks_pending"
|
||||
assert result["handoff_mode"] == "local_restart"
|
||||
assert result["final_handoff_required"] is False
|
||||
assert result["successor_node"] == "david-eve"
|
||||
assert result["checks"]["self_successor"] is True
|
||||
assert result["checks"]["local_currently_promoted"] is True
|
||||
|
||||
print("self_restart_prepare accepted")
|
||||
|
||||
self_restart_state["postgresql"]["notification"]["promoted_uname"] = ""
|
||||
|
||||
result = plugin.demote_prepare(
|
||||
{
|
||||
"PACEMAKER_NODE_NAME": "david-eve",
|
||||
"PG_REPLICATION_PEERS": (
|
||||
"david-prodesk=192.168.1.4:5432,"
|
||||
"david-eve=192.168.1.3:5432"
|
||||
),
|
||||
},
|
||||
self_restart_state,
|
||||
{},
|
||||
)
|
||||
|
||||
assert result["ocf_rc"] == 1
|
||||
assert result["reason"] == "self_restart_not_current_primary"
|
||||
|
||||
print("false_self_restart rejected")
|
||||
|
||||
Reference in New Issue
Block a user