summaryrefslogtreecommitdiffstats
path: root/include/crm/common/options_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/crm/common/options_internal.h')
-rw-r--r--include/crm/common/options_internal.h204
1 files changed, 158 insertions, 46 deletions
diff --git a/include/crm/common/options_internal.h b/include/crm/common/options_internal.h
index 5c561fd..92506a0 100644
--- a/include/crm/common/options_internal.h
+++ b/include/crm/common/options_internal.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2023 the Pacemaker project contributors
+ * Copyright 2006-2024 the Pacemaker project contributors
*
* The version control history for this file may have further details.
*
@@ -8,15 +8,17 @@
*/
#ifndef PCMK__OPTIONS_INTERNAL__H
-# define PCMK__OPTIONS_INTERNAL__H
+#define PCMK__OPTIONS_INTERNAL__H
-# ifndef PCMK__CONFIG_H
-# define PCMK__CONFIG_H
-# include <config.h> // _Noreturn
-# endif
+#ifndef PCMK__CONFIG_H
+#define PCMK__CONFIG_H
+#include <config.h> // _Noreturn
+#endif
-# include <glib.h> // GHashTable
-# include <stdbool.h> // bool
+#include <glib.h> // GHashTable
+#include <stdbool.h> // bool
+
+#include <crm/common/util.h> // pcmk_parse_interval_spec()
_Noreturn void pcmk__cli_help(char cmd);
@@ -34,6 +36,42 @@ bool pcmk__env_option_enabled(const char *daemon, const char *option);
* Cluster option handling
*/
+/*!
+ * \internal
+ * \enum pcmk__opt_flags
+ * \brief Option flags
+ */
+enum pcmk__opt_flags {
+ pcmk__opt_none = 0U, //!< No additional information
+
+ /*!
+ * \brief In CIB manager metadata
+ *
+ * \deprecated This flag will be removed with CIB manager metadata
+ */
+ pcmk__opt_based = (1U << 0),
+
+ /*!
+ * \brief In controller metadata
+ *
+ * \deprecated This flag will be removed with controller metadata
+ */
+ pcmk__opt_controld = (1U << 1),
+
+ /*!
+ * \brief In scheduler metadata
+ *
+ * \deprecated This flag will be removed with scheduler metadata
+ */
+ pcmk__opt_schedulerd = (1U << 2),
+
+ pcmk__opt_advanced = (1U << 3), //!< Advanced use only
+ pcmk__opt_generated = (1U << 4), //!< Generated by Pacemaker
+ pcmk__opt_deprecated = (1U << 5), //!< Option is deprecated
+ pcmk__opt_fencing = (1U << 6), //!< Common fencing resource parameter
+ pcmk__opt_primitive = (1U << 7), //!< Primitive resource meta-attribute
+};
+
typedef struct pcmk__cluster_option_s {
const char *name;
const char *alt_name;
@@ -43,37 +81,44 @@ typedef struct pcmk__cluster_option_s {
bool (*is_valid)(const char *);
+ uint32_t flags; //!< Group of <tt>enum pcmk__opt_flags</tt>
+
const char *description_short;
const char *description_long;
} pcmk__cluster_option_t;
-const char *pcmk__cluster_option(GHashTable *options,
- const pcmk__cluster_option_t *option_list,
- int len, const char *name);
+const char *pcmk__cluster_option(GHashTable *options, const char *name);
-gchar *pcmk__format_option_metadata(const char *name, const char *desc_short,
- const char *desc_long,
- pcmk__cluster_option_t *option_list,
- int len);
+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);
+int pcmk__output_fencing_params(pcmk__output_t *out, const char *name,
+ const char *desc_short, const char *desc_long,
+ bool all);
+int pcmk__output_primitive_meta(pcmk__output_t *out, const char *name,
+ const char *desc_short, const char *desc_long,
+ bool all);
-void pcmk__validate_cluster_options(GHashTable *options,
- pcmk__cluster_option_t *option_list,
- int len);
+int pcmk__daemon_metadata(pcmk__output_t *out, const char *name,
+ const char *short_desc, const char *long_desc,
+ enum pcmk__opt_flags filter);
+
+void pcmk__validate_cluster_options(GHashTable *options);
bool pcmk__valid_interval_spec(const char *value);
bool pcmk__valid_boolean(const char *value);
-bool pcmk__valid_number(const char *value);
-bool pcmk__valid_positive_number(const char *value);
-bool pcmk__valid_quorum(const char *value);
-bool pcmk__valid_script(const char *value);
+bool pcmk__valid_int(const char *value);
+bool pcmk__valid_positive_int(const char *value);
+bool pcmk__valid_no_quorum_policy(const char *value);
bool pcmk__valid_percentage(const char *value);
+bool pcmk__valid_placement_strategy(const char *value);
// from watchdog.c
-long pcmk__get_sbd_timeout(void);
+long pcmk__get_sbd_watchdog_timeout(void);
bool pcmk__get_sbd_sync_resource_startup(void);
-long pcmk__auto_watchdog_timeout(void);
-bool pcmk__valid_sbd_timeout(const char *value);
+long pcmk__auto_stonith_watchdog_timeout(void);
+bool pcmk__valid_stonith_watchdog_timeout(const char *value);
// Constants for environment variable names
#define PCMK__ENV_AUTHKEY_LOCATION "authkey_location"
@@ -93,8 +138,8 @@ bool pcmk__valid_sbd_timeout(const char *value);
#define PCMK__ENV_NODE_ACTION_LIMIT "node_action_limit"
#define PCMK__ENV_NODE_START_STATE "node_start_state"
#define PCMK__ENV_PANIC_ACTION "panic_action"
-#define PCMK__ENV_PHYSICAL_HOST "physical_host"
#define PCMK__ENV_REMOTE_ADDRESS "remote_address"
+#define PCMK__ENV_REMOTE_SCHEMA_DIRECTORY "remote_schema_directory"
#define PCMK__ENV_REMOTE_PID1 "remote_pid1"
#define PCMK__ENV_REMOTE_PORT "remote_port"
#define PCMK__ENV_RESPAWNED "respawned"
@@ -123,30 +168,97 @@ bool pcmk__valid_sbd_timeout(const char *value);
*/
#define PCMK__ENV_SHUTDOWN_DELAY "shutdown_delay"
-// Constants for cluster option names
-#define PCMK__OPT_NODE_HEALTH_BASE "node-health-base"
-#define PCMK__OPT_NODE_HEALTH_GREEN "node-health-green"
-#define PCMK__OPT_NODE_HEALTH_RED "node-health-red"
-#define PCMK__OPT_NODE_HEALTH_STRATEGY "node-health-strategy"
-#define PCMK__OPT_NODE_HEALTH_YELLOW "node-health-yellow"
+// @COMPAT Deprecated since 2.1.0
+#define PCMK__OPT_REMOVE_AFTER_STOP "remove-after-stop"
// Constants for meta-attribute names
-#define PCMK__META_ALLOW_UNHEALTHY_NODES "allow-unhealthy-nodes"
+#define PCMK__META_CLONE "clone"
+#define PCMK__META_CONTAINER "container"
+#define PCMK__META_DIGESTS_ALL "digests-all"
+#define PCMK__META_DIGESTS_SECURE "digests-secure"
+#define PCMK__META_INTERNAL_RSC "internal_rsc"
+#define PCMK__META_MIGRATE_SOURCE "migrate_source"
+#define PCMK__META_MIGRATE_TARGET "migrate_target"
+#define PCMK__META_ON_NODE "on_node"
+#define PCMK__META_ON_NODE_UUID "on_node_uuid"
+#define PCMK__META_OP_NO_WAIT "op_no_wait"
+#define PCMK__META_OP_TARGET_RC "op_target_rc"
+#define PCMK__META_PHYSICAL_HOST "physical-host"
+#define PCMK__META_STONITH_ACTION "stonith_action"
-// Constants for enumerated values for various options
+/* @TODO Plug these in. Currently, they're never set. These are op attrs for use
+ * with https://projects.clusterlabs.org/T382.
+ */
+#define PCMK__META_CLEAR_FAILURE_OP "clear_failure_op"
+#define PCMK__META_CLEAR_FAILURE_INTERVAL "clear_failure_interval"
+
+// @COMPAT Deprecated meta-attribute since 2.1.0
+#define PCMK__META_CAN_FAIL "can_fail"
+
+// @COMPAT Deprecated alias for PCMK__META_PROMOTED_MAX since 2.0.0
+#define PCMK__META_PROMOTED_MAX_LEGACY "master-max"
+
+// @COMPAT Deprecated alias for PCMK__META_PROMOTED_NODE_MAX since 2.0.0
+#define PCMK__META_PROMOTED_NODE_MAX_LEGACY "master-node-max"
+
+// @COMPAT Deprecated meta-attribute since 2.0.0
+#define PCMK__META_RESTART_TYPE "restart-type"
+
+// @COMPAT Deprecated meta-attribute since 2.0.0
+#define PCMK__META_ROLE_AFTER_FAILURE "role_after_failure"
+
+// Constants for enumerated values
+#define PCMK__VALUE_ATTRD "attrd"
+#define PCMK__VALUE_BOLD "bold"
+#define PCMK__VALUE_BROADCAST "broadcast"
+#define PCMK__VALUE_CIB "cib"
+#define PCMK__VALUE_CIB_DIFF_NOTIFY "cib_diff_notify"
+#define PCMK__VALUE_CIB_NOTIFY "cib_notify"
+#define PCMK__VALUE_CIB_POST_NOTIFY "cib_post_notify"
+#define PCMK__VALUE_CIB_PRE_NOTIFY "cib_pre_notify"
+#define PCMK__VALUE_CIB_UPDATE_CONFIRMATION "cib_update_confirmation"
#define PCMK__VALUE_CLUSTER "cluster"
-#define PCMK__VALUE_CUSTOM "custom"
-#define PCMK__VALUE_FENCING "fencing"
-#define PCMK__VALUE_GREEN "green"
+#define PCMK__VALUE_CRMD "crmd"
+#define PCMK__VALUE_EN "en"
+#define PCMK__VALUE_EPOCH "epoch"
+#define PCMK__VALUE_HEALTH_RED "health_red"
+#define PCMK__VALUE_HEALTH_YELLOW "health_yellow"
+#define PCMK__VALUE_INIT "init"
#define PCMK__VALUE_LOCAL "local"
-#define PCMK__VALUE_MIGRATE_ON_RED "migrate-on-red"
-#define PCMK__VALUE_NONE "none"
-#define PCMK__VALUE_NOTHING "nothing"
-#define PCMK__VALUE_ONLY_GREEN "only-green"
-#define PCMK__VALUE_PROGRESSIVE "progressive"
-#define PCMK__VALUE_QUORUM "quorum"
-#define PCMK__VALUE_RED "red"
-#define PCMK__VALUE_UNFENCING "unfencing"
-#define PCMK__VALUE_YELLOW "yellow"
+#define PCMK__VALUE_LRMD "lrmd"
+#define PCMK__VALUE_MAINT "maint"
+#define PCMK__VALUE_OUTPUT "output"
+#define PCMK__VALUE_PASSWORD "password"
+#define PCMK__VALUE_PING "ping"
+#define PCMK__VALUE_PRIMITIVE "primitive"
+#define PCMK__VALUE_REFRESH "refresh"
+#define PCMK__VALUE_REQUEST "request"
+#define PCMK__VALUE_RESPONSE "response"
+#define PCMK__VALUE_RSC_FAILED "rsc-failed"
+#define PCMK__VALUE_RSC_FAILURE_IGNORED "rsc-failure-ignored"
+#define PCMK__VALUE_RSC_MANAGED "rsc-managed"
+#define PCMK__VALUE_RSC_MULTIPLE "rsc-multiple"
+#define PCMK__VALUE_RSC_OK "rsc-ok"
+#define PCMK__VALUE_RUNNING "running"
+#define PCMK__VALUE_SHUTDOWN_COMPLETE "shutdown_complete"
+#define PCMK__VALUE_SHUTTING_DOWN "shutting_down"
+#define PCMK__VALUE_ST_ASYNC_TIMEOUT_VALUE "st-async-timeout-value"
+#define PCMK__VALUE_ST_NOTIFY "st_notify"
+#define PCMK__VALUE_ST_NOTIFY_DISCONNECT "st_notify_disconnect"
+#define PCMK__VALUE_ST_NOTIFY_FENCE "st_notify_fence"
+#define PCMK__VALUE_ST_NOTIFY_HISTORY "st_notify_history"
+#define PCMK__VALUE_ST_NOTIFY_HISTORY_SYNCED "st_notify_history_synced"
+#define PCMK__VALUE_STARTING_DAEMONS "starting_daemons"
+#define PCMK__VALUE_STONITH_NG "stonith-ng"
+#define PCMK__VALUE_WAIT_FOR_PING "wait_for_ping"
+#define PCMK__VALUE_WARNING "warning"
+
+/* @COMPAT Deprecated since 2.1.7 (used with PCMK__XA_ORDERING attribute of
+ * resource sets)
+ */
+#define PCMK__VALUE_GROUP "group"
+
+// @COMPAT Drop when daemon metadata commands are dropped
+#define PCMK__VALUE_TIME "time"
#endif // PCMK__OPTIONS_INTERNAL__H