pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
options_internal.h
Go to the documentation of this file.
1/*
2 * Copyright 2006-2025 the Pacemaker project contributors
3 *
4 * The version control history for this file may have further details.
5 *
6 * This source code is licensed under the GNU Lesser General Public License
7 * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8 */
9
10#ifndef PCMK__CRM_COMMON_OPTIONS_INTERNAL__H
11#define PCMK__CRM_COMMON_OPTIONS_INTERNAL__H
12
13#ifndef PCMK__CONFIG_H
14#define PCMK__CONFIG_H
15#include <config.h> // _Noreturn
16#endif
17
18#include <glib.h> // GHashTable
19#include <stdbool.h> // bool
20
21#include <crm/common/strings.h> // pcmk_parse_interval_spec()
22#include <crm/common/output_internal.h> // pcmk__output_t
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28_Noreturn void pcmk__cli_help(char cmd);
29
30
31/*
32 * Environment variable option handling
33 */
34
35const char *pcmk__env_option(const char *option);
36void pcmk__set_env_option(const char *option, const char *value, bool compat);
37bool pcmk__env_option_enabled(const char *daemon, const char *option);
38
39
40/*
41 * Cluster option handling
42 */
43
50
56 pcmk__opt_based = (1U << 0),
57
63 pcmk__opt_controld = (1U << 1),
64
71
72 pcmk__opt_advanced = (1U << 3),
73 pcmk__opt_generated = (1U << 4),
75 pcmk__opt_fencing = (1U << 6),
76 pcmk__opt_primitive = (1U << 7),
77};
78
79typedef struct pcmk__cluster_option_s {
80 const char *name;
81 const char *alt_name;
82 const char *type;
83 const char *values;
84 const char *default_value;
85
86 bool (*is_valid)(const char *);
87
88 uint32_t flags;
89
90 const char *description_short;
91 const char *description_long;
92
94
95const char *pcmk__cluster_option(GHashTable *options, const char *name);
96
98 const char *desc_short, const char *desc_long,
99 uint32_t filter, bool all);
101 const char *desc_short, const char *desc_long,
102 bool all);
104 const char *desc_short, const char *desc_long,
105 bool all);
106
107int pcmk__daemon_metadata(pcmk__output_t *out, const char *name,
108 const char *short_desc, const char *long_desc,
109 enum pcmk__opt_flags filter);
110
111void pcmk__validate_cluster_options(GHashTable *options);
112
113bool pcmk__valid_interval_spec(const char *value);
114bool pcmk__valid_boolean(const char *value);
115bool pcmk__valid_int(const char *value);
116bool pcmk__valid_positive_int(const char *value);
117bool pcmk__valid_no_quorum_policy(const char *value);
118bool pcmk__valid_percentage(const char *value);
119bool pcmk__valid_placement_strategy(const char *value);
120
121// from watchdog.c
125bool pcmk__valid_stonith_watchdog_timeout(const char *value);
126
127// Constants for environment variable names
128#define PCMK__ENV_AUTHKEY_LOCATION "authkey_location"
129#define PCMK__ENV_BLACKBOX "blackbox"
130#define PCMK__ENV_CA_FILE "ca_file"
131#define PCMK__ENV_CALLGRIND_ENABLED "callgrind_enabled"
132#define PCMK__ENV_CERT_FILE "cert_file"
133#define PCMK__ENV_CLUSTER_TYPE "cluster_type"
134#define PCMK__ENV_CRL_FILE "crl_file"
135#define PCMK__ENV_DEBUG "debug"
136#define PCMK__ENV_DH_MAX_BITS "dh_max_bits"
137#define PCMK__ENV_FAIL_FAST "fail_fast"
138#define PCMK__ENV_IPC_TYPE "ipc_type"
139#define PCMK__ENV_KEY_FILE "key_file"
140#define PCMK__ENV_LOGFACILITY "logfacility"
141#define PCMK__ENV_LOGFILE "logfile"
142#define PCMK__ENV_LOGFILE_MODE "logfile_mode"
143#define PCMK__ENV_LOGPRIORITY "logpriority"
144#define PCMK__ENV_NODE_ACTION_LIMIT "node_action_limit"
145#define PCMK__ENV_NODE_START_STATE "node_start_state"
146#define PCMK__ENV_PANIC_ACTION "panic_action"
147#define PCMK__ENV_REMOTE_ADDRESS "remote_address"
148#define PCMK__ENV_REMOTE_SCHEMA_DIRECTORY "remote_schema_directory"
149#define PCMK__ENV_REMOTE_PID1 "remote_pid1"
150#define PCMK__ENV_REMOTE_PORT "remote_port"
151#define PCMK__ENV_RESPAWNED "respawned"
152#define PCMK__ENV_SCHEMA_DIRECTORY "schema_directory"
153#define PCMK__ENV_SERVICE "service"
154#define PCMK__ENV_STDERR "stderr"
155#define PCMK__ENV_TLS_PRIORITIES "tls_priorities"
156#define PCMK__ENV_TRACE_BLACKBOX "trace_blackbox"
157#define PCMK__ENV_TRACE_FILES "trace_files"
158#define PCMK__ENV_TRACE_FORMATS "trace_formats"
159#define PCMK__ENV_TRACE_FUNCTIONS "trace_functions"
160#define PCMK__ENV_TRACE_TAGS "trace_tags"
161#define PCMK__ENV_VALGRIND_ENABLED "valgrind_enabled"
162
163// Constants for meta-attribute names
164#define PCMK__META_CLONE "clone"
165#define PCMK__META_CONTAINER "container"
166#define PCMK__META_DIGESTS_ALL "digests-all"
167#define PCMK__META_DIGESTS_SECURE "digests-secure"
168#define PCMK__META_INTERNAL_RSC "internal_rsc"
169#define PCMK__META_MIGRATE_SOURCE "migrate_source"
170#define PCMK__META_MIGRATE_TARGET "migrate_target"
171#define PCMK__META_ON_NODE "on_node"
172#define PCMK__META_ON_NODE_UUID "on_node_uuid"
173#define PCMK__META_OP_NO_WAIT "op_no_wait"
174#define PCMK__META_OP_TARGET_RC "op_target_rc"
175#define PCMK__META_PHYSICAL_HOST "physical-host"
176#define PCMK__META_STONITH_ACTION "stonith_action"
177
178/* @TODO Plug these in. Currently, they're never set. These are op attrs for use
179 * with https://projects.clusterlabs.org/T382.
180 */
181#define PCMK__META_CLEAR_FAILURE_OP "clear_failure_op"
182#define PCMK__META_CLEAR_FAILURE_INTERVAL "clear_failure_interval"
183
184// @COMPAT Deprecated alias for PCMK__META_PROMOTED_MAX since 2.0.0
185#define PCMK__META_PROMOTED_MAX_LEGACY "master-max"
186
187// @COMPAT Deprecated alias for PCMK__META_PROMOTED_NODE_MAX since 2.0.0
188#define PCMK__META_PROMOTED_NODE_MAX_LEGACY "master-node-max"
189
190// Constants for enumerated values
191#define PCMK__VALUE_ATTRD "attrd"
192#define PCMK__VALUE_BOLD "bold"
193#define PCMK__VALUE_BROADCAST "broadcast"
194#define PCMK__VALUE_CIB "cib"
195#define PCMK__VALUE_CIB_DIFF_NOTIFY "cib_diff_notify"
196#define PCMK__VALUE_CIB_NOTIFY "cib_notify"
197#define PCMK__VALUE_CIB_POST_NOTIFY "cib_post_notify"
198#define PCMK__VALUE_CIB_PRE_NOTIFY "cib_pre_notify"
199#define PCMK__VALUE_CIB_UPDATE_CONFIRMATION "cib_update_confirmation"
200#define PCMK__VALUE_CLUSTER "cluster"
201#define PCMK__VALUE_CRMD "crmd"
202#define PCMK__VALUE_EN "en"
203#define PCMK__VALUE_EPOCH "epoch"
204#define PCMK__VALUE_HEALTH_RED "health_red"
205#define PCMK__VALUE_HEALTH_YELLOW "health_yellow"
206#define PCMK__VALUE_INIT "init"
207#define PCMK__VALUE_LOCAL "local"
208#define PCMK__VALUE_LOST "lost"
209#define PCMK__VALUE_LRMD "lrmd"
210#define PCMK__VALUE_MAINT "maint"
211#define PCMK__VALUE_OUTPUT "output"
212#define PCMK__VALUE_PASSWORD "password"
213#define PCMK__VALUE_PRIMITIVE "primitive"
214#define PCMK__VALUE_REFRESH "refresh"
215#define PCMK__VALUE_REQUEST "request"
216#define PCMK__VALUE_RESPONSE "response"
217#define PCMK__VALUE_RSC_FAILED "rsc-failed"
218#define PCMK__VALUE_RSC_FAILURE_IGNORED "rsc-failure-ignored"
219#define PCMK__VALUE_RSC_MANAGED "rsc-managed"
220#define PCMK__VALUE_RSC_MULTIPLE "rsc-multiple"
221#define PCMK__VALUE_RSC_OK "rsc-ok"
222#define PCMK__VALUE_RUNNING "running"
223#define PCMK__VALUE_SCHEDULER "scheduler"
224#define PCMK__VALUE_SHUTDOWN_COMPLETE "shutdown_complete"
225#define PCMK__VALUE_SHUTTING_DOWN "shutting_down"
226#define PCMK__VALUE_ST_ASYNC_TIMEOUT_VALUE "st-async-timeout-value"
227#define PCMK__VALUE_ST_NOTIFY "st_notify"
228#define PCMK__VALUE_ST_NOTIFY_DISCONNECT "st_notify_disconnect"
229#define PCMK__VALUE_ST_NOTIFY_FENCE "st_notify_fence"
230#define PCMK__VALUE_ST_NOTIFY_HISTORY "st_notify_history"
231#define PCMK__VALUE_ST_NOTIFY_HISTORY_SYNCED "st_notify_history_synced"
232#define PCMK__VALUE_STARTING_DAEMONS "starting_daemons"
233#define PCMK__VALUE_STONITH_NG "stonith-ng"
234#define PCMK__VALUE_WAIT_FOR_PING "wait_for_ping"
235#define PCMK__VALUE_WARNING "warning"
236
237/* @COMPAT Deprecated since 2.1.7 (used with PCMK__XA_ORDERING attribute of
238 * resource sets)
239 */
240#define PCMK__VALUE_GROUP "group"
241
242// @COMPAT Drop when daemon metadata commands are dropped
243#define PCMK__VALUE_TIME "time"
244
245#ifdef __cplusplus
246}
247#endif
248
249#endif // PCMK__OPTIONS_INTERNAL__H
const char * name
Definition cib.c:26
pcmk__opt_flags
@ pcmk__opt_advanced
Advanced use only.
@ pcmk__opt_deprecated
Option is deprecated.
@ pcmk__opt_generated
Generated by Pacemaker.
@ pcmk__opt_controld
In controller metadata.
@ pcmk__opt_fencing
Common fencing resource parameter.
@ pcmk__opt_schedulerd
In scheduler metadata.
@ pcmk__opt_none
No additional information.
@ pcmk__opt_primitive
Primitive resource meta-attribute.
@ pcmk__opt_based
In CIB manager metadata.
bool pcmk__valid_positive_int(const char *value)
Definition options.c:1266
const char * pcmk__cluster_option(GHashTable *options, const char *name)
Definition options.c:1410
int pcmk__output_primitive_meta(pcmk__output_t *out, const char *name, const char *desc_short, const char *desc_long, bool all)
Definition options.c:1466
int pcmk__output_cluster_options(pcmk__output_t *out, const char *name, const char *desc_short, const char *desc_long, uint32_t filter, bool all)
Definition options.c:1443
_Noreturn void pcmk__cli_help(char cmd)
Definition options.c:22
struct pcmk__cluster_option_s pcmk__cluster_option_t
bool pcmk__valid_no_quorum_policy(const char *value)
Definition options.c:1286
bool pcmk__valid_interval_spec(const char *value)
Definition options.c:1216
bool pcmk__valid_boolean(const char *value)
Definition options.c:1230
void pcmk__set_env_option(const char *option, const char *value, bool compat)
Set or unset a Pacemaker environment variable option.
Definition options.c:1135
bool pcmk__valid_placement_strategy(const char *value)
Definition options.c:1326
long pcmk__get_sbd_watchdog_timeout(void)
Definition watchdog.c:197
bool pcmk__env_option_enabled(const char *daemon, const char *option)
Definition options.c:1192
bool pcmk__valid_stonith_watchdog_timeout(const char *value)
Definition watchdog.c:239
long pcmk__auto_stonith_watchdog_timeout(void)
Definition watchdog.c:231
int pcmk__daemon_metadata(pcmk__output_t *out, const char *name, const char *short_desc, const char *long_desc, enum pcmk__opt_flags filter)
Definition options.c:1515
bool pcmk__valid_percentage(const char *value)
Definition options.c:1308
bool pcmk__valid_int(const char *value)
Definition options.c:1246
const char * pcmk__env_option(const char *option)
Definition options.c:1085
bool pcmk__get_sbd_sync_resource_startup(void)
Definition watchdog.c:208
void pcmk__validate_cluster_options(GHashTable *options)
Definition options.c:1556
int pcmk__output_fencing_params(pcmk__output_t *out, const char *name, const char *desc_short, const char *desc_long, bool all)
Definition options.c:1493
Formatted output for pacemaker tools.
#define _Noreturn
Definition results.h:40
API for strings.
bool(* is_valid)(const char *)
uint32_t flags
Group of enum pcmk__opt_flags
This structure contains everything that makes up a single output formatter.