diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:53:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:53:20 +0000 |
commit | e5a812082ae033afb1eed82c0f2df3d0f6bdc93f (patch) | |
tree | a6716c9275b4b413f6c9194798b34b91affb3cc7 /include/crm/crm.h | |
parent | Initial commit. (diff) | |
download | pacemaker-e5a812082ae033afb1eed82c0f2df3d0f6bdc93f.tar.xz pacemaker-e5a812082ae033afb1eed82c0f2df3d0f6bdc93f.zip |
Adding upstream version 2.1.6.upstream/2.1.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'include/crm/crm.h')
-rw-r--r-- | include/crm/crm.h | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/include/crm/crm.h b/include/crm/crm.h new file mode 100644 index 0000000..e824825 --- /dev/null +++ b/include/crm/crm.h @@ -0,0 +1,238 @@ +/* + * Copyright 2004-2023 the Pacemaker project contributors + * + * The version control history for this file may have further details. + * + * This source code is licensed under the GNU Lesser General Public License + * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. + */ + +#ifndef PCMK__CRM_CRM__H +# define PCMK__CRM_CRM__H + +# include <crm_config.h> +# include <stdlib.h> +# include <glib.h> +# include <stdbool.h> + +# include <string.h> + +# include <libxml/tree.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file + * \brief A dumping ground + * \ingroup core + */ + +#ifndef PCMK_ALLOW_DEPRECATED +/*! + * \brief Allow use of deprecated Pacemaker APIs + * + * By default, external code using Pacemaker headers is allowed to use + * deprecated Pacemaker APIs. If PCMK_ALLOW_DEPRECATED is defined to 0 before + * including any Pacemaker headers, deprecated APIs will be unusable. It is + * strongly recommended to leave this unchanged for production and release + * builds, to avoid breakage when users upgrade to new Pacemaker releases that + * deprecate more APIs. This should be defined to 0 only for development and + * testing builds when desiring to check for usage of currently deprecated APIs. + */ +#define PCMK_ALLOW_DEPRECATED 1 +#endif + +/*! + * The CRM feature set assists with compatibility in mixed-version clusters. + * The major version number increases when nodes with different versions + * would not work (rolling upgrades are not allowed). The minor version + * number increases when mixed-version clusters are allowed only during + * rolling upgrades (a node with the oldest feature set will be elected DC). The + * minor-minor version number is ignored, but allows resource agents to detect + * cluster support for various features. + * + * The feature set also affects the processing of old saved CIBs (such as for + * many scheduler regression tests). + * + * Particular feature points currently tested by Pacemaker code: + * + * >2.1: Operation updates include timing data + * >=3.0.5: XML v2 digests are created + * >=3.0.8: Peers do not need acks for cancellations + * >=3.0.9: DC will send its own shutdown request to all peers + * XML v2 patchsets are created by default + * >=3.0.13: Fail counts include operation name and interval + * >=3.2.0: DC supports PCMK_EXEC_INVALID and PCMK_EXEC_NOT_CONNECTED + */ +# define CRM_FEATURE_SET "3.17.4" + +/* Pacemaker's CPG protocols use fixed-width binary fields for the sender and + * recipient of a CPG message. This imposes an arbitrary limit on cluster node + * names. + */ +//! \brief Maximum length of a Corosync cluster node name (in bytes) +#define MAX_NAME 256 + +# define CRM_META "CRM_meta" + +extern char *crm_system_name; + +/* *INDENT-OFF* */ + +// How we represent "infinite" scores +# define CRM_SCORE_INFINITY 1000000 +# define CRM_INFINITY_S "INFINITY" +# define CRM_PLUS_INFINITY_S "+" CRM_INFINITY_S +# define CRM_MINUS_INFINITY_S "-" CRM_INFINITY_S + +/* @COMPAT API < 2.0.0 Deprecated "infinity" aliases + * + * INFINITY might be defined elsewhere (e.g. math.h), so undefine it first. + * This, of course, complicates any attempt to use the other definition in any + * code that includes this header. + */ +# undef INFINITY +# define INFINITY_S "INFINITY" +# define MINUS_INFINITY_S "-INFINITY" +# define INFINITY 1000000 + +/* Sub-systems */ +# define CRM_SYSTEM_DC "dc" +#define CRM_SYSTEM_DCIB "dcib" // Primary instance of CIB manager +# define CRM_SYSTEM_CIB "cib" +# define CRM_SYSTEM_CRMD "crmd" +# define CRM_SYSTEM_LRMD "lrmd" +# define CRM_SYSTEM_PENGINE "pengine" +# define CRM_SYSTEM_TENGINE "tengine" +# define CRM_SYSTEM_STONITHD "stonithd" +# define CRM_SYSTEM_MCP "pacemakerd" + +// Names of internally generated node attributes +# define CRM_ATTR_UNAME "#uname" +# define CRM_ATTR_ID "#id" +# define CRM_ATTR_KIND "#kind" +# define CRM_ATTR_ROLE "#role" +# define CRM_ATTR_IS_DC "#is_dc" +# define CRM_ATTR_CLUSTER_NAME "#cluster-name" +# define CRM_ATTR_SITE_NAME "#site-name" +# define CRM_ATTR_UNFENCED "#node-unfenced" +# define CRM_ATTR_DIGESTS_ALL "#digests-all" +# define CRM_ATTR_DIGESTS_SECURE "#digests-secure" +# define CRM_ATTR_PROTOCOL "#attrd-protocol" +# define CRM_ATTR_FEATURE_SET "#feature-set" + +/* Valid operations */ +# define CRM_OP_NOOP "noop" +# define CRM_OP_JOIN_ANNOUNCE "join_announce" +# define CRM_OP_JOIN_OFFER "join_offer" +# define CRM_OP_JOIN_REQUEST "join_request" +# define CRM_OP_JOIN_ACKNAK "join_ack_nack" +# define CRM_OP_JOIN_CONFIRM "join_confirm" +# define CRM_OP_PING "ping" +# define CRM_OP_NODE_INFO "node-info" +# define CRM_OP_THROTTLE "throttle" +# define CRM_OP_VOTE "vote" +# define CRM_OP_NOVOTE "no-vote" +# define CRM_OP_HELLO "hello" +# define CRM_OP_PECALC "pe_calc" +# define CRM_OP_QUIT "quit" +# define CRM_OP_LOCAL_SHUTDOWN "start_shutdown" +# define CRM_OP_SHUTDOWN_REQ "req_shutdown" +# define CRM_OP_SHUTDOWN "do_shutdown" +# define CRM_OP_FENCE "stonith" +# define CRM_OP_REGISTER "register" +# define CRM_OP_IPC_FWD "ipc_fwd" +# define CRM_OP_INVOKE_LRM "lrm_invoke" +# define CRM_OP_LRM_REFRESH "lrm_refresh" //!< Deprecated since 1.1.10 +# define CRM_OP_LRM_DELETE "lrm_delete" +# define CRM_OP_LRM_FAIL "lrm_fail" +# define CRM_OP_PROBED "probe_complete" +# define CRM_OP_REPROBE "probe_again" +# define CRM_OP_CLEAR_FAILCOUNT "clear_failcount" +# define CRM_OP_REMOTE_STATE "remote_state" +# define CRM_OP_RELAXED_SET "one-or-more" +# define CRM_OP_RELAXED_CLONE "clone-one-or-more" +# define CRM_OP_RM_NODE_CACHE "rm_node_cache" +# define CRM_OP_MAINTENANCE_NODES "maintenance_nodes" + +/* Possible cluster membership states */ +# define CRMD_JOINSTATE_DOWN "down" +# define CRMD_JOINSTATE_PENDING "pending" +# define CRMD_JOINSTATE_MEMBER "member" +# define CRMD_JOINSTATE_NACK "banned" + +# define CRMD_ACTION_DELETE "delete" +# define CRMD_ACTION_CANCEL "cancel" + +# define CRMD_ACTION_RELOAD "reload" +# define CRMD_ACTION_RELOAD_AGENT "reload-agent" +# define CRMD_ACTION_MIGRATE "migrate_to" +# define CRMD_ACTION_MIGRATED "migrate_from" + +# define CRMD_ACTION_START "start" +# define CRMD_ACTION_STARTED "running" + +# define CRMD_ACTION_STOP "stop" +# define CRMD_ACTION_STOPPED "stopped" + +# define CRMD_ACTION_PROMOTE "promote" +# define CRMD_ACTION_PROMOTED "promoted" +# define CRMD_ACTION_DEMOTE "demote" +# define CRMD_ACTION_DEMOTED "demoted" + +# define CRMD_ACTION_NOTIFY "notify" +# define CRMD_ACTION_NOTIFIED "notified" + +# define CRMD_ACTION_STATUS "monitor" +# define CRMD_ACTION_METADATA "meta-data" +# define CRMD_METADATA_CALL_TIMEOUT 30000 + +/* short names */ +# define RSC_DELETE CRMD_ACTION_DELETE +# define RSC_CANCEL CRMD_ACTION_CANCEL + +# define RSC_MIGRATE CRMD_ACTION_MIGRATE +# define RSC_MIGRATED CRMD_ACTION_MIGRATED + +# define RSC_START CRMD_ACTION_START +# define RSC_STARTED CRMD_ACTION_STARTED + +# define RSC_STOP CRMD_ACTION_STOP +# define RSC_STOPPED CRMD_ACTION_STOPPED + +# define RSC_PROMOTE CRMD_ACTION_PROMOTE +# define RSC_PROMOTED CRMD_ACTION_PROMOTED +# define RSC_DEMOTE CRMD_ACTION_DEMOTE +# define RSC_DEMOTED CRMD_ACTION_DEMOTED + +# define RSC_NOTIFY CRMD_ACTION_NOTIFY +# define RSC_NOTIFIED CRMD_ACTION_NOTIFIED + +# define RSC_STATUS CRMD_ACTION_STATUS +# define RSC_METADATA CRMD_ACTION_METADATA +/* *INDENT-ON* */ + +# include <crm/common/cib.h> +# include <crm/common/logging.h> +# include <crm/common/util.h> + +static inline const char * +crm_action_str(const char *task, guint interval_ms) { + if ((task != NULL) && (interval_ms == 0) + && (strcasecmp(task, RSC_STATUS) == 0)) { + return "probe"; + } + return task; +} + +#if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) +#include <crm/crm_compat.h> +#endif + +#ifdef __cplusplus +} +#endif + +#endif |