forked from EnterpriseDB/repmgr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
repmgr-client.h
240 lines (210 loc) · 8.61 KB
/
repmgr-client.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
/*
* repmgr-client.h
* Copyright (c) EnterpriseDB Corporation, 2010-2021
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _REPMGR_CLIENT_H_
#define _REPMGR_CLIENT_H_
#include <getopt_long.h>
#include "log.h"
#define NO_ACTION 0 /* Dummy default action */
#define PRIMARY_REGISTER 1
#define PRIMARY_UNREGISTER 2
#define STANDBY_REGISTER 3
#define STANDBY_UNREGISTER 4
#define STANDBY_CLONE 5
#define STANDBY_PROMOTE 6
#define STANDBY_FOLLOW 7
#define STANDBY_SWITCHOVER 8
#define WITNESS_REGISTER 9
#define WITNESS_UNREGISTER 10
#define NODE_STATUS 11
#define NODE_CHECK 12
#define NODE_SERVICE 13
#define NODE_REJOIN 14
#define NODE_CONTROL 15
#define CLUSTER_SHOW 16
#define CLUSTER_CLEANUP 17
#define CLUSTER_MATRIX 18
#define CLUSTER_CROSSCHECK 19
#define CLUSTER_EVENT 20
#define SERVICE_STATUS 21
#define SERVICE_PAUSE 22
#define SERVICE_UNPAUSE 23
#define DAEMON_START 24
#define DAEMON_STOP 25
/* command line options without short versions */
#define OPT_HELP 1001
#define OPT_COPY_EXTERNAL_CONFIG_FILES 1002
#define OPT_CSV 1003
#define OPT_NODE_ID 1004
#define OPT_NODE_NAME 1005
#define OPT_WITHOUT_BARMAN 1006
#define OPT_NO_UPSTREAM_CONNECTION 1007
#define OPT_WAIT_SYNC 1008
#define OPT_LOG_TO_FILE 1009
#define OPT_UPSTREAM_CONNINFO 1010
#define OPT_REPLICATION_USER 1011
#define OPT_EVENT 1012
#define OPT_LIMIT 1013
#define OPT_ALL 1014
#define OPT_DRY_RUN 1015
#define OPT_UPSTREAM_NODE_ID 1016
#define OPT_ACTION 1017
#define OPT_LIST_ACTIONS 1018
#define OPT_CHECKPOINT 1019
#define OPT_IS_SHUTDOWN_CLEANLY 1020
#define OPT_ALWAYS_PROMOTE 1021
#define OPT_FORCE_REWIND 1022
#define OPT_NAGIOS 1023
#define OPT_ARCHIVE_READY 1024
#define OPT_OPTFORMAT 1025
#define OPT_REPLICATION_LAG 1026
#define OPT_CONFIG_FILES 1027
#define OPT_SIBLINGS_FOLLOW 1028
#define OPT_ROLE 1029
#define OPT_DOWNSTREAM 1030
#define OPT_UPSTREAM 1031
#define OPT_SLOTS 1032
#define OPT_HAS_PASSFILE 1033
#define OPT_WAIT_START 1034
#define OPT_REPL_CONN 1035
#define OPT_REMOTE_NODE_ID 1036
#define OPT_REPLICATION_CONF_ONLY 1037
#define OPT_NO_WAIT 1038
#define OPT_MISSING_SLOTS 1039
#define OPT_REPMGRD_NO_PAUSE 1040
#define OPT_VERSION_NUMBER 1041
#define OPT_DATA_DIRECTORY_CONFIG 1042
#define OPT_COMPACT 1043
#define OPT_DETAIL 1044
#define OPT_REPMGRD_FORCE_UNPAUSE 1045
#define OPT_REPLICATION_CONFIG_OWNER 1046
#define OPT_DB_CONNECTION 1047
#define OPT_VERIFY_BACKUP 1048
#define OPT_RECOVERY_MIN_APPLY_DELAY 1049
#define OPT_REPMGRD 1050
/* These options are for internal use only */
#define OPT_CONFIG_ARCHIVE_DIR 2001
#define OPT_DISABLE_WAL_RECEIVER 2002
#define OPT_ENABLE_WAL_RECEIVER 2003
#define OPT_DUMP_CONFIG 2004
/* deprecated since 4.0 */
#define OPT_CHECK_UPSTREAM_CONFIG 999
static struct option long_options[] =
{
/* general options */
{"help", no_argument, NULL, OPT_HELP},
{"version", no_argument, NULL, 'V'},
{"version-number", no_argument, NULL, OPT_VERSION_NUMBER},
/* general configuration options */
{"config-file", required_argument, NULL, 'f'},
{"dry-run", no_argument, NULL, OPT_DRY_RUN},
{"force", no_argument, NULL, 'F'},
{"pg_bindir", required_argument, NULL, 'b'},
{"wait", optional_argument, NULL, 'w'},
{"no-wait", no_argument, NULL, 'W'},
{"compact", no_argument, NULL, OPT_COMPACT},
{"detail", no_argument, NULL, OPT_DETAIL},
{"dump-config", no_argument, NULL, OPT_DUMP_CONFIG},
/* connection options */
{"dbname", required_argument, NULL, 'd'},
{"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'},
{"remote-user", required_argument, NULL, 'R'},
{"superuser", required_argument, NULL, 'S'},
{"username", required_argument, NULL, 'U'},
/* general node options */
{"pgdata", required_argument, NULL, 'D'},
{"node-id", required_argument, NULL, OPT_NODE_ID},
{"node-name", required_argument, NULL, OPT_NODE_NAME},
{"remote-node-id", required_argument, NULL, OPT_REMOTE_NODE_ID},
/* logging options */
{"log-level", required_argument, NULL, 'L'},
{"log-to-file", no_argument, NULL, OPT_LOG_TO_FILE},
{"quiet", no_argument, NULL, 'q'},
{"terse", no_argument, NULL, 't'},
{"verbose", no_argument, NULL, 'v'},
/* output options */
{"csv", no_argument, NULL, OPT_CSV},
{"nagios", no_argument, NULL, OPT_NAGIOS},
{"optformat", no_argument, NULL, OPT_OPTFORMAT},
/* "standby clone" options */
{"copy-external-config-files", optional_argument, NULL, OPT_COPY_EXTERNAL_CONFIG_FILES},
{"fast-checkpoint", no_argument, NULL, 'c'},
{"no-upstream-connection", no_argument, NULL, OPT_NO_UPSTREAM_CONNECTION},
{"replication-user", required_argument, NULL, OPT_REPLICATION_USER},
{"upstream-conninfo", required_argument, NULL, OPT_UPSTREAM_CONNINFO},
{"upstream-node-id", required_argument, NULL, OPT_UPSTREAM_NODE_ID},
{"without-barman", no_argument, NULL, OPT_WITHOUT_BARMAN},
{"replication-conf-only", no_argument, NULL, OPT_REPLICATION_CONF_ONLY},
{"verify-backup", no_argument, NULL, OPT_VERIFY_BACKUP },
{"recovery-min-apply-delay", required_argument, NULL, OPT_RECOVERY_MIN_APPLY_DELAY },
/* deprecate this once Pg11 and earlier are unsupported */
{"recovery-conf-only", no_argument, NULL, OPT_REPLICATION_CONF_ONLY},
/* "standby register" options */
{"wait-start", required_argument, NULL, OPT_WAIT_START},
{"wait-sync", optional_argument, NULL, OPT_WAIT_SYNC},
/* "standby switchover" options
*
* Note: --force-rewind accepted to pass to "node rejoin"
*/
{"always-promote", no_argument, NULL, OPT_ALWAYS_PROMOTE},
{"siblings-follow", no_argument, NULL, OPT_SIBLINGS_FOLLOW},
{"repmgrd-no-pause", no_argument, NULL, OPT_REPMGRD_NO_PAUSE},
{"repmgrd-force-unpause", no_argument, NULL, OPT_REPMGRD_FORCE_UNPAUSE},
/* "node status" options */
{"is-shutdown-cleanly", no_argument, NULL, OPT_IS_SHUTDOWN_CLEANLY},
/* "node check" options */
{"archive-ready", no_argument, NULL, OPT_ARCHIVE_READY},
{"downstream", no_argument, NULL, OPT_DOWNSTREAM},
{"upstream", no_argument, NULL, OPT_UPSTREAM},
{"replication-lag", no_argument, NULL, OPT_REPLICATION_LAG},
{"role", no_argument, NULL, OPT_ROLE},
{"slots", no_argument, NULL, OPT_SLOTS},
{"missing-slots", no_argument, NULL, OPT_MISSING_SLOTS},
{"repmgrd", no_argument, NULL, OPT_REPMGRD},
{"has-passfile", no_argument, NULL, OPT_HAS_PASSFILE},
{"replication-connection", no_argument, NULL, OPT_REPL_CONN},
{"data-directory-config", no_argument, NULL, OPT_DATA_DIRECTORY_CONFIG},
{"replication-config-owner", no_argument, NULL, OPT_REPLICATION_CONFIG_OWNER},
{"db-connection", no_argument, NULL, OPT_DB_CONNECTION},
/* "node rejoin" options */
{"config-files", required_argument, NULL, OPT_CONFIG_FILES},
{"config-archive-dir", required_argument, NULL, OPT_CONFIG_ARCHIVE_DIR},
{"force-rewind", optional_argument, NULL, OPT_FORCE_REWIND},
/* "node service" options */
{"action", required_argument, NULL, OPT_ACTION},
{"list-actions", no_argument, NULL, OPT_LIST_ACTIONS},
{"checkpoint", no_argument, NULL, OPT_CHECKPOINT},
/* "cluster event" options */
{"all", no_argument, NULL, OPT_ALL},
{"event", required_argument, NULL, OPT_EVENT},
{"limit", required_argument, NULL, OPT_LIMIT},
/* "cluster cleanup" options */
{"keep-history", required_argument, NULL, 'k'},
/* undocumented options for testing */
{"disable-wal-receiver", no_argument, NULL, OPT_DISABLE_WAL_RECEIVER},
{"enable-wal-receiver", no_argument, NULL, OPT_ENABLE_WAL_RECEIVER},
/* deprecated */
{"check-upstream-config", no_argument, NULL, OPT_CHECK_UPSTREAM_CONFIG},
/* previously used by "standby switchover" */
{"remote-config-file", required_argument, NULL, 'C'},
{NULL, 0, NULL, 0}
};
static void do_help(void);
static const char *action_name(const int action);
static void check_cli_parameters(const int action);
#endif /* _REPMGR_CLIENT_H_ */