pacemaker  2.1.7-0f7f88312f
Scalable High-Availability cluster resource manager
pe_status_private.h
Go to the documentation of this file.
1 /*
2  * Copyright 2018-2023 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 PE_STATUS_PRIVATE__H
11 # define PE_STATUS_PRIVATE__H
12 
13 /* This header is for the sole use of libpe_status, so that functions can be
14  * declared with G_GNUC_INTERNAL for efficiency.
15  */
16 
17 #if defined(PCMK__UNIT_TESTING)
18 #undef G_GNUC_INTERNAL
19 #define G_GNUC_INTERNAL
20 #endif
21 
22 #include <glib.h> // GSList, GList, GHashTable
23 #include <libxml/tree.h> // xmlNode
24 
25 #include <crm/pengine/status.h> // pcmk_action_t, pcmk_resource_t, etc.
26 
31 # define status_print(fmt, args...) \
32  if(options & pe_print_html) { \
33  FILE *stream = print_data; \
34  fprintf(stream, fmt, ##args); \
35  } else if(options & pe_print_printf || options & pe_print_ncurses) { \
36  FILE *stream = print_data; \
37  fprintf(stream, fmt, ##args); \
38  } else if(options & pe_print_xml) { \
39  FILE *stream = print_data; \
40  fprintf(stream, fmt, ##args); \
41  } else if(options & pe_print_log) { \
42  int log_level = *(int*)print_data; \
43  do_crm_log(log_level, fmt, ##args); \
44  }
45 
46 typedef struct notify_data_s {
47  GSList *keys; // Environment variable name/value pairs
48 
49  const char *action;
50 
55 
56  GList *active; /* notify_entry_t* */
57  GList *inactive; /* notify_entry_t* */
58  GList *start; /* notify_entry_t* */
59  GList *stop; /* notify_entry_t* */
60  GList *demote; /* notify_entry_t* */
61  GList *promote; /* notify_entry_t* */
62  GList *promoted; /* notify_entry_t* */
63  GList *unpromoted; /* notify_entry_t* */
64  GHashTable *allowed_nodes;
66 
67 G_GNUC_INTERNAL
70 
71 G_GNUC_INTERNAL
73  notify_data_t *n_data);
74 
75 G_GNUC_INTERNAL
77 
78 G_GNUC_INTERNAL
80  const char *task,
82  pcmk_action_t *complete);
83 
84 G_GNUC_INTERNAL
85 void pe__force_anon(const char *standard, pcmk_resource_t *rsc, const char *rid,
87 
88 G_GNUC_INTERNAL
89 gint pe__cmp_rsc_priority(gconstpointer a, gconstpointer b);
90 
91 G_GNUC_INTERNAL
92 gboolean pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc,
95 
96 G_GNUC_INTERNAL
97 gboolean unpack_remote_nodes(xmlNode *xml_resources,
99 
100 G_GNUC_INTERNAL
101 gboolean unpack_resources(const xmlNode *xml_resources,
103 
104 G_GNUC_INTERNAL
105 gboolean unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler);
106 
107 G_GNUC_INTERNAL
108 gboolean unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler);
109 
110 G_GNUC_INTERNAL
111 gboolean unpack_tags(xmlNode *xml_tags, pcmk_scheduler_t *scheduler);
112 
113 G_GNUC_INTERNAL
114 gboolean unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler);
115 
116 G_GNUC_INTERNAL
118  const char *agent,
119  pcmk_node_t *node,
121 
122 G_GNUC_INTERNAL
124 
125 // Primitive resource methods
126 
127 G_GNUC_INTERNAL
128 unsigned int pe__primitive_max_per_node(const pcmk_resource_t *rsc);
129 
130 // Group resource methods
131 
132 G_GNUC_INTERNAL
133 unsigned int pe__group_max_per_node(const pcmk_resource_t *rsc);
134 
135 // Clone resource methods
136 
137 G_GNUC_INTERNAL
138 unsigned int pe__clone_max_per_node(const pcmk_resource_t *rsc);
139 
140 // Bundle resource methods
141 
142 G_GNUC_INTERNAL
144  unsigned int *count_all,
145  unsigned int *count_clean);
146 
147 G_GNUC_INTERNAL
148 unsigned int pe__bundle_max_per_node(const pcmk_resource_t *rsc);
149 
150 #endif // PE_STATUS_PRIVATE__H
GHashTable * allowed_nodes
G_GNUC_INTERNAL pcmk_node_t * pe__bundle_active_node(const pcmk_resource_t *rsc, unsigned int *count_all, unsigned int *count_clean)
Definition: bundle.c:2129
G_GNUC_INTERNAL unsigned int pe__clone_max_per_node(const pcmk_resource_t *rsc)
Definition: clone.c:1510
pcmk_action_t * pre
Implementation of pcmk_action_t.
Definition: actions.h:390
G_GNUC_INTERNAL op_digest_cache_t * pe__compare_fencing_digest(pcmk_resource_t *rsc, const char *agent, pcmk_node_t *node, pcmk_scheduler_t *scheduler)
Definition: pe_digest.c:541
G_GNUC_INTERNAL gboolean unpack_remote_nodes(xmlNode *xml_resources, pcmk_scheduler_t *scheduler)
Definition: unpack.c:674
pcmk_action_t * post
pcmk_action_t * pre_done
G_GNUC_INTERNAL unsigned int pe__bundle_max_per_node(const pcmk_resource_t *rsc)
Definition: bundle.c:2212
Implementation of pcmk_scheduler_t.
Definition: scheduler.h:172
G_GNUC_INTERNAL gboolean unpack_resources(const xmlNode *xml_resources, pcmk_scheduler_t *scheduler)
Definition: unpack.c:816
G_GNUC_INTERNAL void pe__unpack_node_health_scores(pcmk_scheduler_t *scheduler)
Definition: pe_health.c:23
const char * action
Definition: pcmk_fence.c:30
G_GNUC_INTERNAL gboolean unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler)
Definition: unpack.c:1319
Implementation of pcmk_resource_t.
Definition: resources.h:399
G_GNUC_INTERNAL void pe__force_anon(const char *standard, pcmk_resource_t *rsc, const char *rid, pcmk_scheduler_t *scheduler)
Definition: clone.c:210
G_GNUC_INTERNAL pcmk_resource_t * pe__create_clone_child(pcmk_resource_t *rsc, pcmk_scheduler_t *scheduler)
Definition: clone.c:245
G_GNUC_INTERNAL gboolean unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler)
Definition: unpack.c:597
pcmk_action_t * post_done
Implementation of pcmk_node_t.
Definition: nodes.h:130
G_GNUC_INTERNAL unsigned int pe__primitive_max_per_node(const pcmk_resource_t *rsc)
Definition: native.c:1449
G_GNUC_INTERNAL gboolean pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, pcmk_resource_t *parent, pcmk_scheduler_t *scheduler)
Definition: complex.c:603
G_GNUC_INTERNAL notify_data_t * pe__action_notif_pseudo_ops(pcmk_resource_t *rsc, const char *task, pcmk_action_t *action, pcmk_action_t *complete)
Definition: pe_notif.c:435
G_GNUC_INTERNAL void pe__create_action_notifications(pcmk_resource_t *rsc, notify_data_t *n_data)
Definition: pe_notif.c:943
Cluster status and scheduling.
G_GNUC_INTERNAL gint pe__cmp_rsc_priority(gconstpointer a, gconstpointer b)
Definition: utils.c:296
pcmk_scheduler_t * scheduler
G_GNUC_INTERNAL unsigned int pe__group_max_per_node(const pcmk_resource_t *rsc)
Definition: group.c:535
G_GNUC_INTERNAL gboolean unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler)
Definition: unpack.c:212
const char * parent
Definition: cib.c:27
struct notify_data_s notify_data_t
const char * action
G_GNUC_INTERNAL void pe__free_action_notification_data(notify_data_t *n_data)
Definition: pe_notif.c:960
G_GNUC_INTERNAL gboolean unpack_tags(xmlNode *xml_tags, pcmk_scheduler_t *scheduler)
Definition: unpack.c:884