pacemaker 2.1.8-2.1.8~rc4
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
libpacemaker_private.h
Go to the documentation of this file.
1/*
2 * Copyright 2021-2024 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> // pcmk__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
503static inline const char *
504pcmk__colocation_node_attr(const pcmk_node_t *node, const char *attr,
505 const pcmk_resource_t *rsc)
506{
507 const char *target = NULL;
508
509 /* A resource colocated with a bundle or its primitive can't run on the
510 * bundle node itself (where only the primitive, if any, can run). Instead,
511 * we treat it as a colocation with the bundle's containers, so always look
512 * up colocation node attributes on the container host.
513 */
514 if (pcmk__is_bundle_node(node) && pcmk__is_bundled(rsc)
515 && (pe__const_top_resource(rsc, false) == pe__bundled_resource(rsc))) {
517
518 } else if (rsc != NULL) {
519 target = g_hash_table_lookup(rsc->meta,
521 }
522
524}
525
526G_GNUC_INTERNAL
528 *dependent,
529 const pcmk_resource_t
530 *primary,
532 *colocation,
533 bool preview);
534
535G_GNUC_INTERNAL
537 const pcmk_resource_t *primary,
538 const pcmk__colocation_t *colocation);
539
540G_GNUC_INTERNAL
542 const pcmk_resource_t *primary,
543 const pcmk__colocation_t *colocation);
544
545G_GNUC_INTERNAL
547 const pcmk_resource_t *target_rsc,
548 const char *log_id, GHashTable **nodes,
549 const pcmk__colocation_t *colocation,
550 float factor, uint32_t flags);
551
552G_GNUC_INTERNAL
553void pcmk__add_dependent_scores(gpointer data, gpointer user_data);
554
555G_GNUC_INTERNAL
557 const pcmk_resource_t *primary,
558 const pcmk__colocation_t *colocation,
559 const GList *primary_nodes,
560 bool merge_scores);
561
562G_GNUC_INTERNAL
563void pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
564
565G_GNUC_INTERNAL
566void pcmk__add_this_with(GList **list, const pcmk__colocation_t *colocation,
567 const pcmk_resource_t *rsc);
568
569G_GNUC_INTERNAL
570void pcmk__add_this_with_list(GList **list, GList *addition,
571 const pcmk_resource_t *rsc);
572
573G_GNUC_INTERNAL
574void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation,
575 const pcmk_resource_t *rsc);
576
577G_GNUC_INTERNAL
578void pcmk__add_with_this_list(GList **list, GList *addition,
579 const pcmk_resource_t *rsc);
580
581G_GNUC_INTERNAL
583
584G_GNUC_INTERNAL
586
587G_GNUC_INTERNAL
588void pcmk__new_colocation(const char *id, const char *node_attr, int score,
589 pcmk_resource_t *dependent, pcmk_resource_t *primary,
590 const char *dependent_role, const char *primary_role,
591 uint32_t flags);
592
593G_GNUC_INTERNAL
595
608static inline bool
609pcmk__colocation_has_influence(const pcmk__colocation_t *colocation,
610 const pcmk_resource_t *rsc)
611{
612 if (rsc == NULL) {
613 rsc = colocation->primary;
614 }
615
616 /* A bundle replica colocates its remote connection with its container,
617 * using a finite score so that the container can run on Pacemaker Remote
618 * nodes.
619 *
620 * Moving a connection is lightweight and does not interrupt the service,
621 * while moving a container is heavyweight and does interrupt the service,
622 * so don't move a clean, active container based solely on the preferences
623 * of its connection.
624 *
625 * This also avoids problematic scenarios where two containers want to
626 * perpetually swap places.
627 */
628 if (pcmk_is_set(colocation->dependent->flags,
631 && pcmk__list_of_1(rsc->running_on)) {
632 return false;
633 }
634
635 /* The dependent in a colocation influences the primary's location
636 * if the PCMK_XA_INFLUENCE option is true or the primary is not yet active.
637 */
638 return pcmk_is_set(colocation->flags, pcmk__coloc_influence)
639 || (rsc->running_on == NULL);
640}
641
642
643// Ordering constraints (pcmk_sched_ordering.c)
644
645G_GNUC_INTERNAL
646void pcmk__new_ordering(pcmk_resource_t *first_rsc, char *first_task,
647 pcmk_action_t *first_action, pcmk_resource_t *then_rsc,
648 char *then_task, pcmk_action_t *then_action,
649 uint32_t flags, pcmk_scheduler_t *sched);
650
651G_GNUC_INTERNAL
652void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
653
654G_GNUC_INTERNAL
656
657G_GNUC_INTERNAL
659 pcmk_action_t *shutdown_op);
660
661G_GNUC_INTERNAL
663
664G_GNUC_INTERNAL
665void pcmk__order_after_each(pcmk_action_t *after, GList *list);
666
667
678#define pcmk__order_resource_actions(first_rsc, first_task, \
679 then_rsc, then_task, flags) \
680 pcmk__new_ordering((first_rsc), \
681 pcmk__op_key((first_rsc)->id, (first_task), 0), \
682 NULL, \
683 (then_rsc), \
684 pcmk__op_key((then_rsc)->id, (then_task), 0), \
685 NULL, (flags), (first_rsc)->cluster)
686
687#define pcmk__order_starts(rsc1, rsc2, flags) \
688 pcmk__order_resource_actions((rsc1), PCMK_ACTION_START, \
689 (rsc2), PCMK_ACTION_START, (flags))
690
691#define pcmk__order_stops(rsc1, rsc2, flags) \
692 pcmk__order_resource_actions((rsc1), PCMK_ACTION_STOP, \
693 (rsc2), PCMK_ACTION_STOP, (flags))
694
695
696// Ticket constraints (pcmk_sched_tickets.c)
697
698G_GNUC_INTERNAL
699void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
700
701
702// Promotable clone resources (pcmk_sched_promotable.c)
703
704G_GNUC_INTERNAL
706
707G_GNUC_INTERNAL
709
710G_GNUC_INTERNAL
712
713G_GNUC_INTERNAL
715
716G_GNUC_INTERNAL
718
719G_GNUC_INTERNAL
721
722G_GNUC_INTERNAL
724 pcmk_resource_t *dependent,
726 *colocation);
727
728G_GNUC_INTERNAL
730 pcmk_resource_t *dependent,
732 *colocation);
733
734
735// Pacemaker Remote nodes (pcmk_sched_remote.c)
736
737G_GNUC_INTERNAL
739
740G_GNUC_INTERNAL
742
743G_GNUC_INTERNAL
745 const pcmk_node_t *node);
746
747G_GNUC_INTERNAL
749
750G_GNUC_INTERNAL
751void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params);
752
753G_GNUC_INTERNAL
754void pcmk__add_guest_meta_to_xml(xmlNode *args_xml,
755 const pcmk_action_t *action);
756
757
758// Primitives (pcmk_sched_primitive.c)
759
760G_GNUC_INTERNAL
762 const pcmk_node_t *prefer,
763 bool stop_if_fail);
764
765G_GNUC_INTERNAL
767
768G_GNUC_INTERNAL
770
771G_GNUC_INTERNAL
773 const pcmk_node_t *node);
774
775G_GNUC_INTERNAL
777 const pcmk_resource_t *primary,
778 const pcmk__colocation_t *colocation,
779 bool for_dependent);
780
781G_GNUC_INTERNAL
783 const pcmk_resource_t *orig_rsc,
784 GList **list);
785
786G_GNUC_INTERNAL
788 const pcmk_resource_t *orig_rsc,
789 GList **list);
790
791G_GNUC_INTERNAL
793 bool optional);
794
795G_GNUC_INTERNAL
796void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
797
798G_GNUC_INTERNAL
800 const pcmk_resource_t *orig_rsc,
801 GList *all_rscs, GHashTable *utilization);
802
803G_GNUC_INTERNAL
805
806
807// Groups (pcmk_sched_group.c)
808
809G_GNUC_INTERNAL
811 bool stop_if_fail);
812
813G_GNUC_INTERNAL
815
816G_GNUC_INTERNAL
818
819G_GNUC_INTERNAL
821 const pcmk_resource_t *primary,
822 const pcmk__colocation_t *colocation,
823 bool for_dependent);
824
825G_GNUC_INTERNAL
827 const pcmk_resource_t *orig_rsc,
828 GList **list);
829
830G_GNUC_INTERNAL
832 const pcmk_resource_t *orig_rsc,
833 GList **list);
834
835G_GNUC_INTERNAL
837 const pcmk_resource_t *target_rsc,
838 const char *log_id,
839 GHashTable **nodes,
840 const pcmk__colocation_t *colocation,
841 float factor, uint32_t flags);
842
843G_GNUC_INTERNAL
845 pcmk__location_t *location);
846
847G_GNUC_INTERNAL
849 const pcmk_node_t *node);
850
851G_GNUC_INTERNAL
853 pcmk_action_t *then,
854 const pcmk_node_t *node,
855 uint32_t flags, uint32_t filter,
856 uint32_t type,
858
859G_GNUC_INTERNAL
861 const pcmk_resource_t *orig_rsc,
862 GList *colocated_rscs);
863
864G_GNUC_INTERNAL
866 const pcmk_resource_t *orig_rsc,
867 GList *all_rscs, GHashTable *utilization);
868
869G_GNUC_INTERNAL
871
872
873// Clones (pcmk_sched_clone.c)
874
875G_GNUC_INTERNAL
877 bool stop_if_fail);
878
879G_GNUC_INTERNAL
881
882G_GNUC_INTERNAL
884
885G_GNUC_INTERNAL
887
888G_GNUC_INTERNAL
890 const pcmk_resource_t *primary,
891 const pcmk__colocation_t *colocation,
892 bool for_dependent);
893
894G_GNUC_INTERNAL
896 const pcmk_resource_t *orig_rsc,
897 GList **list);
898
899G_GNUC_INTERNAL
901 const pcmk_resource_t *orig_rsc,
902 GList **list);
903
904G_GNUC_INTERNAL
906 pcmk__location_t *constraint);
907
908G_GNUC_INTERNAL
910 const pcmk_node_t *node);
911
912G_GNUC_INTERNAL
914
915G_GNUC_INTERNAL
916void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
917
918G_GNUC_INTERNAL
920 const pcmk_resource_t *orig_rsc,
921 GList *all_rscs, GHashTable *utilization);
922
923G_GNUC_INTERNAL
925
926// Bundles (pcmk_sched_bundle.c)
927
928G_GNUC_INTERNAL
930 const pcmk_node_t *prefer, bool stop_if_fail);
931
932G_GNUC_INTERNAL
934
935G_GNUC_INTERNAL
937
938G_GNUC_INTERNAL
940
941G_GNUC_INTERNAL
943 const pcmk_resource_t *primary,
944 const pcmk__colocation_t *colocation,
945 bool for_dependent);
946
947G_GNUC_INTERNAL
949 const pcmk_resource_t *orig_rsc,
950 GList **list);
951
952G_GNUC_INTERNAL
954 const pcmk_resource_t *orig_rsc,
955 GList **list);
956
957G_GNUC_INTERNAL
959 pcmk__location_t *constraint);
960
961G_GNUC_INTERNAL
963 const pcmk_node_t *node);
964
965G_GNUC_INTERNAL
967
968G_GNUC_INTERNAL
970
971G_GNUC_INTERNAL
973 const pcmk_resource_t *orig_rsc,
974 GList *all_rscs, GHashTable *utilization);
975
976G_GNUC_INTERNAL
978
979
980// Clone instances or bundle replica containers (pcmk_sched_instances.c)
981
982G_GNUC_INTERNAL
983void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances,
984 int max_total, int max_per_node);
985
986G_GNUC_INTERNAL
987void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances);
988
989G_GNUC_INTERNAL
990bool pcmk__instance_matches(const pcmk_resource_t *instance,
991 const pcmk_node_t *node, enum rsc_role_e role,
992 bool current);
993
994G_GNUC_INTERNAL
996 const pcmk_resource_t *rsc,
997 enum rsc_role_e role,
998 bool current);
999
1000G_GNUC_INTERNAL
1002 pcmk_action_t *then,
1003 const pcmk_node_t *node,
1004 uint32_t flags, uint32_t filter,
1005 uint32_t type,
1007
1008G_GNUC_INTERNAL
1010 const GList *instances,
1011 const pcmk_node_t *node);
1012
1013
1014// Injections (pcmk_injections.c)
1015
1016G_GNUC_INTERNAL
1017xmlNode *pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid);
1018
1019G_GNUC_INTERNAL
1020xmlNode *pcmk__inject_node_state_change(cib_t *cib_conn, const char *node,
1021 bool up);
1022
1023G_GNUC_INTERNAL
1024xmlNode *pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node,
1025 const char *resource,
1026 const char *lrm_name,
1027 const char *rclass,
1028 const char *rtype,
1029 const char *rprovider);
1030
1031G_GNUC_INTERNAL
1032void pcmk__inject_failcount(pcmk__output_t *out, cib_t *cib_conn,
1033 xmlNode *cib_node, const char *resource,
1034 const char *task, guint interval_ms, int rc);
1035
1036G_GNUC_INTERNAL
1037xmlNode *pcmk__inject_action_result(xmlNode *cib_resource,
1038 lrmd_event_data_t *op, int target_rc);
1039
1040
1041// Nodes (pcmk_sched_nodes.c)
1042
1043G_GNUC_INTERNAL
1044bool pcmk__node_available(const pcmk_node_t *node, bool consider_score,
1045 bool consider_guest);
1046
1047G_GNUC_INTERNAL
1048bool pcmk__any_node_available(GHashTable *nodes);
1049
1050G_GNUC_INTERNAL
1051GHashTable *pcmk__copy_node_table(GHashTable *nodes);
1052
1053G_GNUC_INTERNAL
1054void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy);
1055
1056G_GNUC_INTERNAL
1057void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup);
1058
1059G_GNUC_INTERNAL
1060GList *pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node);
1061
1062G_GNUC_INTERNAL
1064
1065G_GNUC_INTERNAL
1067 const pcmk_node_t *node);
1068
1069
1070// Functions applying to more than one variant (pcmk_sched_resource.c)
1071
1072G_GNUC_INTERNAL
1074
1075G_GNUC_INTERNAL
1077 const xmlNode *rsc_entry, bool active_on_node);
1078
1079G_GNUC_INTERNAL
1080GList *pcmk__rscs_matching_id(const char *id,
1082
1083G_GNUC_INTERNAL
1085 const pcmk_resource_t *orig_rsc,
1086 GList *colocated_rscs);
1087
1088G_GNUC_INTERNAL
1089void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
1090
1091G_GNUC_INTERNAL
1093
1094G_GNUC_INTERNAL
1095bool pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force,
1096 bool stop_if_fail);
1097
1098G_GNUC_INTERNAL
1100
1101G_GNUC_INTERNAL
1103 pcmk_resource_t **failed);
1104
1105G_GNUC_INTERNAL
1107
1108G_GNUC_INTERNAL
1109gint pcmk__cmp_instance(gconstpointer a, gconstpointer b);
1110
1111G_GNUC_INTERNAL
1112gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b);
1113
1114
1115// Functions related to probes (pcmk_sched_probes.c)
1116
1117G_GNUC_INTERNAL
1119
1120G_GNUC_INTERNAL
1122
1123G_GNUC_INTERNAL
1124bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node);
1125
1126G_GNUC_INTERNAL
1128
1129
1130// Functions related to live migration (pcmk_sched_migration.c)
1131
1133 const pcmk_node_t *current);
1134
1135void pcmk__abort_dangling_migration(void *data, void *user_data);
1136
1138 const pcmk_node_t *current);
1139
1141
1142
1143// Functions related to node utilization (pcmk_sched_utilization.c)
1144
1145G_GNUC_INTERNAL
1147 const pcmk_node_t *node2);
1148
1149G_GNUC_INTERNAL
1150void pcmk__consume_node_capacity(GHashTable *current_utilization,
1151 const pcmk_resource_t *rsc);
1152
1153G_GNUC_INTERNAL
1154void pcmk__release_node_capacity(GHashTable *current_utilization,
1155 const pcmk_resource_t *rsc);
1156
1157G_GNUC_INTERNAL
1159
1160G_GNUC_INTERNAL
1162 const GList *allowed_nodes);
1163
1164G_GNUC_INTERNAL
1166
1167
1168// Functions related to the scheduler (pcmk_scheduler.c)
1169
1170G_GNUC_INTERNAL
1171int pcmk__init_scheduler(pcmk__output_t *out, xmlNodePtr input, const crm_time_t *date,
1173
1174
1175// General setup functions (pcmk_setup.c)
1176
1177G_GNUC_INTERNAL
1179 pcmk_scheduler_t **scheduler, xmlNode **xml);
1180
1181#endif // PCMK__LIBPACEMAKER_PRIVATE__H
pcmk__action_relation_flags
const char * pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, enum pcmk__rsc_node node_type)
Definition attrs.c:118
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:100
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.
struct crm_time_s crm_time_t
Definition iso8601.h:32
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__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)
G_GNUC_INTERNAL bool pcmk__clone_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL pcmk__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__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__bundle_apply_location(pcmk_resource_t *rsc, pcmk__location_t *constraint)
G_GNUC_INTERNAL int pcmk__setup_output_cib_sched(pcmk__output_t **out, cib_t **cib, pcmk_scheduler_t **scheduler, xmlNode **xml)
Definition pcmk_setup.c:41
G_GNUC_INTERNAL xmlNode * pcmk__expand_tags_in_sets(xmlNode *xml_obj, const pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL int pcmk__init_scheduler(pcmk__output_t *out, xmlNodePtr input, const crm_time_t *date, 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 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 void pcmk__inject_failcount(pcmk__output_t *out, cib_t *cib_conn, xmlNode *cib_node, const char *resource, const char *task, guint interval_ms, int rc)
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__clone_apply_location(pcmk_resource_t *rsc, pcmk__location_t *constraint)
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__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)
void pcmk__order_migration_equivalents(pcmk__action_relation_t *order)
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__primitive_internal_constraints(pcmk_resource_t *rsc)
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__group_apply_location(pcmk_resource_t *rsc, pcmk__location_t *location)
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__apply_location(pcmk_resource_t *rsc, pcmk__location_t *constraint)
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 void pcmk__add_guest_meta_to_xml(xmlNode *args_xml, const pcmk_action_t *action)
Add special guest node meta-attributes to XML.
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
#define PCMK_META_CONTAINER_ATTRIBUTE_TARGET
Definition options.h:85
#define PCMK_VALUE_HOST
Definition options.h:160
const char * action
Definition pcmk_fence.c:30
const char * target
Definition pcmk_fence.c:29
pcmk_node_t node2
pcmk_node_t node1
const pcmk_resource_t * pe__const_top_resource(const pcmk_resource_t *rsc, bool include_bundle)
Definition complex.c:1032
pcmk_resource_t * pe__bundled_resource(const pcmk_resource_t *rsc)
Definition bundle.c:111
@ pcmk_rsc_remote_nesting_allowed
Definition resources.h:127
@ pcmk_rsc_failed
Definition resources.h:133
rsc_role_e
Definition roles.h:34
Scheduler API.
pcmk_resource_t * primary
pcmk_resource_t * dependent
Location constraint object.
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
GList * running_on
Definition resources.h:456
GHashTable * meta
Definition resources.h:467
unsigned long long flags
Definition resources.h:428
void(* create_actions)(pcmk_resource_t *rsc)
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)
void(* apply_location)(pcmk_resource_t *rsc, pcmk__location_t *location)