pacemaker 2.1.7-2.1.7
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
libpacemaker_private.h
Go to the documentation of this file.
1/*
2 * Copyright 2021-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 PCMK__LIBPACEMAKER_PRIVATE__H
11# define PCMK__LIBPACEMAKER_PRIVATE__H
12
13/* This header is for the sole use of libpacemaker, so that functions can be
14 * declared with G_GNUC_INTERNAL for efficiency.
15 */
16
17#include <crm/lrmd_events.h> // lrmd_event_data_t
18#include <crm/common/scheduler.h> // pcmk_action_t, pcmk_node_t, etc.
19#include <crm/pengine/internal.h> // pe__location_t
20
21// Colocation flags
24
25 // Primary is affected even if already active
27
28 // Colocation was explicitly configured in CIB
30};
31
32// Flags to modify the behavior of add_colocated_node_scores()
34 // With no other flags, apply all "with this" colocations
36
37 // Apply "this with" colocations instead of "with this" colocations
39
40 // Apply only colocations with non-negative scores
42
43 // Apply only colocations with at least one matching node
45};
46
47// Flags the update_ordered_actions() method can return
49 pcmk__updated_none = 0, // Nothing changed
50 pcmk__updated_first = (1 << 0), // First action was updated
51 pcmk__updated_then = (1 << 1), // Then action was updated
52};
53
54#define pcmk__set_updated_flags(au_flags, action, flags_to_set) do { \
55 au_flags = pcmk__set_flags_as(__func__, __LINE__, \
56 LOG_TRACE, "Action update", \
57 (action)->uuid, au_flags, \
58 (flags_to_set), #flags_to_set); \
59 } while (0)
60
61#define pcmk__clear_updated_flags(au_flags, action, flags_to_clear) do { \
62 au_flags = pcmk__clear_flags_as(__func__, __LINE__, \
63 LOG_TRACE, "Action update", \
64 (action)->uuid, au_flags, \
65 (flags_to_clear), #flags_to_clear); \
66 } while (0)
67
68// Resource assignment methods
90 pcmk_node_t *(*assign)(pcmk_resource_t *rsc, const pcmk_node_t *prefer,
91 bool stop_if_fail);
92
100
111
119
134 const pcmk_resource_t *primary,
135 const pcmk__colocation_t *colocation,
136 bool for_dependent);
137
155 GList *(*colocated_resources)(const pcmk_resource_t *rsc,
156 const pcmk_resource_t *orig_rsc,
157 GList *colocated_rscs);
158
177 const pcmk_resource_t *orig_rsc,
178 GList **list);
179
199 const pcmk_resource_t *orig_rsc,
200 GList **list);
201
232 const pcmk_resource_t *target_rsc,
233 const char *log_id, GHashTable **nodes,
234 const pcmk__colocation_t *colocation,
235 float factor, uint32_t flags);
236
245
258 uint32_t (*action_flags)(pcmk_action_t *action, const pcmk_node_t *node);
259
284 pcmk_action_t *then,
285 const pcmk_node_t *node, uint32_t flags,
286 uint32_t filter, uint32_t type,
288
296
304
315 void (*add_graph_meta)(const pcmk_resource_t *rsc, xmlNode *xml);
316
333 const pcmk_resource_t *orig_rsc, GList *all_rscs,
334 GHashTable *utilization);
335
343};
344
345// Actions (pcmk_sched_actions.c)
346
347G_GNUC_INTERNAL
350
351G_GNUC_INTERNAL
353 const pcmk_node_t *node, uint32_t flags,
354 uint32_t filter, uint32_t type,
356
357G_GNUC_INTERNAL
358void pcmk__log_action(const char *pre_text, const pcmk_action_t *action,
359 bool details);
360
361G_GNUC_INTERNAL
363 guint interval_ms,
364 const pcmk_node_t *node);
365
366G_GNUC_INTERNAL
368
369G_GNUC_INTERNAL
371
372G_GNUC_INTERNAL
374
375G_GNUC_INTERNAL
377
378G_GNUC_INTERNAL
380 const xmlNode *xml_op);
381
382G_GNUC_INTERNAL
384
385
386// Recurring actions (pcmk_sched_recurring.c)
387
388G_GNUC_INTERNAL
390
391G_GNUC_INTERNAL
392void pcmk__schedule_cancel(pcmk_resource_t *rsc, const char *call_id,
393 const char *task, guint interval_ms,
394 const pcmk_node_t *node, const char *reason);
395
396G_GNUC_INTERNAL
397void pcmk__reschedule_recurring(pcmk_resource_t *rsc, const char *task,
398 guint interval_ms, pcmk_node_t *node);
399
400G_GNUC_INTERNAL
402
403
404// Producing transition graphs (pcmk_graph_producer.c)
405
406G_GNUC_INTERNAL
407bool pcmk__graph_has_loop(const pcmk_action_t *init_action,
408 const pcmk_action_t *action,
410
411G_GNUC_INTERNAL
413
414G_GNUC_INTERNAL
416
417
418// Fencing (pcmk_sched_fencing.c)
419
420G_GNUC_INTERNAL
421void pcmk__order_vs_fence(pcmk_action_t *stonith_op,
423
424G_GNUC_INTERNAL
427 enum pcmk__action_relation_flags order);
428
429G_GNUC_INTERNAL
431
432G_GNUC_INTERNAL
433bool pcmk__node_unfenced(const pcmk_node_t *node);
434
435G_GNUC_INTERNAL
436void pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data);
437
438
439// Injected scheduler inputs (pcmk_sched_injections.c)
440
442 const pcmk_injections_t *injections);
443
444
445// Constraints of any type (pcmk_sched_constraints.c)
446
447G_GNUC_INTERNAL
449 const char *id);
450
451G_GNUC_INTERNAL
452xmlNode *pcmk__expand_tags_in_sets(xmlNode *xml_obj,
454
455G_GNUC_INTERNAL
457 const char *id, pcmk_resource_t **rsc,
458 pcmk_tag_t **tag);
459
460G_GNUC_INTERNAL
461bool pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr,
462 bool convert_rsc, const pcmk_scheduler_t *scheduler);
463
464G_GNUC_INTERNAL
466
467
468// Location constraints
469
470G_GNUC_INTERNAL
471void pcmk__unpack_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
472
473G_GNUC_INTERNAL
475 int node_score, const char *discover_mode,
476 pcmk_node_t *foo_node);
477
478G_GNUC_INTERNAL
480
481G_GNUC_INTERNAL
483
484
485// Colocation constraints (pcmk_sched_colocation.c)
486
492
509static inline const char *
510pcmk__colocation_node_attr(const pcmk_node_t *node, const char *attr,
511 const pcmk_resource_t *rsc)
512{
513 const pcmk_resource_t *top = pe__const_top_resource(rsc, false);
514 const bool force_host = pe__is_bundle_node(node)
515 && pe_rsc_is_bundled(rsc)
516 && (top == pe__bundled_resource(rsc));
517
518 return pe__node_attribute_calculated(node, attr, rsc,
519 pcmk__rsc_node_assigned, force_host);
520}
521
522G_GNUC_INTERNAL
524 *dependent,
525 const pcmk_resource_t
526 *primary,
528 *colocation,
529 bool preview);
530
531G_GNUC_INTERNAL
533 const pcmk_resource_t *primary,
534 const pcmk__colocation_t *colocation);
535
536G_GNUC_INTERNAL
538 const pcmk_resource_t *primary,
539 const pcmk__colocation_t *colocation);
540
541G_GNUC_INTERNAL
543 const pcmk_resource_t *target_rsc,
544 const char *log_id, GHashTable **nodes,
545 const pcmk__colocation_t *colocation,
546 float factor, uint32_t flags);
547
548G_GNUC_INTERNAL
549void pcmk__add_dependent_scores(gpointer data, gpointer user_data);
550
551G_GNUC_INTERNAL
553 const pcmk_resource_t *primary,
554 const pcmk__colocation_t *colocation,
555 const GList *primary_nodes,
556 bool merge_scores);
557
558G_GNUC_INTERNAL
559void pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
560
561G_GNUC_INTERNAL
562void pcmk__add_this_with(GList **list, const pcmk__colocation_t *colocation,
563 const pcmk_resource_t *rsc);
564
565G_GNUC_INTERNAL
566void pcmk__add_this_with_list(GList **list, GList *addition,
567 const pcmk_resource_t *rsc);
568
569G_GNUC_INTERNAL
570void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation,
571 const pcmk_resource_t *rsc);
572
573G_GNUC_INTERNAL
574void pcmk__add_with_this_list(GList **list, GList *addition,
575 const pcmk_resource_t *rsc);
576
577G_GNUC_INTERNAL
579
580G_GNUC_INTERNAL
582
583G_GNUC_INTERNAL
584void pcmk__new_colocation(const char *id, const char *node_attr, int score,
585 pcmk_resource_t *dependent, pcmk_resource_t *primary,
586 const char *dependent_role, const char *primary_role,
587 uint32_t flags);
588
589G_GNUC_INTERNAL
591
604static inline bool
605pcmk__colocation_has_influence(const pcmk__colocation_t *colocation,
606 const pcmk_resource_t *rsc)
607{
608 if (rsc == NULL) {
609 rsc = colocation->primary;
610 }
611
612 /* A bundle replica colocates its remote connection with its container,
613 * using a finite score so that the container can run on Pacemaker Remote
614 * nodes.
615 *
616 * Moving a connection is lightweight and does not interrupt the service,
617 * while moving a container is heavyweight and does interrupt the service,
618 * so don't move a clean, active container based solely on the preferences
619 * of its connection.
620 *
621 * This also avoids problematic scenarios where two containers want to
622 * perpetually swap places.
623 */
624 if (pcmk_is_set(colocation->dependent->flags,
627 && pcmk__list_of_1(rsc->running_on)) {
628 return false;
629 }
630
631 /* The dependent in a colocation influences the primary's location
632 * if the influence option is true or the primary is not yet active.
633 */
634 return pcmk_is_set(colocation->flags, pcmk__coloc_influence)
635 || (rsc->running_on == NULL);
636}
637
638
639// Ordering constraints (pcmk_sched_ordering.c)
640
641G_GNUC_INTERNAL
642void pcmk__new_ordering(pcmk_resource_t *first_rsc, char *first_task,
643 pcmk_action_t *first_action, pcmk_resource_t *then_rsc,
644 char *then_task, pcmk_action_t *then_action,
645 uint32_t flags, pcmk_scheduler_t *sched);
646
647G_GNUC_INTERNAL
648void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
649
650G_GNUC_INTERNAL
652
653G_GNUC_INTERNAL
655 pcmk_action_t *shutdown_op);
656
657G_GNUC_INTERNAL
659
660G_GNUC_INTERNAL
661void pcmk__order_after_each(pcmk_action_t *after, GList *list);
662
663
674#define pcmk__order_resource_actions(first_rsc, first_task, \
675 then_rsc, then_task, flags) \
676 pcmk__new_ordering((first_rsc), \
677 pcmk__op_key((first_rsc)->id, (first_task), 0), \
678 NULL, \
679 (then_rsc), \
680 pcmk__op_key((then_rsc)->id, (then_task), 0), \
681 NULL, (flags), (first_rsc)->cluster)
682
683#define pcmk__order_starts(rsc1, rsc2, flags) \
684 pcmk__order_resource_actions((rsc1), PCMK_ACTION_START, \
685 (rsc2), PCMK_ACTION_START, (flags))
686
687#define pcmk__order_stops(rsc1, rsc2, flags) \
688 pcmk__order_resource_actions((rsc1), PCMK_ACTION_STOP, \
689 (rsc2), PCMK_ACTION_STOP, (flags))
690
691
692// Ticket constraints (pcmk_sched_tickets.c)
693
694G_GNUC_INTERNAL
695void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
696
697
698// Promotable clone resources (pcmk_sched_promotable.c)
699
700G_GNUC_INTERNAL
702
703G_GNUC_INTERNAL
705
706G_GNUC_INTERNAL
708
709G_GNUC_INTERNAL
711
712G_GNUC_INTERNAL
714
715G_GNUC_INTERNAL
717
718G_GNUC_INTERNAL
720 pcmk_resource_t *dependent,
722 *colocation);
723
724G_GNUC_INTERNAL
726 pcmk_resource_t *dependent,
728 *colocation);
729
730
731// Pacemaker Remote nodes (pcmk_sched_remote.c)
732
733G_GNUC_INTERNAL
735
736G_GNUC_INTERNAL
738
739G_GNUC_INTERNAL
741 const pcmk_node_t *node);
742
743G_GNUC_INTERNAL
745
746G_GNUC_INTERNAL
747void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params);
748
749G_GNUC_INTERNAL
750void pcmk__add_bundle_meta_to_xml(xmlNode *args_xml,
751 const pcmk_action_t *action);
752
753
754// Primitives (pcmk_sched_primitive.c)
755
756G_GNUC_INTERNAL
758 const pcmk_node_t *prefer,
759 bool stop_if_fail);
760
761G_GNUC_INTERNAL
763
764G_GNUC_INTERNAL
766
767G_GNUC_INTERNAL
769 const pcmk_node_t *node);
770
771G_GNUC_INTERNAL
773 const pcmk_resource_t *primary,
774 const pcmk__colocation_t *colocation,
775 bool for_dependent);
776
777G_GNUC_INTERNAL
779 const pcmk_resource_t *orig_rsc,
780 GList **list);
781
782G_GNUC_INTERNAL
784 const pcmk_resource_t *orig_rsc,
785 GList **list);
786
787G_GNUC_INTERNAL
789 bool optional);
790
791G_GNUC_INTERNAL
792void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
793
794G_GNUC_INTERNAL
796 const pcmk_resource_t *orig_rsc,
797 GList *all_rscs, GHashTable *utilization);
798
799G_GNUC_INTERNAL
801
802
803// Groups (pcmk_sched_group.c)
804
805G_GNUC_INTERNAL
807 bool stop_if_fail);
808
809G_GNUC_INTERNAL
811
812G_GNUC_INTERNAL
814
815G_GNUC_INTERNAL
817 const pcmk_resource_t *primary,
818 const pcmk__colocation_t *colocation,
819 bool for_dependent);
820
821G_GNUC_INTERNAL
823 const pcmk_resource_t *orig_rsc,
824 GList **list);
825
826G_GNUC_INTERNAL
828 const pcmk_resource_t *orig_rsc,
829 GList **list);
830
831G_GNUC_INTERNAL
833 const pcmk_resource_t *target_rsc,
834 const char *log_id,
835 GHashTable **nodes,
836 const pcmk__colocation_t *colocation,
837 float factor, uint32_t flags);
838
839G_GNUC_INTERNAL
841
842G_GNUC_INTERNAL
844 const pcmk_node_t *node);
845
846G_GNUC_INTERNAL
848 pcmk_action_t *then,
849 const pcmk_node_t *node,
850 uint32_t flags, uint32_t filter,
851 uint32_t type,
853
854G_GNUC_INTERNAL
856 const pcmk_resource_t *orig_rsc,
857 GList *colocated_rscs);
858
859G_GNUC_INTERNAL
861 const pcmk_resource_t *orig_rsc,
862 GList *all_rscs, GHashTable *utilization);
863
864G_GNUC_INTERNAL
866
867
868// Clones (pcmk_sched_clone.c)
869
870G_GNUC_INTERNAL
872 bool stop_if_fail);
873
874G_GNUC_INTERNAL
876
877G_GNUC_INTERNAL
879
880G_GNUC_INTERNAL
882
883G_GNUC_INTERNAL
885 const pcmk_resource_t *primary,
886 const pcmk__colocation_t *colocation,
887 bool for_dependent);
888
889G_GNUC_INTERNAL
891 const pcmk_resource_t *orig_rsc,
892 GList **list);
893
894G_GNUC_INTERNAL
896 const pcmk_resource_t *orig_rsc,
897 GList **list);
898
899G_GNUC_INTERNAL
901 pe__location_t *constraint);
902
903G_GNUC_INTERNAL
905 const pcmk_node_t *node);
906
907G_GNUC_INTERNAL
909
910G_GNUC_INTERNAL
911void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
912
913G_GNUC_INTERNAL
915 const pcmk_resource_t *orig_rsc,
916 GList *all_rscs, GHashTable *utilization);
917
918G_GNUC_INTERNAL
920
921// Bundles (pcmk_sched_bundle.c)
922
923G_GNUC_INTERNAL
925 const pcmk_node_t *prefer, bool stop_if_fail);
926
927G_GNUC_INTERNAL
929
930G_GNUC_INTERNAL
932
933G_GNUC_INTERNAL
935
936G_GNUC_INTERNAL
938 const pcmk_resource_t *primary,
939 const pcmk__colocation_t *colocation,
940 bool for_dependent);
941
942G_GNUC_INTERNAL
944 const pcmk_resource_t *orig_rsc,
945 GList **list);
946
947G_GNUC_INTERNAL
949 const pcmk_resource_t *orig_rsc,
950 GList **list);
951
952G_GNUC_INTERNAL
954 pe__location_t *constraint);
955
956G_GNUC_INTERNAL
958 const pcmk_node_t *node);
959
960G_GNUC_INTERNAL
962
963G_GNUC_INTERNAL
965
966G_GNUC_INTERNAL
968 const pcmk_resource_t *orig_rsc,
969 GList *all_rscs, GHashTable *utilization);
970
971G_GNUC_INTERNAL
973
974
975// Clone instances or bundle replica containers (pcmk_sched_instances.c)
976
977G_GNUC_INTERNAL
978void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances,
979 int max_total, int max_per_node);
980
981G_GNUC_INTERNAL
982void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances);
983
984G_GNUC_INTERNAL
985bool pcmk__instance_matches(const pcmk_resource_t *instance,
986 const pcmk_node_t *node, enum rsc_role_e role,
987 bool current);
988
989G_GNUC_INTERNAL
991 const pcmk_resource_t *rsc,
992 enum rsc_role_e role,
993 bool current);
994
995G_GNUC_INTERNAL
997 pcmk_action_t *then,
998 const pcmk_node_t *node,
999 uint32_t flags, uint32_t filter,
1000 uint32_t type,
1002
1003G_GNUC_INTERNAL
1005 const GList *instances,
1006 const pcmk_node_t *node);
1007
1008
1009// Injections (pcmk_injections.c)
1010
1011G_GNUC_INTERNAL
1012xmlNode *pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid);
1013
1014G_GNUC_INTERNAL
1015xmlNode *pcmk__inject_node_state_change(cib_t *cib_conn, const char *node,
1016 bool up);
1017
1018G_GNUC_INTERNAL
1019xmlNode *pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node,
1020 const char *resource,
1021 const char *lrm_name,
1022 const char *rclass,
1023 const char *rtype,
1024 const char *rprovider);
1025
1026G_GNUC_INTERNAL
1027void pcmk__inject_failcount(pcmk__output_t *out, xmlNode *cib_node,
1028 const char *resource, const char *task,
1029 guint interval_ms, int rc);
1030
1031G_GNUC_INTERNAL
1032xmlNode *pcmk__inject_action_result(xmlNode *cib_resource,
1033 lrmd_event_data_t *op, int target_rc);
1034
1035
1036// Nodes (pcmk_sched_nodes.c)
1037
1038G_GNUC_INTERNAL
1039bool pcmk__node_available(const pcmk_node_t *node, bool consider_score,
1040 bool consider_guest);
1041
1042G_GNUC_INTERNAL
1043bool pcmk__any_node_available(GHashTable *nodes);
1044
1045G_GNUC_INTERNAL
1046GHashTable *pcmk__copy_node_table(GHashTable *nodes);
1047
1048G_GNUC_INTERNAL
1049void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy);
1050
1051G_GNUC_INTERNAL
1052void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup);
1053
1054G_GNUC_INTERNAL
1055GList *pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node);
1056
1057G_GNUC_INTERNAL
1059
1060G_GNUC_INTERNAL
1062 const pcmk_node_t *node);
1063
1064
1065// Functions applying to more than one variant (pcmk_sched_resource.c)
1066
1067G_GNUC_INTERNAL
1069
1070G_GNUC_INTERNAL
1072 const xmlNode *rsc_entry, bool active_on_node);
1073
1074G_GNUC_INTERNAL
1075GList *pcmk__rscs_matching_id(const char *id,
1077
1078G_GNUC_INTERNAL
1080 const pcmk_resource_t *orig_rsc,
1081 GList *colocated_rscs);
1082
1083G_GNUC_INTERNAL
1084void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
1085
1086G_GNUC_INTERNAL
1088
1089G_GNUC_INTERNAL
1090bool pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force,
1091 bool stop_if_fail);
1092
1093G_GNUC_INTERNAL
1095
1096G_GNUC_INTERNAL
1098 pcmk_resource_t **failed);
1099
1100G_GNUC_INTERNAL
1102
1103G_GNUC_INTERNAL
1104gint pcmk__cmp_instance(gconstpointer a, gconstpointer b);
1105
1106G_GNUC_INTERNAL
1107gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b);
1108
1109
1110// Functions related to probes (pcmk_sched_probes.c)
1111
1112G_GNUC_INTERNAL
1114
1115G_GNUC_INTERNAL
1117
1118G_GNUC_INTERNAL
1119bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node);
1120
1121G_GNUC_INTERNAL
1123
1124
1125// Functions related to live migration (pcmk_sched_migration.c)
1126
1128 const pcmk_node_t *current);
1129
1130void pcmk__abort_dangling_migration(void *data, void *user_data);
1131
1133 const pcmk_node_t *current);
1134
1136
1137
1138// Functions related to node utilization (pcmk_sched_utilization.c)
1139
1140G_GNUC_INTERNAL
1142 const pcmk_node_t *node2);
1143
1144G_GNUC_INTERNAL
1145void pcmk__consume_node_capacity(GHashTable *current_utilization,
1146 const pcmk_resource_t *rsc);
1147
1148G_GNUC_INTERNAL
1149void pcmk__release_node_capacity(GHashTable *current_utilization,
1150 const pcmk_resource_t *rsc);
1151
1152G_GNUC_INTERNAL
1154
1155G_GNUC_INTERNAL
1157 const GList *allowed_nodes);
1158
1159G_GNUC_INTERNAL
1161
1162#endif // PCMK__LIBPACEMAKER_PRIVATE__H
pcmk__action_relation_flags
const char * name
Definition cib.c:26
uint64_t flags
Definition remote.c:3
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
Definition util.h:99
enum crm_ais_msg_types type
Definition cpg.c:3
char data[0]
Definition cpg.c:10
@ pcmk__rsc_node_assigned
Where resource is assigned.
G_GNUC_INTERNAL void pcmk__apply_coloc_to_priority(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation)
G_GNUC_INTERNAL void pcmk__clone_apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL void pcmk__consume_node_capacity(GHashTable *current_utilization, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL enum pcmk__coloc_affects pcmk__colocation_affects(const pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool preview)
G_GNUC_INTERNAL void pcmk__add_this_with_list(GList **list, GList *addition, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__unpack_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__valid_resource_or_tag(const pcmk_scheduler_t *scheduler, const char *id, pcmk_resource_t **rsc, pcmk_tag_t **tag)
G_GNUC_INTERNAL void pcmk__primitive_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
G_GNUC_INTERNAL void pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
void pcmk__abort_dangling_migration(void *data, void *user_data)
G_GNUC_INTERNAL void pcmk__bundle_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__primitive_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__order_vs_fence(pcmk_action_t *stonith_op, pcmk_scheduler_t *scheduler)
void pcmk__create_migration_actions(pcmk_resource_t *rsc, const pcmk_node_t *current)
void pcmk__order_migration_equivalents(pe__ordering_t *order)
G_GNUC_INTERNAL bool pcmk__clone_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__create_recurring_actions(pcmk_resource_t *rsc)
pcmk__coloc_select
@ pcmk__coloc_select_active
@ pcmk__coloc_select_this_with
@ pcmk__coloc_select_nonnegative
@ pcmk__coloc_select_default
G_GNUC_INTERNAL GList * pcmk__group_colocated_resources(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *colocated_rscs)
G_GNUC_INTERNAL void pcmk__primitive_apply_coloc_score(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
G_GNUC_INTERNAL void pcmk__block_colocation_dependents(pcmk_action_t *action)
G_GNUC_INTERNAL uint32_t pcmk__group_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__group_with_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__require_promotion_tickets(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__schedule_cancel(pcmk_resource_t *rsc, const char *call_id, const char *task, guint interval_ms, const pcmk_node_t *node, const char *reason)
G_GNUC_INTERNAL void pcmk__primitive_with_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__new_colocation(const char *id, const char *node_attr, int score, pcmk_resource_t *dependent, pcmk_resource_t *primary, const char *dependent_role, const char *primary_role, uint32_t flags)
G_GNUC_INTERNAL void pcmk__unassign_resource(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__colocation_intersect_nodes(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, const GList *primary_nodes, bool merge_scores)
G_GNUC_INTERNAL void pcmk__output_bundle_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__with_primitive_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__new_ordering(pcmk_resource_t *first_rsc, char *first_task, pcmk_action_t *first_action, pcmk_resource_t *then_rsc, char *then_task, pcmk_action_t *then_action, uint32_t flags, pcmk_scheduler_t *sched)
G_GNUC_INTERNAL void pcmk__primitive_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__any_node_available(GHashTable *nodes)
G_GNUC_INTERNAL pcmk_resource_t * pcmk__find_constraint_resource(GList *rsc_list, const char *id)
G_GNUC_INTERNAL void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL pcmk_node_t * pcmk__bundle_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, bool stop_if_fail)
G_GNUC_INTERNAL void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, int max_total, int max_per_node)
G_GNUC_INTERNAL void pcmk__clone_internal_constraints(pcmk_resource_t *rsc)
G_GNUC_INTERNAL uint32_t pcmk__collective_action_flags(pcmk_action_t *action, const GList *instances, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL xmlNode * pcmk__expand_tags_in_sets(xmlNode *xml_obj, const pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__apply_coloc_to_scores(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation)
G_GNUC_INTERNAL uint32_t pcmk__primitive_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__disable_invalid_orderings(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__is_failed_remote_node(const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__bundle_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__update_action_for_orderings(pcmk_action_t *action, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr, bool convert_rsc, const pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params)
G_GNUC_INTERNAL void pcmk__bundle_with_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__group_apply_location(pcmk_resource_t *rsc, pe__location_t *location)
G_GNUC_INTERNAL gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b)
G_GNUC_INTERNAL uint32_t pcmk__update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, const pcmk_node_t *node, uint32_t flags, uint32_t filter, uint32_t type, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL pcmk_action_t * pcmk__new_cancel_action(pcmk_resource_t *rsc, const char *name, guint interval_ms, const pcmk_node_t *node)
G_GNUC_INTERNAL uint32_t pcmk__group_update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, const pcmk_node_t *node, uint32_t flags, uint32_t filter, uint32_t type, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__log_action(const char *pre_text, const pcmk_action_t *action, bool details)
G_GNUC_INTERNAL pcmk_node_t * pcmk__group_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, bool stop_if_fail)
G_GNUC_INTERNAL pcmk_node_t * pcmk__connection_host_for_action(const pcmk_action_t *action)
G_GNUC_INTERNAL void pcmk__clone_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__graph_has_loop(const pcmk_action_t *init_action, const pcmk_action_t *action, pcmk__related_action_t *input)
pcmk__coloc_affects
@ pcmk__coloc_affects_nothing
@ pcmk__coloc_affects_location
@ pcmk__coloc_affects_role
G_GNUC_INTERNAL void pcmk__group_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
G_GNUC_INTERNAL void pcmk__clone_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
pcmk__coloc_flags
@ pcmk__coloc_none
@ pcmk__coloc_influence
@ pcmk__coloc_explicit
G_GNUC_INTERNAL bool pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force, bool stop_if_fail)
G_GNUC_INTERNAL void pcmk__create_promotable_actions(pcmk_resource_t *clone)
G_GNUC_INTERNAL pcmk_resource_t * pcmk__find_compatible_instance(const pcmk_resource_t *match_rsc, const pcmk_resource_t *rsc, enum rsc_role_e role, bool current)
G_GNUC_INTERNAL uint32_t pcmk__clone_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__order_vs_unfence(const pcmk_resource_t *rsc, pcmk_node_t *node, pcmk_action_t *action, enum pcmk__action_relation_flags order)
G_GNUC_INTERNAL GList * pcmk__with_this_colocations(const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__bundle_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
G_GNUC_INTERNAL GList * pcmk__rscs_matching_id(const char *id, const pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL pcmk_action_t * pcmk__new_shutdown_action(pcmk_node_t *node)
G_GNUC_INTERNAL pcmk_node_t * pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, bool stop_if_fail)
G_GNUC_INTERNAL void pcmk__with_clone_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__bundle_apply_coloc_score(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
G_GNUC_INTERNAL void pcmk__add_this_with(GList **list, const pcmk__colocation_t *colocation, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__show_node_capacities(const char *desc, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL gint pcmk__cmp_instance(gconstpointer a, gconstpointer b)
G_GNUC_INTERNAL void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL uint32_t pcmk__instance_update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, const pcmk_node_t *node, uint32_t flags, uint32_t filter, uint32_t type, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__schedule_probes(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__order_stops_before_shutdown(pcmk_node_t *node, pcmk_action_t *shutdown_op)
G_GNUC_INTERNAL void pcmk__clone_with_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL bool pcmk__action_is_recurring(const pcmk_action_t *action)
G_GNUC_INTERNAL void pcmk__set_assignment_methods(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__handle_rsc_config_changes(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__bundle_apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL void pcmk__order_promotable_instances(pcmk_resource_t *clone)
G_GNUC_INTERNAL GList * pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node)
G_GNUC_INTERNAL void pcmk__add_with_this_list(GList **list, GList *addition, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__action_locks_rsc_to_node(const pcmk_action_t *action)
G_GNUC_INTERNAL void pcmk__group_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__fence_guest(pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data)
G_GNUC_INTERNAL void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__rsc_corresponds_to_guest(const pcmk_resource_t *rsc, const pcmk_node_t *node)
G_GNUC_INTERNAL xmlNode * pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid)
G_GNUC_INTERNAL pcmk_node_t * pcmk__clone_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, bool stop_if_fail)
G_GNUC_INTERNAL void pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node, bool optional)
G_GNUC_INTERNAL void pcmk__clone_apply_coloc_score(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
G_GNUC_INTERNAL bool pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node, pcmk_resource_t **failed)
G_GNUC_INTERNAL pe__location_t * pcmk__new_location(const char *id, pcmk_resource_t *rsc, int node_score, const char *discover_mode, pcmk_node_t *foo_node)
G_GNUC_INTERNAL void pcmk__apply_node_health(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__create_utilization_constraints(pcmk_resource_t *rsc, const GList *allowed_nodes)
G_GNUC_INTERNAL void pcmk__clone_add_actions_to_graph(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__sort_resources(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__apply_orderings(pcmk_scheduler_t *sched)
G_GNUC_INTERNAL const pcmk_node_t * pcmk__ban_insufficient_capacity(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__bundle_internal_constraints(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__bundle_add_actions_to_graph(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup)
G_GNUC_INTERNAL void pcmk__add_bundle_meta_to_xml(xmlNode *args_xml, const pcmk_action_t *action)
Add special bundle meta-attributes to XML.
G_GNUC_INTERNAL void pcmk__primitive_internal_constraints(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__inject_failcount(pcmk__output_t *out, xmlNode *cib_node, const char *resource, const char *task, guint interval_ms, int rc)
G_GNUC_INTERNAL void pcmk__add_dependent_scores(gpointer data, gpointer user_data)
G_GNUC_INTERNAL void pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, const pcmk_resource_t *target_rsc, const char *log_id, GHashTable **nodes, const pcmk__colocation_t *colocation, float factor, uint32_t flags)
G_GNUC_INTERNAL void pcmk__with_bundle_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__deduplicate_action_inputs(pcmk_action_t *action)
G_GNUC_INTERNAL GList * pcmk__this_with_colocations(const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL void pcmk__promotable_restart_ordering(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__instance_matches(const pcmk_resource_t *instance, const pcmk_node_t *node, enum rsc_role_e role, bool current)
G_GNUC_INTERNAL void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy)
G_GNUC_INTERNAL void pcmk__group_internal_constraints(pcmk_resource_t *rsc)
G_GNUC_INTERNAL GList * pcmk__colocated_resources(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *colocated_rscs)
G_GNUC_INTERNAL xmlNode * pcmk__inject_node_state_change(cib_t *cib_conn, const char *node, bool up)
G_GNUC_INTERNAL int pcmk__compare_node_capacities(const pcmk_node_t *node1, const pcmk_node_t *node2)
G_GNUC_INTERNAL void pcmk__order_probes(pcmk_scheduler_t *scheduler)
@ pcmk__updated_none
@ pcmk__updated_first
@ pcmk__updated_then
G_GNUC_INTERNAL void pcmk__with_group_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL bool pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, const xmlNode *xml_op)
G_GNUC_INTERNAL void pcmk__reschedule_recurring(pcmk_resource_t *rsc, const char *task, guint interval_ms, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__clone_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__update_promotable_dependent_priority(const pcmk_resource_t *primary, pcmk_resource_t *dependent, const pcmk__colocation_t *colocation)
G_GNUC_INTERNAL void pcmk__set_instance_roles(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__order_after_each(pcmk_action_t *after, GList *list)
G_GNUC_INTERNAL void pcmk__group_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__rsc_agent_changed(pcmk_resource_t *rsc, pcmk_node_t *node, const xmlNode *rsc_entry, bool active_on_node)
G_GNUC_INTERNAL void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances)
G_GNUC_INTERNAL void pcmk__group_apply_coloc_score(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
void pcmk__inject_scheduler_input(pcmk_scheduler_t *scheduler, cib_t *cib, const pcmk_injections_t *injections)
G_GNUC_INTERNAL void pcmk__add_promotion_scores(pcmk_resource_t *rsc)
G_GNUC_INTERNAL pcmk_node_t * pcmk__top_allowed_node(const pcmk_resource_t *rsc, const pcmk_node_t *node)
G_GNUC_INTERNAL bool pcmk__bundle_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL xmlNode * pcmk__inject_action_result(xmlNode *cib_resource, lrmd_event_data_t *op, int target_rc)
bool pcmk__rsc_can_migrate(const pcmk_resource_t *rsc, const pcmk_node_t *current)
G_GNUC_INTERNAL void pcmk__create_graph(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__node_unfenced(const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__release_node_capacity(GHashTable *current_utilization, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__apply_locations(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__create_internal_constraints(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__node_available(const pcmk_node_t *node, bool consider_score, bool consider_guest)
G_GNUC_INTERNAL void pcmk__add_rsc_actions_to_graph(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__output_actions(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__output_resource_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL xmlNode * pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, const char *resource, const char *lrm_name, const char *rclass, const char *rtype, const char *rprovider)
G_GNUC_INTERNAL GHashTable * pcmk__copy_node_table(GHashTable *nodes)
G_GNUC_INTERNAL bool pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__group_add_colocated_node_scores(pcmk_resource_t *source_rsc, const pcmk_resource_t *target_rsc, const char *log_id, GHashTable **nodes, const pcmk__colocation_t *colocation, float factor, uint32_t flags)
G_GNUC_INTERNAL void pcmk__update_dependent_with_promotable(const pcmk_resource_t *primary, pcmk_resource_t *dependent, const pcmk__colocation_t *colocation)
Update dependent for a colocation with a promotable clone.
G_GNUC_INTERNAL uint32_t pcmk__bundle_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
Resource agent executor events.
pcmk_scheduler_t * scheduler
xmlNode * input
const char * action
Definition pcmk_fence.c:30
pcmk_node_t node2
pcmk_node_t node1
const char * pe__node_attribute_calculated(const pcmk_node_t *node, const char *name, const pcmk_resource_t *rsc, enum pcmk__rsc_node node_type, bool force_host)
Definition common.c:546
const pcmk_resource_t * pe__const_top_resource(const pcmk_resource_t *rsc, bool include_bundle)
Definition complex.c:962
pcmk_resource_t * pe__bundled_resource(const pcmk_resource_t *rsc)
Definition bundle.c:113
bool pe__is_bundle_node(const pcmk_node_t *node)
Definition remote.c:47
@ pcmk_rsc_remote_nesting_allowed
Whether resource is a remote connection allowed to run on a remote node.
Definition resources.h:145
@ pcmk_rsc_failed
Whether resource is considered failed.
Definition resources.h:151
rsc_role_e
Definition roles.h:27
Scheduler API.
pcmk_resource_t * primary
pcmk_resource_t * dependent
This structure contains everything that makes up a single output formatter.
Synthetic cluster events that can be injected into the cluster for running simulations.
Definition pacemaker.h:50
Implementation of pcmk_action_t.
Definition actions.h:390
Implementation of pcmk_node_t.
Definition nodes.h:130
Implementation of pcmk_resource_t.
Definition resources.h:399
GList * running_on
Nodes where resource may be active.
Definition resources.h:460
unsigned long long flags
Group of enum pcmk_rsc_flags.
Definition resources.h:429
Configuration tag object.
Definition tags.h:26
Implementation of pcmk_scheduler_t.
Definition scheduler.h:172
void(* create_actions)(pcmk_resource_t *rsc)
void(* apply_location)(pcmk_resource_t *rsc, pe__location_t *location)
void(* add_utilization)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
void(* add_actions_to_graph)(pcmk_resource_t *rsc)
void(* shutdown_lock)(pcmk_resource_t *rsc)
void(* this_with_colocations)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
void(* output_actions)(pcmk_resource_t *rsc)
uint32_t(* action_flags)(pcmk_action_t *action, const pcmk_node_t *node)
bool(* create_probe)(pcmk_resource_t *rsc, pcmk_node_t *node)
void(* with_this_colocations)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
void(* internal_constraints)(pcmk_resource_t *rsc)
void(* apply_coloc_score)(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
void(* add_graph_meta)(const pcmk_resource_t *rsc, xmlNode *xml)
void(* add_colocated_node_scores)(pcmk_resource_t *source_rsc, const pcmk_resource_t *target_rsc, const char *log_id, GHashTable **nodes, const pcmk__colocation_t *colocation, float factor, uint32_t flags)
uint32_t(* update_ordered_actions)(pcmk_action_t *first, pcmk_action_t *then, const pcmk_node_t *node, uint32_t flags, uint32_t filter, uint32_t type, pcmk_scheduler_t *scheduler)