From 167d166ae8a472fc6510de2eefd0a594cb19be9d Mon Sep 17 00:00:00 2001 From: Mario Gonzalez Date: Tue, 7 Mar 2023 16:51:25 -0300 Subject: [PATCH] Validate options when using pg_backupapi mode. When `pg_backupapi` is enabled, we should validate if the remote ssh command, node name and backup_id are also defined. --- repmgr-action-standby.c | 31 +++++++++++++++++++++++++++++++ repmgr-action-standby.h | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/repmgr-action-standby.c b/repmgr-action-standby.c index be65de36..bc9e4a2e 100644 --- a/repmgr-action-standby.c +++ b/repmgr-action-standby.c @@ -7795,6 +7795,7 @@ run_pg_backupapi(t_node_info *local_node_record) CURL *curl = curl_easy_init(); CURLcode ret; + check_pg_backupapi_standby_clone_options(); task->host = malloc(strlen(config_file_options.pg_backupapi_host)+1); task->remote_ssh_command = malloc(strlen(config_file_options.pg_backupapi_remote_ssh_command)+1); @@ -7858,6 +7859,36 @@ run_pg_backupapi(t_node_info *local_node_record) return r; } +/* + * pg_backupapi mode is enabled when config_file_options.pg_backupapi_host is set hence, we + * should also check the other required variables too. + */ + +void check_pg_backupapi_standby_clone_options() { + + bool error = false; + + if (*config_file_options.pg_backupapi_remote_ssh_command == '\0') { + log_hint("Check config: remote ssh command is required"); + error = true; + } + if (*config_file_options.pg_backupapi_node_name == '\0') { + log_hint("Check config: node name is required"); + error = true; + } + if (*config_file_options.pg_backupapi_backup_id == '\0') { + log_hint("Check config: backup_id is required"); + error = true; + } + + if (error == true) { + log_error("Please fix the errors and try again"); + exit(ERR_BAD_CONFIG); + } + +} + + static char * make_barman_ssh_command(char *buf) diff --git a/repmgr-action-standby.h b/repmgr-action-standby.h index 0585d0c2..29ad98a3 100644 --- a/repmgr-action-standby.h +++ b/repmgr-action-standby.h @@ -30,6 +30,6 @@ extern void do_standby_help(void); extern bool do_standby_follow_internal(PGconn *primary_conn, PGconn *follow_target_conn, t_node_info *follow_target_node_record, PQExpBufferData *output, int general_error_code, int *error_code); - +void check_pg_backupapi_standby_clone_options(void); #endif /* _REPMGR_ACTION_STANDBY_H_ */