pacemaker  1.1.24-3850484742
Scalable High-Availability cluster resource manager
status.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 PENGINE_STATUS__H
19 # define PENGINE_STATUS__H
20 
27 # include <glib.h>
28 # include <stdbool.h>
29 # include <crm/common/iso8601.h>
30 # include <crm/pengine/common.h>
31 
32 typedef struct node_s pe_node_t;
33 typedef struct node_s node_t;
34 typedef struct pe_action_s action_t;
35 typedef struct pe_action_s pe_action_t;
36 typedef struct resource_s resource_t;
37 typedef struct ticket_s ticket_t;
38 
39 // forward-compatible with Pacemaker 2.0.0
40 typedef struct resource_s pe_resource_t;
41 
42 typedef enum no_quorum_policy_e {
48 
49 enum node_type {
53 };
54 
55 enum pe_restart {
58 };
59 
60 enum pe_find {
61  pe_find_renamed = 0x001, // match resource ID or LRM history ID
62  pe_find_anon = 0x002, // match base name of anonymous clone instances
63  pe_find_clone = 0x004, // match only clone instances
64  pe_find_current = 0x008, // match resource active on specified node
65  pe_find_inactive = 0x010, // match resource not running anywhere
66  pe_find_any = 0x020, // match base name of any clone instance
67 };
68 
69 # define pe_flag_have_quorum 0x00000001ULL
70 # define pe_flag_symmetric_cluster 0x00000002ULL
71 # define pe_flag_is_managed_default 0x00000004ULL
72 # define pe_flag_maintenance_mode 0x00000008ULL
73 
74 # define pe_flag_stonith_enabled 0x00000010ULL
75 # define pe_flag_have_stonith_resource 0x00000020ULL
76 # define pe_flag_enable_unfencing 0x00000040ULL
77 # define pe_flag_concurrent_fencing 0x00000080ULL
78 
79 # define pe_flag_stop_rsc_orphans 0x00000100ULL
80 # define pe_flag_stop_action_orphans 0x00000200ULL
81 # define pe_flag_stop_everything 0x00000400ULL
82 
83 # define pe_flag_start_failure_fatal 0x00001000ULL
84 # define pe_flag_remove_after_stop 0x00002000ULL
85 # define pe_flag_startup_fencing 0x00004000ULL
86 
87 # define pe_flag_startup_probes 0x00010000ULL
88 # define pe_flag_have_status 0x00020000ULL
89 # define pe_flag_have_remote_nodes 0x00040000ULL
90 
91 # define pe_flag_quick_location 0x00100000ULL
92 # define pe_flag_sanitized 0x00200000ULL
93 # define pe_flag_stdout 0x00400000ULL
94 
96 # define pe_flag_no_counts 0x00800000ULL
97 
101 # define pe_flag_no_compat 0x01000000ULL
102 
103 typedef struct pe_working_set_s {
104  xmlNode *input;
106 
107  /* options extracted from the input */
108  char *dc_uuid;
110  const char *stonith_action;
111  const char *placement_strategy;
112 
113  unsigned long long flags;
114 
118 
119  GHashTable *config_hash;
120  GHashTable *tickets;
121 
122  // Actions for which there can be only one (e.g. fence nodeX)
123  GHashTable *singletons;
124 
131 
133  xmlNode *failed;
134  xmlNode *op_defaults;
135  xmlNode *rsc_defaults;
136 
137  /* stats */
140  int order_id;
142 
143  /* final output */
144  xmlNode *graph;
145 
146  GHashTable *template_rsc_sets;
147  const char *localhost;
148  GHashTable *tags;
149 
152 
153  GList *param_check; // History entries that need to be checked
154  GList *stop_needed; // Containers that need stop actions
155  int ninstances; // Total number of resource instances
156  int priority_fencing_delay; // Priority fencing delay
158 
160  /* Clear fail count if parameters changed for un-expired start or monitor
161  * last_failure.
162  */
164 
165  /* Clear fail count if parameters changed for start, monitor, promote, or
166  * migrate_from actions for active resources.
167  */
169 };
170 
172  const char *id;
173  const char *uname;
174 
175  /* @TODO convert these flags (and the ones at the end) into a bitfield */
176  gboolean online;
177  gboolean standby;
178  gboolean standby_onfail;
179  gboolean pending;
180  gboolean unclean;
181  gboolean unseen;
182  gboolean shutdown;
183  gboolean expected_up;
184  gboolean is_dc;
185 
187  GListPtr running_rsc; /* resource_t* */
188  GListPtr allocated_rsc; /* resource_t* */
189 
191 
192  GHashTable *attrs; /* char* => char* */
194 
195  GHashTable *utilization;
196 
198  GHashTable *digest_cache;
199 
200  gboolean maintenance;
204  gboolean remote_maintenance; /* what the remote-rsc is thinking */
205  gboolean unpacked;
206  int priority; // calculated based on the priority of resources running on the node
207 };
208 
209 struct node_s {
210  int weight;
211  gboolean fixed;
212  int count;
215 };
216 
217 # include <crm/pengine/complex.h>
218 
219 # define pe_rsc_orphan 0x00000001ULL
220 # define pe_rsc_managed 0x00000002ULL
221 # define pe_rsc_block 0x00000004ULL
222 # define pe_rsc_orphan_container_filler 0x00000008ULL
223 
224 # define pe_rsc_notify 0x00000010ULL
225 # define pe_rsc_unique 0x00000020ULL
226 # define pe_rsc_fence_device 0x00000040ULL
227 
228 # define pe_rsc_provisional 0x00000100ULL
229 # define pe_rsc_allocating 0x00000200ULL
230 # define pe_rsc_merging 0x00000400ULL
231 # define pe_rsc_munging 0x00000800ULL
232 
233 # define pe_rsc_try_reload 0x00001000ULL
234 # define pe_rsc_reload 0x00002000ULL
235 # define pe_rsc_allow_remote_remotes 0x00004000ULL
236 
237 # define pe_rsc_failed 0x00010000ULL
238 # define pe_rsc_shutdown 0x00020000ULL
239 # define pe_rsc_runnable 0x00040000ULL
240 # define pe_rsc_start_pending 0x00080000ULL
241 
242 # define pe_rsc_starting 0x00100000ULL
243 # define pe_rsc_stopping 0x00200000ULL
244 # define pe_rsc_migrating 0x00400000ULL
245 # define pe_rsc_allow_migrate 0x00800000ULL
246 
247 # define pe_rsc_failure_ignored 0x01000000ULL
248 # define pe_rsc_unexpectedly_running 0x02000000ULL
249 # define pe_rsc_maintenance 0x04000000ULL
250 # define pe_rsc_is_container 0x08000000ULL
251 
252 # define pe_rsc_needs_quorum 0x10000000ULL
253 # define pe_rsc_needs_fencing 0x20000000ULL
254 # define pe_rsc_needs_unfencing 0x40000000ULL
255 # define pe_rsc_have_unfencing 0x80000000ULL // obsolete (not set or used by cluster)
256 
258  pe_graph_none = 0x00000,
261  pe_graph_disable = 0x00004,
262 };
263 
264 /* *INDENT-OFF* */
266  pe_action_pseudo = 0x00001,
270 
272  pe_action_failure_is_fatal = 0x00020, /* no longer used, here for API compatibility */
275 
276  pe_action_dumped = 0x00100,
278  pe_action_clear = 0x00400,
279  pe_action_dangle = 0x00800,
280 
281  /* This action requires one or more of its dependencies to be runnable.
282  * We use this to clear the runnable flag before checking dependencies.
283  */
285 
288 };
289 /* *INDENT-ON* */
290 
291 struct resource_s {
292  char *id;
293  char *clone_name;
294  xmlNode *xml;
295  xmlNode *orig_xml;
296  xmlNode *ops_xml;
297 
300  enum pe_obj_types variant;
303 
304  enum rsc_recovery_type recovery_type;
305  enum pe_restart restart_type;
306 
307  int priority;
313 
314  gboolean is_remote_node;
315 
316  unsigned long long flags;
317 
318  // These fields should be treated as internal to Pacemaker
319  GListPtr rsc_cons_lhs; /* rsc_colocation_t* */
320  GListPtr rsc_cons; /* rsc_colocation_t* */
321  GListPtr rsc_location; // List of pe__location_t*
322  GListPtr actions; /* action_t* */
323  GListPtr rsc_tickets; /* rsc_ticket* */
324 
326  GListPtr running_on; /* node_t* */
327  GHashTable *known_on; /* node_t* */
328  GHashTable *allowed_nodes; /* node_t* */
329 
330  enum rsc_role_e role;
331  enum rsc_role_e next_role;
332 
333  GHashTable *meta;
334  GHashTable *parameters;
335  GHashTable *utilization;
336 
337  GListPtr children; /* resource_t* */
339 
342 
345 
347 
348  const char *isolation_wrapper;
351 
353 
354  pe_node_t *pending_node; // Node on which pending_task is happening
355 
356 #if ENABLE_VERSIONED_ATTRS
357  xmlNode *versioned_parameters;
358 #endif
359 };
360 
361 #if ENABLE_VERSIONED_ATTRS
362 // Used as action->action_details if action->rsc is not NULL
363 typedef struct pe_rsc_action_details_s {
364  xmlNode *versioned_parameters;
365  xmlNode *versioned_meta;
366 } pe_rsc_action_details_t;
367 #endif
368 
369 struct pe_action_s {
370  int id;
371  int priority;
372 
375  xmlNode *op_entry;
376 
377  char *task;
378  char *uuid;
379  char *cancel_task;
380 
383  enum action_fail_response on_fail;
384  enum rsc_role_e fail_role;
385 
390 
392 
393  GHashTable *meta;
394  GHashTable *extra;
395 
396  /*
397  * These two varables are associated with the constraint logic
398  * that involves first having one or more actions runnable before
399  * then allowing this action to execute.
400  *
401  * These varables are used with features such as 'clone-min' which
402  * requires at minimum X number of cloned instances to be running
403  * before an order dependency can run. Another option that uses
404  * this is 'require-all=false' in ordering constrants. This option
405  * says "only require one instance of a resource to start before
406  * allowing dependencies to start" -- basically, require-all=false is
407  * the same as clone-min=1.
408  */
409 
410  /* current number of known runnable actions in the before list. */
412  /* the number of "before" runnable actions required for this action
413  * to be considered runnable */
415 
416  GListPtr actions_before; /* action_wrapper_t* */
417  GListPtr actions_after; /* action_wrapper_t* */
418 
419  /* Some of the above fields could be moved to the details,
420  * except for API backward compatibility.
421  */
422  void *action_details; // varies by type of action
423 
424  char *reason;
425 };
426 
427 struct ticket_s {
428  char *id;
429  gboolean granted;
430  time_t last_granted;
431  gboolean standby;
432  GHashTable *state;
433 };
434 
435 typedef struct tag_s {
436  char *id;
438 } tag_t;
439 
444 };
445 
450 };
451 
452 /* *INDENT-OFF* */
454  pe_order_none = 0x0, /* deleted */
455  pe_order_optional = 0x1, /* pure ordering, nothing implied */
456  pe_order_apply_first_non_migratable = 0x2, /* Only apply this constraint's ordering if first is not migratable. */
457 
458  pe_order_implies_first = 0x10, /* If 'then' is required, ensure 'first' is too */
459  pe_order_implies_then = 0x20, /* If 'first' is required, ensure 'then' is too */
460  pe_order_implies_first_master = 0x40, /* Imply 'first' is required when 'then' is required and then's rsc holds Master role. */
461 
462  /* first requires then to be both runnable and migrate runnable. */
464 
465  pe_order_runnable_left = 0x100, /* 'then' requires 'first' to be runnable */
466 
467  pe_order_pseudo_left = 0x200, /* 'then' can only be pseudo if 'first' is runnable */
468  pe_order_implies_then_on_node = 0x400, /* If 'first' is required on 'nodeX',
469  * ensure instances of 'then' on 'nodeX' are too.
470  * Only really useful if 'then' is a clone and 'first' is not
471  */
472  pe_order_probe = 0x800, /* If 'first->rsc' is
473  * - running but about to stop, ignore the constraint
474  * - otherwise, behave as runnable_left
475  */
476 
477  pe_order_restart = 0x1000, /* 'then' is runnable if 'first' is optional or runnable */
478  pe_order_stonith_stop = 0x2000, /* only applies if the action is non-pseudo */
479  pe_order_serialize_only = 0x4000, /* serialize */
480  pe_order_same_node = 0x8000, /* applies only if 'first' and 'then' are on same node */
481 
482  pe_order_implies_first_printed = 0x10000, /* Like ..implies_first but only ensures 'first' is printed, not mandatory */
483  pe_order_implies_then_printed = 0x20000, /* Like ..implies_then but only ensures 'then' is printed, not mandatory */
484 
485  pe_order_asymmetrical = 0x100000, /* Indicates asymmetrical one way ordering constraint. */
486  pe_order_load = 0x200000, /* Only relevant if... */
487  pe_order_one_or_more = 0x400000, /* 'then' is runnable only if one or more of its dependencies are too */
489 
490  pe_order_preserve = 0x1000000, /* Hack for breaking user ordering constraints with container resources */
491  pe_order_then_cancels_first = 0x2000000, // if 'then' becomes required, 'first' becomes optional
492  pe_order_trace = 0x4000000, /* test marker */
493 };
494 /* *INDENT-ON* */
495 
499  enum pe_link_state state;
501 };
502 
503 const char *rsc_printable_id(resource_t *rsc);
504 gboolean cluster_status(pe_working_set_t * data_set);
506 void pe_free_working_set(pe_working_set_t *data_set);
508 void cleanup_calculations(pe_working_set_t * data_set);
509 void pe_reset_working_set(pe_working_set_t *data_set);
510 resource_t *pe_find_resource(GListPtr rsc_list, const char *id_rh);
511 resource_t *pe_find_resource_with_flags(GListPtr rsc_list, const char *id, enum pe_find flags);
512 node_t *pe_find_node(GListPtr node_list, const char *uname);
513 node_t *pe_find_node_id(GListPtr node_list, const char *id);
514 node_t *pe_find_node_any(GListPtr node_list, const char *id, const char *uname);
515 GListPtr find_operations(const char *rsc, const char *node, gboolean active_filter,
516  pe_working_set_t * data_set);
517 int pe_bundle_replicas(const resource_t *rsc);
518 #if ENABLE_VERSIONED_ATTRS
519 pe_rsc_action_details_t *pe_rsc_action_details(pe_action_t *action);
520 #endif
521 
529 static inline bool
530 pe_rsc_is_clone(resource_t *rsc)
531 {
532  return rsc && ((rsc->variant == pe_clone) || (rsc->variant == pe_master));
533 }
534 
542 static inline bool
543 pe_rsc_is_unique_clone(resource_t *rsc)
544 {
545  return pe_rsc_is_clone(rsc) && is_set(rsc->flags, pe_rsc_unique);
546 }
547 
555 static inline bool
556 pe_rsc_is_anon_clone(resource_t *rsc)
557 {
558  return pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique);
559 }
560 
561 static inline bool
562 pe_rsc_is_bundled(resource_t *rsc)
563 {
564  return uber_parent(rsc)->parent != NULL;
565 }
566 
567 #endif
GHashTable * tags
Definition: status.h:148
GListPtr nodes
Definition: status.h:125
const char * uname
Definition: status.h:173
int count
Definition: status.h:212
xmlNode * xml
Definition: status.h:294
xmlNode * failed
Definition: status.h:133
GHashTable * utilization
Definition: status.h:335
int runnable_before
Definition: status.h:411
pe_discover_e
Definition: status.h:446
int priority
Definition: status.h:206
int priority
Definition: status.h:371
int default_resource_stickiness
Definition: status.h:116
const char * id
Definition: status.h:172
int weight
Definition: status.h:210
void pe_free_working_set(pe_working_set_t *data_set)
Free a working set.
Definition: status.c:66
int sort_index
Definition: status.h:309
pe_graph_flags
Definition: status.h:257
struct crm_time_s crm_time_t
Definition: iso8601.h:37
time_t last_granted
Definition: status.h:430
int priority_fencing_delay
Definition: status.h:156
pe_working_set_t * pe_new_working_set(void)
Create a new working set.
Definition: status.c:50
xmlNode * op_defaults
Definition: status.h:134
gboolean exclusive_discover
Definition: status.h:349
GListPtr rsc_location
Definition: status.h:321
char * cancel_task
Definition: status.h:379
GListPtr running_rsc
Definition: status.h:187
enum pe_obj_types variant
Definition: status.h:300
gboolean pending
Definition: status.h:179
node_t * partial_migration_source
Definition: status.h:341
gboolean fixed
Definition: status.h:211
GListPtr resources
Definition: status.h:126
node_t * pe_find_node(GListPtr node_list, const char *uname)
Definition: status.c:444
no_quorum_policy_t no_quorum_policy
Definition: status.h:117
char * clone_name
Definition: status.h:293
xmlNode * orig_xml
Definition: status.h:295
xmlNode * op_entry
Definition: status.h:375
int max_valid_nodes
Definition: status.h:139
resource_t * uber_parent(resource_t *rsc)
Definition: complex.c:904
int id
Definition: status.h:370
resource_t * remote_rsc
Definition: status.h:190
action_t * pre_notify
Definition: status.h:386
GHashTable * tickets
Definition: status.h:120
node_t * dc_node
Definition: status.h:109
GListPtr children
Definition: status.h:337
GListPtr actions_before
Definition: status.h:416
action_fail_response
Definition: common.h:29
char * reason
Definition: status.h:424
char * dc_uuid
Definition: status.h:108
void * action_details
Definition: status.h:422
gboolean is_remote_node
Definition: status.h:314
int stonith_timeout
Definition: status.h:115
gboolean standby
Definition: status.h:177
pe_action_flags
Definition: status.h:265
GHashTable * extra
Definition: status.h:394
char * id
Definition: status.h:292
GHashTable * parameters
Definition: status.h:334
const char * isolation_wrapper
Definition: status.h:348
GListPtr placement_constraints
Definition: status.h:127
GHashTable * utilization
Definition: status.h:195
char uname[MAX_NAME]
Definition: internal.h:81
struct tag_s tag_t
GListPtr find_operations(const char *rsc, const char *node, gboolean active_filter, pe_working_set_t *data_set)
Definition: unpack.c:3644
rsc_recovery_type
Definition: common.h:69
struct node_shared_s * details
Definition: status.h:213
void pe_reset_working_set(pe_working_set_t *data_set)
Reset a working set to default state without freeing it.
Definition: status.c:342
pe_working_set_t * cluster
Definition: status.h:352
void cleanup_calculations(pe_working_set_t *data_set)
Reset working set to default state without freeing it or constraints.
Definition: status.c:282
GListPtr rsc_cons_lhs
Definition: status.h:319
gboolean unclean
Definition: status.h:180
pe_restart
Definition: status.h:55
int effective_priority
Definition: status.h:311
char * pending_task
Definition: status.h:346
xmlNode * rsc_defaults
Definition: status.h:135
pe_obj_types
Definition: complex.h:20
pe_node_t * pending_node
Definition: status.h:354
node_t * partial_migration_target
Definition: status.h:340
action_t * post_notified
Definition: status.h:389
resource_object_functions_t * fns
Definition: status.h:301
char * task
Definition: status.h:377
enum no_quorum_policy_e no_quorum_policy_t
resource_t * container
Definition: status.h:343
GHashTable * allowed_nodes
Definition: status.h:328
void * variant_opaque
Definition: status.h:299
GHashTable * digest_cache
Definition: status.h:198
GListPtr rsc_cons
Definition: status.h:320
GHashTable * meta
Definition: status.h:393
int blocked_resources
Definition: status.h:150
void set_working_set_defaults(pe_working_set_t *data_set)
Definition: status.c:372
GListPtr refs
Definition: status.h:437
gboolean unpacked
Definition: status.h:205
const char * stonith_action
Definition: status.h:110
action_t * pre_notified
Definition: status.h:387
node_type
Definition: status.h:49
pe_find
Definition: status.h:60
int migration_threshold
Definition: status.h:312
GListPtr actions
Definition: status.h:132
GHashTable * config_hash
Definition: status.h:119
action_t * post_notify
Definition: status.h:388
ISO_8601 Date handling.
gboolean is_dc
Definition: status.h:184
unsigned long long flags
Definition: status.h:316
pe_link_state
Definition: status.h:440
rsc_start_requirement
Definition: common.h:75
resource_t * parent
Definition: status.h:298
no_quorum_policy_e
Definition: status.h:42
char * uuid
Definition: status.h:378
GListPtr dangling_migrations
Definition: status.h:338
xmlNode * input
Definition: status.h:104
GListPtr fillers
Definition: status.h:344
GListPtr rsc_tickets
Definition: status.h:323
const char * placement_strategy
Definition: status.h:111
gboolean unseen
Definition: status.h:181
int failure_timeout
Definition: status.h:310
int pe_bundle_replicas(const resource_t *rsc)
Get the number of configured replicas in a bundle.
Definition: container.c:1440
int remote_reconnect_interval
Definition: status.h:350
gboolean remote_maintenance
Definition: status.h:204
GListPtr ordering_constraints
Definition: status.h:128
node_t * node
Definition: status.h:374
GListPtr colocation_constraints
Definition: status.h:129
action_t * action
Definition: status.h:500
int stickiness
Definition: status.h:308
GListPtr actions
Definition: status.h:322
gboolean maintenance
Definition: status.h:200
pe_ordering
Definition: status.h:453
#define pe_rsc_unique
Definition: status.h:225
const char * localhost
Definition: status.h:147
GHashTable * meta
Definition: status.h:333
node_t * pe_find_node_any(GListPtr node_list, const char *id, const char *uname)
Definition: status.c:416
gboolean standby_onfail
Definition: status.h:178
GList * param_check
Definition: status.h:153
int seen_count
Definition: status.h:391
GListPtr ticket_constraints
Definition: status.h:130
int disabled_resources
Definition: status.h:151
gboolean cluster_status(pe_working_set_t *data_set)
Definition: status.c:86
GHashTable * attrs
Definition: status.h:192
gboolean online
Definition: status.h:176
resource_t * pe_find_resource_with_flags(GListPtr rsc_list, const char *id, enum pe_find flags)
Definition: status.c:398
gboolean shutdown
Definition: status.h:182
gboolean rsc_discovery_enabled
Definition: status.h:201
GListPtr actions_after
Definition: status.h:417
gboolean remote_requires_reset
Definition: status.h:202
char * id
Definition: status.h:436
node_t * allocated_to
Definition: status.h:325
rsc_role_e
Definition: common.h:81
node_t * pe_find_node_id(GListPtr node_list, const char *id)
Definition: status.c:428
GHashTable * known_on
Definition: status.h:327
gboolean standby
Definition: status.h:431
Definition: status.h:435
struct resource_alloc_functions_s resource_alloc_functions_t
Definition: complex.h:56
gboolean expected_up
Definition: status.h:183
int rsc_discover_mode
Definition: status.h:214
gboolean granted
Definition: status.h:429
Definition: status.h:209
gboolean remote_was_fenced
Definition: status.h:203
int num_resources
Definition: status.h:186
resource_t * rsc
Definition: status.h:373
GHashTable * singletons
Definition: status.h:123
unsigned long long flags
Definition: status.h:113
resource_alloc_functions_t * cmds
Definition: status.h:302
xmlNode * ops_xml
Definition: status.h:296
resource_t * pe_find_resource(GListPtr rsc_list, const char *id_rh)
Definition: status.c:392
char * id
Definition: status.h:428
GList * GListPtr
Definition: crm.h:210
crm_time_t * now
Definition: status.h:105
struct pe_working_set_s pe_working_set_t
GHashTable * template_rsc_sets
Definition: status.h:146
const char * rsc_printable_id(resource_t *rsc)
Definition: utils.c:2291
GHashTable * state
Definition: status.h:432
pe_check_parameters
Definition: status.h:159
int required_runnable_before
Definition: status.h:414
GList * stop_needed
Definition: status.h:154
GListPtr allocated_rsc
Definition: status.h:188
enum crm_ais_msg_types type
Definition: internal.h:79
int priority
Definition: status.h:307
xmlNode * graph
Definition: status.h:144
GListPtr running_on
Definition: status.h:326