Expose demotion database gate as OCF parameter
This commit is contained in:
@@ -13,6 +13,7 @@ OCF_RESKEY_replication_slot_default=""
|
||||
OCF_RESKEY_application_name_default=""
|
||||
OCF_RESKEY_rejoin_allow_basebackup_default="false"
|
||||
OCF_RESKEY_rejoin_basebackup_headroom_percent_default="50"
|
||||
OCF_RESKEY_demote_database_gate_default="false"
|
||||
|
||||
: "${OCF_RESKEY_service_user:=${OCF_RESKEY_service_user_default}}"
|
||||
: "${OCF_RESKEY_service_name:=${OCF_RESKEY_service_name_default}}"
|
||||
@@ -27,6 +28,7 @@ OCF_RESKEY_rejoin_basebackup_headroom_percent_default="50"
|
||||
: "${OCF_RESKEY_application_name:=${OCF_RESKEY_application_name_default}}"
|
||||
: "${OCF_RESKEY_rejoin_allow_basebackup:=${OCF_RESKEY_rejoin_allow_basebackup_default}}"
|
||||
: "${OCF_RESKEY_rejoin_basebackup_headroom_percent:=${OCF_RESKEY_rejoin_basebackup_headroom_percent_default}}"
|
||||
: "${OCF_RESKEY_demote_database_gate:=${OCF_RESKEY_demote_database_gate_default}}"
|
||||
|
||||
SERVICE_USER="${OCF_RESKEY_service_user}"
|
||||
SERVICE_NAME="${OCF_RESKEY_service_name}"
|
||||
@@ -41,6 +43,8 @@ REPLICATION_SLOT="${OCF_RESKEY_replication_slot}"
|
||||
APPLICATION_NAME="${OCF_RESKEY_application_name}"
|
||||
REJOIN_ALLOW_BASEBACKUP="${OCF_RESKEY_rejoin_allow_basebackup}"
|
||||
REJOIN_BASEBACKUP_HEADROOM_PERCENT="${OCF_RESKEY_rejoin_basebackup_headroom_percent}"
|
||||
DEMOTE_DATABASE_GATE="${OCF_RESKEY_demote_database_gate}"
|
||||
export MC_DEMOTE_DATABASE_GATE="${DEMOTE_DATABASE_GATE}"
|
||||
|
||||
# Resolve PostgreSQL configuration from the managed service when Pacemaker has
|
||||
# not explicitly supplied it. The application configuration remains the source
|
||||
@@ -290,6 +294,15 @@ validate_all()
|
||||
return "${OCF_ERR_GENERIC}"
|
||||
fi
|
||||
|
||||
case "${DEMOTE_DATABASE_GATE}" in
|
||||
true|false)
|
||||
;;
|
||||
*)
|
||||
ocf_exit_reason "demote_database_gate must be true or false"
|
||||
return "${OCF_ERR_CONFIGURED}"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${REJOIN_BASEBACKUP_HEADROOM_PERCENT}" in
|
||||
""|*[!0-9]*)
|
||||
ocf_exit_reason "rejoin_basebackup_headroom_percent must be a non-negative integer"
|
||||
@@ -334,6 +347,11 @@ mc_promotion_metadata()
|
||||
<shortdesc lang="en">Disconnected standby observation lifetime</shortdesc>\
|
||||
<content type="integer" default="300"/>\
|
||||
</parameter>\
|
||||
<parameter name="demote_database_gate" unique="0" required="0">\
|
||||
<longdesc lang="en">When true, reject native PostgreSQL demotion unless the managed-containerd demote.database checks confirm a reachable, streaming, caught-up successor. When false, the daemon check remains shadow-only and native demotion fails open.</longdesc>\
|
||||
<shortdesc lang="en">Gate demotion on database checks</shortdesc>\
|
||||
<content type="boolean" default="false"/>\
|
||||
</parameter>\
|
||||
<parameter name="replication_peers" unique="0" required="0">\
|
||||
<longdesc lang="en">Opt-in stable peer map: node=host:port,node=host:port. Include the local node; exclude the client VIP. IPv4 or DNS hosts only. Requires a configured per-node replication slot, supplied explicitly or resolved from PostgreSQL/the managed container environment, plus peer authentication and slots on every upstream. Uses native primary-only selection; demotion verifies final WAL then ready recovery before successor promotion.</longdesc>\
|
||||
<shortdesc lang="en">Native replication peer map</shortdesc>\
|
||||
|
||||
Reference in New Issue
Block a user