pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
internal.h
Go to the documentation of this file.
1/*
2 * Copyright 2004-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_PENGINE_INTERNAL__H
11#define PCMK__CRM_PENGINE_INTERNAL__H
12
13#include <stdbool.h>
14#include <stdint.h> // uint32_t
15#include <string.h>
16#include <crm/common/xml.h>
17#include <crm/pengine/status.h>
19#include <crm/common/internal.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28const char *pe__resource_description(const pcmk_resource_t *rsc,
29 uint32_t show_opts);
30
31bool pe__clone_is_ordered(const pcmk_resource_t *clone);
33bool pe__clone_flag_is_set(const pcmk_resource_t *clone, uint32_t flags);
34
35bool pe__group_flag_is_set(const pcmk_resource_t *group, uint32_t flags);
37
39 bool include_bundle);
40
41int pe__clone_max(const pcmk_resource_t *clone);
42int pe__clone_node_max(const pcmk_resource_t *clone);
48 pcmk_action_t *start,
49 pcmk_action_t *started,
50 pcmk_action_t *stop,
51 pcmk_action_t *stopped);
52
54 bool optional, bool runnable);
55
57 bool any_promoting, bool any_demoting);
58
59bool pe_can_fence(const pcmk_scheduler_t *scheduler, const pcmk_node_t *node);
60
61pcmk_node_t *native_location(const pcmk_resource_t *rsc, GList **list,
62 uint32_t target);
64 pcmk_scheduler_t *scheduler, gboolean failed);
65
70
72 const pcmk_node_t *node, uint32_t flags);
73
74bool native_active(const pcmk_resource_t *rsc, bool all);
75bool group_active(const pcmk_resource_t *rsc, bool all);
76bool clone_active(const pcmk_resource_t *rsc, bool all);
77bool pe__bundle_active(const pcmk_resource_t *rsc, bool all);
78
79gchar *pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name,
80 const pcmk_node_t *node, uint32_t show_opts,
81 const char *target_role, bool show_nodes);
82
83int pe__name_and_nvpairs_xml(pcmk__output_t *out, bool is_list, const char *tag_name,
84 ...) G_GNUC_NULL_TERMINATED;
85char *pe__node_display_name(pcmk_node_t *node, bool print_detail);
86
87
88// Clone notifications (pe_notif.c)
90 pcmk_resource_t *rsc,
91 pcmk_action_t *stonith_op);
92
93
94// Resource output methods
95int pe__clone_xml(pcmk__output_t *out, va_list args);
96int pe__clone_default(pcmk__output_t *out, va_list args);
97int pe__group_xml(pcmk__output_t *out, va_list args);
98int pe__group_default(pcmk__output_t *out, va_list args);
99int pe__bundle_xml(pcmk__output_t *out, va_list args);
100int pe__bundle_html(pcmk__output_t *out, va_list args);
101int pe__bundle_text(pcmk__output_t *out, va_list args);
102int pe__node_html(pcmk__output_t *out, va_list args);
103int pe__node_text(pcmk__output_t *out, va_list args);
104int pe__node_xml(pcmk__output_t *out, va_list args);
105int pe__resource_xml(pcmk__output_t *out, va_list args);
106int pe__resource_html(pcmk__output_t *out, va_list args);
107int pe__resource_text(pcmk__output_t *out, va_list args);
108
110void group_free(pcmk_resource_t *rsc);
111void clone_free(pcmk_resource_t *rsc);
113
114enum rsc_role_e native_resource_state(const pcmk_resource_t *rsc, bool current);
115enum rsc_role_e group_resource_state(const pcmk_resource_t *rsc, bool current);
116enum rsc_role_e clone_resource_state(const pcmk_resource_t *rsc, bool current);
118 bool current);
119
122
124
125pcmk_node_t *pe__copy_node(const pcmk_node_t *this_node);
126
127/* Failure handling utilities (from failcounts.c) */
128
129int pe_get_failcount(const pcmk_node_t *node, pcmk_resource_t *rsc,
130 time_t *last_failure, uint32_t flags,
131 const xmlNode *xml_op);
132
134 const pcmk_node_t *node, const char *reason,
136
137/* Functions for finding/counting a resource's active nodes */
138
140 pcmk_node_t **active, unsigned int *count_all,
141 unsigned int *count_clean);
142
144 unsigned int *count);
145
146/* Binary like operators for lists of nodes */
147GHashTable *pe__node_list2table(const GList *list);
148
150gboolean order_actions(pcmk_action_t *first, pcmk_action_t *then,
151 uint32_t flags);
152
153void pe__show_node_scores_as(const char *file, const char *function,
154 int line, bool to_log, const pcmk_resource_t *rsc,
155 const char *comment, GHashTable *nodes,
157
158#define pe__show_node_scores(level, rsc, text, nodes, scheduler) \
159 pe__show_node_scores_as(__FILE__, __func__, __LINE__, \
160 (level), (rsc), (text), (nodes), (scheduler))
161
163 const pcmk_node_t *node,
164 const char *action_name, guint interval_ms,
165 const xmlNode *action_config);
166GHashTable *pcmk__unpack_action_rsc_params(const xmlNode *action_xml,
167 GHashTable *node_attrs,
168 pcmk_scheduler_t *data_set);
169xmlNode *pcmk__find_action_config(const pcmk_resource_t *rsc,
170 const char *action_name, guint interval_ms,
171 bool include_disabled);
172
174 const char *action_name);
175
177 const char *action_name,
178 guint interval_ms, const char *value);
179
181 const char *action_name,
182 enum pcmk__on_fail on_fail,
183 GHashTable *meta);
184
185pcmk_action_t *custom_action(pcmk_resource_t *rsc, char *key, const char *task,
186 const pcmk_node_t *on_node, gboolean optional,
188
189#define delete_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_DELETE, 0)
190#define stop_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_STOP, 0)
191#define reload_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_RELOAD_AGENT, 0)
192#define start_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_START, 0)
193#define promote_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_PROMOTE, 0)
194#define demote_key(rsc) pcmk__op_key((rsc)->id, PCMK_ACTION_DEMOTE, 0)
195
196#define delete_action(rsc, node, optional) \
197 custom_action((rsc), delete_key(rsc), PCMK_ACTION_DELETE, \
198 (node), (optional), (rsc)->priv->scheduler)
199
200#define stop_action(rsc, node, optional) \
201 custom_action((rsc), stop_key(rsc), PCMK_ACTION_STOP, \
202 (node), (optional), (rsc)->priv->scheduler)
203
204#define start_action(rsc, node, optional) \
205 custom_action((rsc), start_key(rsc), PCMK_ACTION_START, \
206 (node), (optional), (rsc)->priv->scheduler)
207
208#define promote_action(rsc, node, optional) \
209 custom_action((rsc), promote_key(rsc), PCMK_ACTION_PROMOTE, \
210 (node), (optional), (rsc)->priv->scheduler)
211
212#define demote_action(rsc, node, optional) \
213 custom_action((rsc), demote_key(rsc), PCMK_ACTION_DEMOTE, \
214 (node), (optional), (rsc)->priv->scheduler)
215
216pcmk_action_t *find_first_action(const GList *input, const char *uuid,
217 const char *task, const pcmk_node_t *on_node);
218
220 const char *name);
221
222GList *find_actions(GList *input, const char *key, const pcmk_node_t *on_node);
223GList *find_actions_exact(GList *input, const char *key,
224 const pcmk_node_t *on_node);
225GList *pe__resource_actions(const pcmk_resource_t *rsc, const pcmk_node_t *node,
226 const char *task, bool require_node);
227
228void resource_location(pcmk_resource_t *rsc, const pcmk_node_t *node, int score,
229 const char *tag, pcmk_scheduler_t *scheduler);
230
231int pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b);
232extern gint sort_op_by_callid(gconstpointer a, gconstpointer b);
233gboolean get_target_role(const pcmk_resource_t *rsc, enum rsc_role_e *role);
234void pe__set_next_role(pcmk_resource_t *rsc, enum rsc_role_e role,
235 const char *why);
236
237extern void destroy_ticket(gpointer data);
238pcmk__ticket_t *ticket_new(const char *ticket_id, pcmk_scheduler_t *scheduler);
239
240// Resources for manipulating resource names
241const char *pe_base_name_end(const char *id);
242char *clone_strip(const char *last_rsc_id);
243char *clone_zero(const char *last_rsc_id);
244
245static inline bool
246pe_base_name_eq(const pcmk_resource_t *rsc, const char *id)
247{
248 if (id && rsc && rsc->id) {
249 // Number of characters in rsc->id before any clone suffix
250 size_t base_len = pe_base_name_end(rsc->id) - rsc->id + 1;
251
252 return (strlen(id) == base_len) && !strncmp(id, rsc->id, base_len);
253 }
254 return false;
255}
256
257int pe__target_rc_from_xml(const xmlNode *xml_op);
258
259gint pe__cmp_node_name(gconstpointer a, gconstpointer b);
260bool is_set_recursive(const pcmk_resource_t *rsc, long long flag, bool any);
261
263 guint *interval_ms,
264 const pcmk_node_t *node,
265 const xmlNode *xml_op,
266 GHashTable *overrides,
267 bool calc_secure,
269
270void pe__free_digests(gpointer ptr);
271
273 const xmlNode *xml_op,
274 pcmk_node_t *node,
276
277pcmk_action_t *pe_fence_op(pcmk_node_t *node, const char *op, bool optional,
278 const char *reason, bool priority_delay,
281 const char *reason, pcmk_action_t *dependency,
283
285 enum pcmk__action_flags flag);
286void pe_action_set_reason(pcmk_action_t *action, const char *reason,
287 bool overwrite);
288void pe__add_action_expected_result(pcmk_action_t *action, int expected_result);
289
293 uint64_t flag);
294
295int pe__rscs_brief_output(pcmk__output_t *out, GList *rsc_list, unsigned int options);
297 const char *reason, bool priority_delay);
298
299pcmk_node_t *pe_create_node(const char *id, const char *uname, const char *type,
300 int score, pcmk_scheduler_t *scheduler);
301
303 const char *name, const pcmk_node_t *node,
304 unsigned int options);
306 const char *name, const pcmk_node_t *node,
307 unsigned int options);
308
309GList *pe__bundle_containers(const pcmk_resource_t *bundle);
310
311int pe__bundle_max(const pcmk_resource_t *rsc);
313 const pcmk_node_t *node);
318 bool (*fn)(pcmk__bundle_replica_t *, void *),
319 void *user_data);
321 bool (*fn)(const pcmk__bundle_replica_t *,
322 void *),
323 void *user_data);
325 const pcmk_node_t *node);
327const char *pe__add_bundle_remote_name(pcmk_resource_t *rsc, xmlNode *xml,
328 const char *field);
331
332bool pe__shutdown_requested(const pcmk_node_t *node);
333
341
342void pe__unpack_dataset_nvpairs(const xmlNode *xml_obj, const char *set_name,
343 const pcmk_rule_input_t *rule_input,
344 GHashTable *hash, const char *always_first,
346
349
350GList *pe__rscs_with_tag(pcmk_scheduler_t *scheduler, const char *tag_name);
351GList *pe__unames_with_tag(pcmk_scheduler_t *scheduler, const char *tag_name);
352bool pe__rsc_has_tag(pcmk_scheduler_t *scheduler, const char *rsc,
353 const char *tag);
354bool pe__uname_has_tag(pcmk_scheduler_t *scheduler, const char *node,
355 const char *tag);
356
358 const pcmk_node_t *node);
359bool pe__rsc_running_on_any(pcmk_resource_t *rsc, GList *node_list);
360GList *pe__filter_rsc_list(GList *rscs, GList *filter);
362GList * pe__build_rsc_list(pcmk_scheduler_t *scheduler, const char *s);
363
364bool pcmk__rsc_filtered_by_node(pcmk_resource_t *rsc, GList *only_node);
365
366bool pe__bundle_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc,
367 bool check_parent);
368bool pe__clone_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc,
369 bool check_parent);
370bool pe__group_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc,
371 bool check_parent);
372bool pe__native_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc,
373 bool check_parent);
374
375xmlNode *pe__failed_probe_for_rsc(const pcmk_resource_t *rsc, const char *name);
376
377const char *pe__clone_child_id(const pcmk_resource_t *rsc);
378
379int pe__sum_node_health_scores(const pcmk_node_t *node, int base_health);
381
382static inline enum pcmk__health_strategy
383pe__health_strategy(pcmk_scheduler_t *scheduler)
384{
385 const char *strategy = pcmk__cluster_option(scheduler->priv->options,
387
388 return pcmk__parse_health_strategy(strategy);
389}
390
391#ifdef __cplusplus
392}
393#endif
394
395#endif // PCMK__CRM_PENGINE_INTERNAL__H
pcmk__action_flags
pcmk__on_fail
pcmk__requires
pcmk__action_type
const char * name
Definition cib.c:26
pcmk__clone_flags
uint64_t flags
Definition remote.c:3
char uname[MAX_NAME]
Definition cpg.c:5
char data[0]
Definition cpg.c:10
enum pcmk_ipc_server type
Definition cpg.c:3
pcmk__health_strategy
enum pcmk__health_strategy pcmk__parse_health_strategy(const char *value)
Definition health.c:46
pcmk_scheduler_t * scheduler
xmlNode * input
#define PCMK_OPT_NODE_HEALTH_STRATEGY
Definition options.h:52
const char * pcmk__cluster_option(GHashTable *options, const char *name)
Definition options.c:1410
Formatted output for pacemaker tools.
const char * action
Definition pcmk_fence.c:32
const char * target
Definition pcmk_fence.c:31
bool pe_can_fence(const pcmk_scheduler_t *scheduler, const pcmk_node_t *node)
Definition utils.c:35
pcmk_action_t * pe__clear_failcount(pcmk_resource_t *rsc, const pcmk_node_t *node, const char *reason, pcmk_scheduler_t *scheduler)
Schedule a controller operation to clear a fail count.
Definition failcounts.c:467
int pe__clone_xml(pcmk__output_t *out, va_list args)
pcmk_node_t * pe__copy_node(const pcmk_node_t *this_node)
Definition utils.c:124
bool clone_active(const pcmk_resource_t *rsc, bool all)
Definition clone.c:445
GHashTable * pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, const char *action_name, guint interval_ms, const xmlNode *action_config)
Definition pe_actions.c:679
const char * pe__add_bundle_remote_name(pcmk_resource_t *rsc, xmlNode *xml, const char *field)
Definition bundle.c:911
void pe__foreach_const_bundle_replica(const pcmk_resource_t *bundle, bool(*fn)(const pcmk__bundle_replica_t *, void *), void *user_data)
Definition bundle.c:234
enum rsc_role_e pe__bundle_resource_state(const pcmk_resource_t *rsc, bool current)
Definition bundle.c:1884
pcmk_action_t * get_pseudo_op(const char *name, pcmk_scheduler_t *scheduler)
bool is_set_recursive(const pcmk_resource_t *rsc, long long flag, bool any)
Definition clone.c:500
void pe__create_promotable_pseudo_ops(pcmk_resource_t *clone, bool any_promoting, bool any_demoting)
Definition clone.c:1105
enum rsc_role_e pcmk__role_after_failure(const pcmk_resource_t *rsc, const char *action_name, enum pcmk__on_fail on_fail, GHashTable *meta)
char * pe__action2reason(const pcmk_action_t *action, enum pcmk__action_flags flag)
GHashTable * pe__node_list2table(const GList *list)
Definition utils.c:152
gboolean get_target_role(const pcmk_resource_t *rsc, enum rsc_role_e *role)
Definition utils.c:435
GList * pe__resource_actions(const pcmk_resource_t *rsc, const pcmk_node_t *node, const char *task, bool require_node)
Find all actions of given type for a resource.
bool pe__bundle_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc, bool check_parent)
Definition bundle.c:1934
void group_free(pcmk_resource_t *rsc)
Definition group.c:382
const char * pe__resource_description(const pcmk_resource_t *rsc, uint32_t show_opts)
Definition pe_output.c:24
bool pe__rsc_has_tag(pcmk_scheduler_t *scheduler, const char *rsc, const char *tag)
Definition tags.c:89
void pe__create_clone_notifications(pcmk_resource_t *clone)
Definition clone.c:1169
pcmk_node_t * pe__find_active_requires(const pcmk_resource_t *rsc, unsigned int *count)
Definition complex.c:1199
GList * pe__build_rsc_list(pcmk_scheduler_t *scheduler, const char *s)
Definition utils.c:844
enum pcmk__requires pcmk__action_requires(const pcmk_resource_t *rsc, const char *action_name)
Definition pe_actions.c:820
void destroy_ticket(gpointer data)
Definition utils.c:531
bool native_unpack(pcmk_resource_t *rsc)
Definition native.c:205
int pe__clone_promoted_node_max(const pcmk_resource_t *clone)
Definition clone.c:107
void pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, const char *reason, bool priority_delay)
Schedule a fence action for a node.
Definition unpack.c:116
GList * find_actions(GList *input, const char *key, const pcmk_node_t *on_node)
bool group_active(const pcmk_resource_t *rsc, bool all)
Definition group.c:235
const pcmk_resource_t * pe__const_top_resource(const pcmk_resource_t *rsc, bool include_bundle)
Definition complex.c:1025
pcmk__op_digest_t * rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, pcmk_node_t *node, pcmk_scheduler_t *scheduler)
Definition pe_digest.c:391
const char * pe_base_name_end(const char *id)
Definition unpack.c:1914
pcmk_resource_t * pe__last_group_member(const pcmk_resource_t *group)
Definition group.c:37
int pe__name_and_nvpairs_xml(pcmk__output_t *out, bool is_list, const char *tag_name,...) G_GNUC_NULL_TERMINATED
Definition pe_output.c:619
void pe__count_bundle(pcmk_resource_t *rsc)
Definition bundle.c:1910
bool pe__rsc_running_on_any(pcmk_resource_t *rsc, GList *node_list)
Definition utils.c:767
bool native_active(const pcmk_resource_t *rsc, bool all)
Definition native.c:325
int pe__clone_max(const pcmk_resource_t *clone)
Definition clone.c:56
void pe__set_resource_flags_recursive(pcmk_resource_t *rsc, uint64_t flags)
Definition utils.c:615
void native_free(pcmk_resource_t *rsc)
Definition native.c:867
GList * pe__rscs_with_tag(pcmk_scheduler_t *scheduler, const char *tag_name)
Definition tags.c:20
int pe__node_text(pcmk__output_t *out, va_list args)
bool pe__group_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc, bool check_parent)
Definition group.c:426
enum rsc_role_e group_resource_state(const pcmk_resource_t *rsc, bool current)
Definition group.c:405
int pe__common_output_text(pcmk__output_t *out, const pcmk_resource_t *rsc, const char *name, const pcmk_node_t *node, unsigned int options)
bool pe__is_universal_clone(const pcmk_resource_t *rsc, const pcmk_scheduler_t *scheduler)
Definition clone.c:981
void resource_location(pcmk_resource_t *rsc, const pcmk_node_t *node, int score, const char *tag, pcmk_scheduler_t *scheduler)
Definition utils.c:398
pcmk_action_t * pe__new_rsc_pseudo_action(pcmk_resource_t *rsc, const char *task, bool optional, bool runnable)
pcmk_resource_t * pe__find_bundle_replica(const pcmk_resource_t *bundle, const pcmk_node_t *node)
Definition bundle.c:1373
const pcmk_resource_t * pe__get_rsc_in_container(const pcmk_resource_t *instance)
Definition bundle.c:131
void clone_free(pcmk_resource_t *rsc)
Definition clone.c:917
int pe__bundle_xml(pcmk__output_t *out, va_list args)
int pe__group_xml(pcmk__output_t *out, va_list args)
pcmk__op_digest_t * pe__calculate_digests(pcmk_resource_t *rsc, const char *task, guint *interval_ms, const pcmk_node_t *node, const xmlNode *xml_op, GHashTable *overrides, bool calc_secure, pcmk_scheduler_t *scheduler)
Definition pe_digest.c:302
int pe__node_health(pcmk_node_t *node)
Definition pe_health.c:130
int pe__bundle_html(pcmk__output_t *out, va_list args)
gboolean order_actions(pcmk_action_t *first, pcmk_action_t *then, uint32_t flags)
Definition utils.c:483
void pe__unpack_dataset_nvpairs(const xmlNode *xml_obj, const char *set_name, const pcmk_rule_input_t *rule_input, GHashTable *hash, const char *always_first, pcmk_scheduler_t *scheduler)
Definition utils.c:698
bool pe__rsc_running_on_only(const pcmk_resource_t *rsc, const pcmk_node_t *node)
Definition utils.c:759
int pe__clone_default(pcmk__output_t *out, va_list args)
bool clone_unpack(pcmk_resource_t *rsc)
Definition clone.c:323
int pe__sum_node_health_scores(const pcmk_node_t *node, int base_health)
Definition pe_health.c:110
pcmk__ticket_t * ticket_new(const char *ticket_id, pcmk_scheduler_t *scheduler)
Definition utils.c:543
GList * pe__filter_rsc_list(GList *rscs, GList *filter)
Definition utils.c:789
void pe__create_clone_notif_pseudo_ops(pcmk_resource_t *clone, pcmk_action_t *start, pcmk_action_t *started, pcmk_action_t *stop, pcmk_action_t *stopped)
Definition clone.c:1218
bool pe__clone_flag_is_set(const pcmk_resource_t *clone, uint32_t flags)
Definition clone.c:1086
bool pe__native_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc, bool check_parent)
Definition native.c:1129
int pe_get_failcount(const pcmk_node_t *node, pcmk_resource_t *rsc, time_t *last_failure, uint32_t flags, const xmlNode *xml_op)
Definition failcounts.c:367
int pe__bundle_text(pcmk__output_t *out, va_list args)
bool pe__clone_is_ordered(const pcmk_resource_t *clone)
Definition clone.c:1043
void pe__free_digests(gpointer ptr)
Definition pe_digest.c:33
char * clone_zero(const char *last_rsc_id)
Definition unpack.c:1976
gint pe__cmp_node_name(gconstpointer a, gconstpointer b)
Definition utils.c:182
pcmk_resource_t * pe__first_container(const pcmk_resource_t *bundle)
Definition bundle.c:187
void pe__clear_resource_flags_recursive(pcmk_resource_t *rsc, uint64_t flags)
Definition utils.c:590
GHashTable * pcmk__unpack_action_rsc_params(const xmlNode *action_xml, GHashTable *node_attrs, pcmk_scheduler_t *data_set)
Definition pe_actions.c:247
void pe__register_messages(pcmk__output_t *out)
Definition pe_output.c:3482
pcmk_action_t * find_first_action(const GList *input, const char *uuid, const char *task, const pcmk_node_t *on_node)
void pe_action_set_reason(pcmk_action_t *action, const char *reason, bool overwrite)
pcmk_action_t * pe_fence_op(pcmk_node_t *node, const char *op, bool optional, const char *reason, bool priority_delay, pcmk_scheduler_t *scheduler)
bool pe__count_active_node(const pcmk_resource_t *rsc, pcmk_node_t *node, pcmk_node_t **active, unsigned int *count_all, unsigned int *count_clean)
Definition complex.c:1116
xmlNode * pe__failed_probe_for_rsc(const pcmk_resource_t *rsc, const char *name)
Definition utils.c:879
bool pe__bundle_needs_remote_name(pcmk_resource_t *rsc)
Definition bundle.c:893
void pe__add_action_expected_result(pcmk_action_t *action, int expected_result)
int pe__set_clone_flag(pcmk_resource_t *clone, enum pcmk__clone_flags flag)
Definition clone.c:1062
pcmk_node_t * native_location(const pcmk_resource_t *rsc, GList **list, uint32_t target)
Definition native.c:897
pcmk_resource_t * native_find_rsc(pcmk_resource_t *rsc, const char *id, const pcmk_node_t *node, uint32_t flags)
Definition native.c:270
GList * pe__unames_with_tag(pcmk_scheduler_t *scheduler, const char *tag_name)
Definition tags.c:54
enum pcmk__on_fail pcmk__parse_on_fail(const pcmk_resource_t *rsc, const char *action_name, guint interval_ms, const char *value)
Definition pe_actions.c:858
gint sort_op_by_callid(gconstpointer a, gconstpointer b)
GList * pe__bundle_containers(const pcmk_resource_t *bundle)
Definition bundle.c:1989
GList * pe__build_node_name_list(pcmk_scheduler_t *scheduler, const char *s)
Definition utils.c:811
void pe__clear_resource_flags_on_all(pcmk_scheduler_t *scheduler, uint64_t flag)
Definition utils.c:603
void pe__set_next_role(pcmk_resource_t *rsc, enum rsc_role_e role, const char *why)
Definition complex.c:1247
int pe__node_xml(pcmk__output_t *out, va_list args)
pcmk_resource_t * pe__bundled_resource(const pcmk_resource_t *rsc)
Definition bundle.c:113
void common_free(pcmk_resource_t *rsc)
Definition complex.c:1042
enum pcmk__action_type get_complex_task(const pcmk_resource_t *rsc, const char *name)
pcmk_action_t * custom_action(pcmk_resource_t *rsc, char *key, const char *task, const pcmk_node_t *on_node, gboolean optional, pcmk_scheduler_t *scheduler)
Create or update an action object.
char * pe__node_display_name(pcmk_node_t *node, bool print_detail)
Definition pe_output.c:562
bool pe__unpack_bundle(pcmk_resource_t *rsc)
Definition bundle.c:957
pcmk_node_t * pe_create_node(const char *id, const char *uname, const char *type, int score, pcmk_scheduler_t *scheduler)
Definition unpack.c:452
int pe__rscs_brief_output(pcmk__output_t *out, GList *rsc_list, unsigned int options)
int pe__clone_node_max(const pcmk_resource_t *clone)
Definition clone.c:73
int pe__node_html(pcmk__output_t *out, va_list args)
int pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b)
gchar * pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, const pcmk_node_t *node, uint32_t show_opts, const char *target_role, bool show_nodes)
Definition native.c:473
char * clone_strip(const char *last_rsc_id)
Definition unpack.c:1954
int pe__clone_promoted_max(const pcmk_resource_t *clone)
Definition clone.c:90
bool pe__node_is_bundle_instance(const pcmk_resource_t *bundle, const pcmk_node_t *node)
Definition bundle.c:161
void native_add_running(pcmk_resource_t *rsc, pcmk_node_t *node, pcmk_scheduler_t *scheduler, gboolean failed)
Definition native.c:87
void pe__count_common(pcmk_resource_t *rsc)
Definition complex.c:1216
bool pe__uname_has_tag(pcmk_scheduler_t *scheduler, const char *node, const char *tag)
Definition tags.c:105
bool pe__bundle_active(const pcmk_resource_t *rsc, bool all)
Definition bundle.c:1325
void pe__clear_resource_history(pcmk_resource_t *rsc, const pcmk_node_t *node)
const char * pe__clone_child_id(const pcmk_resource_t *rsc)
Definition clone.c:1027
void pe__show_node_scores_as(const char *file, const char *function, int line, bool to_log, const pcmk_resource_t *rsc, const char *comment, GHashTable *nodes, pcmk_scheduler_t *scheduler)
Definition utils.c:285
void pe__foreach_bundle_replica(pcmk_resource_t *bundle, bool(*fn)(pcmk__bundle_replica_t *, void *), void *user_data)
Definition bundle.c:210
bool pe__resource_is_disabled(const pcmk_resource_t *rsc)
Definition utils.c:728
void pe__order_notifs_after_fencing(const pcmk_action_t *action, pcmk_resource_t *rsc, pcmk_action_t *stonith_op)
Definition pe_notif.c:1011
int pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, const char *name, const pcmk_node_t *node, unsigned int options)
void pe__free_clone_notification_data(pcmk_resource_t *clone)
Definition clone.c:1188
bool pe__clone_is_filtered(const pcmk_resource_t *rsc, const GList *only_rsc, bool check_parent)
Definition clone.c:995
int pe__resource_xml(pcmk__output_t *out, va_list args)
bool pe__group_flag_is_set(const pcmk_resource_t *group, uint32_t flags)
Definition group.c:59
bool group_unpack(pcmk_resource_t *rsc)
Definition group.c:184
void trigger_unfencing(pcmk_resource_t *rsc, pcmk_node_t *node, const char *reason, pcmk_action_t *dependency, pcmk_scheduler_t *scheduler)
Definition utils.c:628
bool pcmk__rsc_filtered_by_node(pcmk_resource_t *rsc, GList *only_node)
Definition utils.c:782
bool pe__shutdown_requested(const pcmk_node_t *node)
Definition utils.c:676
enum rsc_role_e clone_resource_state(const pcmk_resource_t *rsc, bool current)
Definition clone.c:953
xmlNode * pcmk__find_action_config(const pcmk_resource_t *rsc, const char *action_name, guint interval_ms, bool include_disabled)
Definition pe_actions.c:137
int pe__group_default(pcmk__output_t *out, va_list args)
int pe__target_rc_from_xml(const xmlNode *xml_op)
Definition unpack.c:4292
GList * find_actions_exact(GList *input, const char *key, const pcmk_node_t *on_node)
int pe__resource_text(pcmk__output_t *out, va_list args)
int pe__resource_html(pcmk__output_t *out, va_list args)
enum rsc_role_e native_resource_state(const pcmk_resource_t *rsc, bool current)
Definition native.c:874
void pe__free_bundle(pcmk_resource_t *rsc)
Definition bundle.c:1850
int pe__bundle_max(const pcmk_resource_t *rsc)
Definition bundle.c:96
rsc_role_e
Definition roles.h:34
Cluster status and scheduling.
A single instance of a bundle.
This structure contains everything that makes up a single output formatter.
pcmk__scheduler_private_t * priv
Definition scheduler.h:99
Data used to evaluate a rule (any NULL items are ignored)
Definition rules.h:57
Wrappers for and extensions to libxml2.