pacemaker  1.1.17-b36b869ca8
Scalable High-Availability cluster resource manager
crm.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2004 Andrew Beekhof <andrew@beekhof.net>
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This software is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 #ifndef CRM__H
19 # define CRM__H
20 
27 # include <crm_config.h>
28 # include <stdlib.h>
29 # include <glib.h>
30 # include <stdbool.h>
31 
32 # include <string.h>
33 
34 # include <libxml/tree.h>
35 
36 # define CRM_FEATURE_SET "3.0.13"
37 
38 # define EOS '\0'
39 # define DIMOF(a) ((int) (sizeof(a)/sizeof(a[0])) )
40 
41 # ifndef MAX_NAME
42 # define MAX_NAME 256
43 # endif
44 
45 # ifndef __GNUC__
46 # define __builtin_expect(expr, result) (expr)
47 # endif
48 
49 /* Some handy macros used by the Linux kernel */
50 # define __likely(expr) __builtin_expect(expr, 1)
51 # define __unlikely(expr) __builtin_expect(expr, 0)
52 
53 # define CRM_META "CRM_meta"
54 
55 extern char *crm_system_name;
56 
57 /* *INDENT-OFF* */
58 
59 /* Clean these up at some point, some probably should be runtime options */
60 # define SOCKET_LEN 1024
61 # define APPNAME_LEN 256
62 # define MAX_IPC_FAIL 5
63 # define MAX_IPC_DELAY 120
64 
65 # define DAEMON_RESPAWN_STOP 100
66 
67 # define MSG_LOG 1
68 # define DOT_FSA_ACTIONS 1
69 # define DOT_ALL_FSA_INPUTS 1
70 /* #define FSA_TRACE 1 */
71 
72 /* This header defines INFINITY, but it might be defined elsewhere as well
73  * (e.g. math.h), so undefine it first. This, of course, complicates any attempt
74  * to use the other definition in any code that includes this header.
75  *
76  * @TODO: Rename our constant (which will break API backward compatibility).
77  */
78 # undef INFINITY
79 
80 # define INFINITY_S "INFINITY"
81 # define MINUS_INFINITY_S "-INFINITY"
82 
83 # define INFINITY 1000000
84 
85 /* Sub-systems */
86 # define CRM_SYSTEM_DC "dc"
87 # define CRM_SYSTEM_DCIB "dcib"
88  /* The master CIB */
89 # define CRM_SYSTEM_CIB "cib"
90 # define CRM_SYSTEM_CRMD "crmd"
91 # define CRM_SYSTEM_LRMD "lrmd"
92 # define CRM_SYSTEM_PENGINE "pengine"
93 # define CRM_SYSTEM_TENGINE "tengine"
94 # define CRM_SYSTEM_STONITHD "stonithd"
95 # define CRM_SYSTEM_MCP "pacemakerd"
96 
97 /* Valid operations */
98 # define CRM_OP_NOOP "noop"
99 # define CRM_OP_JOIN_ANNOUNCE "join_announce"
100 # define CRM_OP_JOIN_OFFER "join_offer"
101 # define CRM_OP_JOIN_REQUEST "join_request"
102 # define CRM_OP_JOIN_ACKNAK "join_ack_nack"
103 # define CRM_OP_JOIN_CONFIRM "join_confirm"
104 # define CRM_OP_PING "ping"
105 # define CRM_OP_THROTTLE "throttle"
106 # define CRM_OP_VOTE "vote"
107 # define CRM_OP_NOVOTE "no-vote"
108 # define CRM_OP_HELLO "hello"
109 # define CRM_OP_PECALC "pe_calc"
110 # define CRM_OP_QUIT "quit"
111 # define CRM_OP_LOCAL_SHUTDOWN "start_shutdown"
112 # define CRM_OP_SHUTDOWN_REQ "req_shutdown"
113 # define CRM_OP_SHUTDOWN "do_shutdown"
114 # define CRM_OP_FENCE "stonith"
115 # define CRM_OP_REGISTER "register"
116 # define CRM_OP_IPC_FWD "ipc_fwd"
117 # define CRM_OP_INVOKE_LRM "lrm_invoke"
118 # define CRM_OP_LRM_REFRESH "lrm_refresh" /* Deprecated */
119 # define CRM_OP_LRM_QUERY "lrm_query"
120 # define CRM_OP_LRM_DELETE "lrm_delete"
121 # define CRM_OP_LRM_FAIL "lrm_fail"
122 # define CRM_OP_PROBED "probe_complete"
123 # define CRM_OP_REPROBE "probe_again"
124 # define CRM_OP_CLEAR_FAILCOUNT "clear_failcount"
125 # define CRM_OP_REMOTE_STATE "remote_state"
126 # define CRM_OP_RELAXED_SET "one-or-more"
127 # define CRM_OP_RELAXED_CLONE "clone-one-or-more"
128 # define CRM_OP_RM_NODE_CACHE "rm_node_cache"
129 # define CRM_OP_MAINTENANCE_NODES "maintenance_nodes"
130 
131 /* @COMPAT: These symbols are deprecated and not used by Pacemaker,
132  * but they are kept for public API backward compatibility.
133  */
134 # define CRM_OP_DIE "die_no_respawn"
135 # define CRM_OP_RETRIVE_CIB "retrieve_cib"
136 # define CRM_OP_HBEAT "dc_beat"
137 # define CRM_OP_ABORT "abort"
138 # define CRM_OP_EVENTCC "event_cc"
139 # define CRM_OP_TEABORT "te_abort"
140 # define CRM_OP_TEABORTED "te_abort_confirmed"
141 # define CRM_OP_TE_HALT "te_halt"
142 # define CRM_OP_TECOMPLETE "te_complete"
143 # define CRM_OP_TETIMEOUT "te_timeout"
144 # define CRM_OP_TRANSITION "transition"
145 # define CRM_OP_DEBUG_UP "debug_inc" /* unused since 1.1.8 */
146 # define CRM_OP_DEBUG_DOWN "debug_dec" /* unused since 1.1.8 */
147 # define CRM_OP_NODES_PROBED "probe_nodes_complete"
148 
149 /* Possible cluster membership states */
150 # define CRMD_JOINSTATE_DOWN "down"
151 # define CRMD_JOINSTATE_PENDING "pending"
152 # define CRMD_JOINSTATE_MEMBER "member"
153 # define CRMD_JOINSTATE_NACK "banned"
154 
155 # define CRMD_ACTION_DELETE "delete"
156 # define CRMD_ACTION_CANCEL "cancel"
157 
158 # define CRMD_ACTION_RELOAD "reload"
159 # define CRMD_ACTION_MIGRATE "migrate_to"
160 # define CRMD_ACTION_MIGRATED "migrate_from"
161 
162 # define CRMD_ACTION_START "start"
163 # define CRMD_ACTION_STARTED "running"
164 
165 # define CRMD_ACTION_STOP "stop"
166 # define CRMD_ACTION_STOPPED "stopped"
167 
168 # define CRMD_ACTION_PROMOTE "promote"
169 # define CRMD_ACTION_PROMOTED "promoted"
170 # define CRMD_ACTION_DEMOTE "demote"
171 # define CRMD_ACTION_DEMOTED "demoted"
172 
173 # define CRMD_ACTION_NOTIFY "notify"
174 # define CRMD_ACTION_NOTIFIED "notified"
175 
176 # define CRMD_ACTION_STATUS "monitor"
177 
178 /* short names */
179 # define RSC_DELETE CRMD_ACTION_DELETE
180 # define RSC_CANCEL CRMD_ACTION_CANCEL
181 
182 # define RSC_MIGRATE CRMD_ACTION_MIGRATE
183 # define RSC_MIGRATED CRMD_ACTION_MIGRATED
184 
185 # define RSC_START CRMD_ACTION_START
186 # define RSC_STARTED CRMD_ACTION_STARTED
187 
188 # define RSC_STOP CRMD_ACTION_STOP
189 # define RSC_STOPPED CRMD_ACTION_STOPPED
190 
191 # define RSC_PROMOTE CRMD_ACTION_PROMOTE
192 # define RSC_PROMOTED CRMD_ACTION_PROMOTED
193 # define RSC_DEMOTE CRMD_ACTION_DEMOTE
194 # define RSC_DEMOTED CRMD_ACTION_DEMOTED
195 
196 # define RSC_NOTIFY CRMD_ACTION_NOTIFY
197 # define RSC_NOTIFIED CRMD_ACTION_NOTIFIED
198 
199 # define RSC_STATUS CRMD_ACTION_STATUS
200 /* *INDENT-ON* */
201 
202 typedef GList *GListPtr;
203 
204 # include <crm/common/logging.h>
205 # include <crm/common/util.h>
206 # include <crm/error.h>
207 
208 # define crm_str_hash g_str_hash_traditional
209 
210 guint crm_strcase_hash(gconstpointer v);
211 guint g_str_hash_traditional(gconstpointer v);
212 
213 static inline const char *crm_action_str(const char *task, int interval) {
214  if(safe_str_eq(task, RSC_STATUS) && !interval) {
215  return "probe";
216  }
217  return task;
218 }
219 
220 #endif
char * crm_system_name
Definition: utils.c:73
Wrappers for and extensions to libqb logging.
Error codes and asserts.
guint crm_strcase_hash(gconstpointer v)
Definition: strings.c:280
Utility functions.
guint g_str_hash_traditional(gconstpointer v)
Definition: strings.c:268
#define RSC_STATUS
Definition: crm.h:199
#define safe_str_eq(a, b)
Definition: util.h:64
GList * GListPtr
Definition: crm.h:202