1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__OPTIONS_INTERNAL__H
11 # define PCMK__OPTIONS_INTERNAL__H
12
13 # ifndef PCMK__CONFIG_H
14 # define PCMK__CONFIG_H
15 # include <config.h>
16 # endif
17
18 # include <glib.h>
19 # include <stdbool.h>
20
21
22
23
24
25
26
27 # ifdef HAVE_GETOPT_H
28 # include <getopt.h>
29 # else
30 # define no_argument 0
31 # define required_argument 1
32 # endif
33
34 enum pcmk__cli_option_flags {
35 pcmk__option_default = (1 << 0),
36 pcmk__option_hidden = (1 << 1),
37 pcmk__option_paragraph = (1 << 2),
38 pcmk__option_example = (1 << 3),
39 };
40
41 typedef struct pcmk__cli_option_s {
42
43
44 const char *name;
45
46
47
48
49 int has_arg;
50
51 int *flag;
52
53 int val;
54
55
56 const char *desc;
57 long flags;
58 } pcmk__cli_option_t;
59
60 void pcmk__set_cli_options(const char *short_options, const char *usage,
61 const pcmk__cli_option_t *long_options,
62 const char *app_desc);
63 int pcmk__next_cli_option(int argc, char **argv, int *index,
64 const char **longname);
65 _Noreturn void pcmk__cli_help(char cmd, crm_exit_t exit_code);
66 void pcmk__cli_option_cleanup(void);
67
68
69
70
71
72
73 const char *pcmk__env_option(const char *option);
74 void pcmk__set_env_option(const char *option, const char *value);
75 bool pcmk__env_option_enabled(const char *daemon, const char *option);
76
77
78
79
80
81
82 typedef struct pcmk__cluster_option_s {
83 const char *name;
84 const char *alt_name;
85 const char *type;
86 const char *values;
87 const char *default_value;
88
89 bool (*is_valid)(const char *);
90
91 const char *description_short;
92 const char *description_long;
93
94 } pcmk__cluster_option_t;
95
96 const char *pcmk__cluster_option(GHashTable *options,
97 const pcmk__cluster_option_t *option_list,
98 int len, const char *name);
99
100 gchar *pcmk__format_option_metadata(const char *name, const char *desc_short,
101 const char *desc_long,
102 pcmk__cluster_option_t *option_list,
103 int len);
104
105 void pcmk__validate_cluster_options(GHashTable *options,
106 pcmk__cluster_option_t *option_list,
107 int len);
108
109 bool pcmk__valid_interval_spec(const char *value);
110 bool pcmk__valid_boolean(const char *value);
111 bool pcmk__valid_number(const char *value);
112 bool pcmk__valid_positive_number(const char *value);
113 bool pcmk__valid_quorum(const char *value);
114 bool pcmk__valid_script(const char *value);
115 bool pcmk__valid_percentage(const char *value);
116
117
118 long pcmk__get_sbd_timeout(void);
119 bool pcmk__get_sbd_sync_resource_startup(void);
120 long pcmk__auto_watchdog_timeout(void);
121 bool pcmk__valid_sbd_timeout(const char *value);
122
123
124 #define PCMK__ENV_BLACKBOX "blackbox"
125 #define PCMK__ENV_CLUSTER_TYPE "cluster_type"
126 #define PCMK__ENV_DEBUG "debug"
127 #define PCMK__ENV_LOGFACILITY "logfacility"
128 #define PCMK__ENV_LOGFILE "logfile"
129 #define PCMK__ENV_LOGPRIORITY "logpriority"
130 #define PCMK__ENV_MCP "mcp"
131 #define PCMK__ENV_NODE_START_STATE "node_start_state"
132 #define PCMK__ENV_PHYSICAL_HOST "physical_host"
133 #define PCMK__ENV_QUORUM_TYPE "quorum_type"
134 #define PCMK__ENV_SHUTDOWN_DELAY "shutdown_delay"
135 #define PCMK__ENV_STDERR "stderr"
136
137
138 #define PCMK__OPT_NODE_HEALTH_BASE "node-health-base"
139 #define PCMK__OPT_NODE_HEALTH_GREEN "node-health-green"
140 #define PCMK__OPT_NODE_HEALTH_RED "node-health-red"
141 #define PCMK__OPT_NODE_HEALTH_STRATEGY "node-health-strategy"
142 #define PCMK__OPT_NODE_HEALTH_YELLOW "node-health-yellow"
143
144
145 #define PCMK__META_ALLOW_UNHEALTHY_NODES "allow-unhealthy-nodes"
146
147
148 #define PCMK__VALUE_CUSTOM "custom"
149 #define PCMK__VALUE_FENCING "fencing"
150 #define PCMK__VALUE_GREEN "green"
151 #define PCMK__VALUE_MIGRATE_ON_RED "migrate-on-red"
152 #define PCMK__VALUE_NONE "none"
153 #define PCMK__VALUE_NOTHING "nothing"
154 #define PCMK__VALUE_ONLY_GREEN "only-green"
155 #define PCMK__VALUE_PROGRESSIVE "progressive"
156 #define PCMK__VALUE_QUORUM "quorum"
157 #define PCMK__VALUE_RED "red"
158 #define PCMK__VALUE_UNFENCING "unfencing"
159 #define PCMK__VALUE_YELLOW "yellow"
160
161 #endif