pacemaker 2.1.8-2.1.8
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
136 const pcmk_resource_t *primary,
137 const pcmk__colocation_t *colocation,
138 bool for_dependent);
139
157 GList *(*colocated_resources)(const pcmk_resource_t *rsc,
158 const pcmk_resource_t *orig_rsc,
159 GList *colocated_rscs);
160
179 const pcmk_resource_t *orig_rsc,
180 GList **list);
181
201 const pcmk_resource_t *orig_rsc,
202 GList **list);
203
234 const pcmk_resource_t *target_rsc,
235 const char *log_id, GHashTable **nodes,
236 const pcmk__colocation_t *colocation,
237 float factor, uint32_t flags);
238
247
260 uint32_t (*action_flags)(pcmk_action_t *action, const pcmk_node_t *node);
261
286 pcmk_action_t *then,
287 const pcmk_node_t *node, uint32_t flags,
288 uint32_t filter, uint32_t type,
290
298
306
317 void (*add_graph_meta)(const pcmk_resource_t *rsc, xmlNode *xml);
318
335 const pcmk_resource_t *orig_rsc, GList *all_rscs,
336 GHashTable *utilization);
337
345};
346
347// Actions (pcmk_sched_actions.c)
348
349G_GNUC_INTERNAL
352
353G_GNUC_INTERNAL
355 const pcmk_node_t *node, uint32_t flags,
356 uint32_t filter, uint32_t type,
358
359G_GNUC_INTERNAL
360void pcmk__log_action(const char *pre_text, const pcmk_action_t *action,
361 bool details);
362
363G_GNUC_INTERNAL
365 guint interval_ms,
366 const pcmk_node_t *node);
367
368G_GNUC_INTERNAL
370
371G_GNUC_INTERNAL
373
374G_GNUC_INTERNAL
376
377G_GNUC_INTERNAL
379
380G_GNUC_INTERNAL
382 const xmlNode *xml_op);
383
384G_GNUC_INTERNAL
386
387
388// Recurring actions (pcmk_sched_recurring.c)
389
390G_GNUC_INTERNAL
392
393G_GNUC_INTERNAL
394void pcmk__schedule_cancel(pcmk_resource_t *rsc, const char *call_id,
395 const char *task, guint interval_ms,
396 const pcmk_node_t *node, const char *reason);
397
398G_GNUC_INTERNAL
399void pcmk__reschedule_recurring(pcmk_resource_t *rsc, const char *task,
400 guint interval_ms, pcmk_node_t *node);
401
402G_GNUC_INTERNAL
404
405
406// Producing transition graphs (pcmk_graph_producer.c)
407
408G_GNUC_INTERNAL
409bool pcmk__graph_has_loop(const pcmk_action_t *init_action,
410 const pcmk_action_t *action,
412
413G_GNUC_INTERNAL
415
416G_GNUC_INTERNAL
418
419
420// Fencing (pcmk_sched_fencing.c)
421
422G_GNUC_INTERNAL
423void pcmk__order_vs_fence(pcmk_action_t *stonith_op,
425
426G_GNUC_INTERNAL
429 enum pcmk__action_relation_flags order);
430
431G_GNUC_INTERNAL
433
434G_GNUC_INTERNAL
435bool pcmk__node_unfenced(const pcmk_node_t *node);
436
437G_GNUC_INTERNAL
438void pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data);
439
440
441// Injected scheduler inputs (pcmk_sched_injections.c)
442
444 const pcmk_injections_t *injections);
445
446
447// Constraints of any type (pcmk_sched_constraints.c)
448
449G_GNUC_INTERNAL
451 const char *id);
452
453G_GNUC_INTERNAL
454xmlNode *pcmk__expand_tags_in_sets(xmlNode *xml_obj,
456
457G_GNUC_INTERNAL
459 const char *id, pcmk_resource_t **rsc,
460 pcmk_tag_t **tag);
461
462G_GNUC_INTERNAL
463bool pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr,
464 bool convert_rsc, const pcmk_scheduler_t *scheduler);
465
466G_GNUC_INTERNAL
468
469
470// Location constraints
471
472G_GNUC_INTERNAL
473void pcmk__unpack_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
474
475G_GNUC_INTERNAL
477 int node_score, const char *discover_mode,
478 pcmk_node_t *foo_node);
479
480G_GNUC_INTERNAL
482
483G_GNUC_INTERNAL
485
486
487// Colocation constraints (pcmk_sched_colocation.c)
488
494
505static inline const char *
506pcmk__colocation_node_attr(const pcmk_node_t *node, const char *attr,
507 const pcmk_resource_t *rsc)
508{
509 const char *target = NULL;
510
511 /* A resource colocated with a bundle or its primitive can't run on the
512 * bundle node itself (where only the primitive, if any, can run). Instead,
513 * we treat it as a colocation with the bundle's containers, so always look
514 * up colocation node attributes on the container host.
515 */
516 if (pcmk__is_bundle_node(node) && pcmk__is_bundled(rsc)
517 && (pe__const_top_resource(rsc, false) == pe__bundled_resource(rsc))) {
519
520 } else if (rsc != NULL) {
521 target = g_hash_table_lookup(rsc->meta,
523 }
524
526}
527
528G_GNUC_INTERNAL
530 *dependent,
531 const pcmk_resource_t
532 *primary,
534 *colocation,
535 bool preview);
536
537G_GNUC_INTERNAL
539 const pcmk_resource_t *primary,
540 const pcmk__colocation_t *colocation);
541
542G_GNUC_INTERNAL
544 const pcmk_resource_t *primary,
545 const pcmk__colocation_t *colocation);
546
547G_GNUC_INTERNAL
549 const pcmk_resource_t *target_rsc,
550 const char *log_id, GHashTable **nodes,
551 const pcmk__colocation_t *colocation,
552 float factor, uint32_t flags);
553
554G_GNUC_INTERNAL
555void pcmk__add_dependent_scores(gpointer data, gpointer user_data);
556
557G_GNUC_INTERNAL
559 const pcmk_resource_t *primary,
560 const pcmk__colocation_t *colocation,
561 const GList *primary_nodes,
562 bool merge_scores);
563
564G_GNUC_INTERNAL
565void pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
566
567G_GNUC_INTERNAL
568void pcmk__add_this_with(GList **list, const pcmk__colocation_t *colocation,
569 const pcmk_resource_t *rsc);
570
571G_GNUC_INTERNAL
572void pcmk__add_this_with_list(GList **list, GList *addition,
573 const pcmk_resource_t *rsc);
574
575G_GNUC_INTERNAL
576void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation,
577 const pcmk_resource_t *rsc);
578
579G_GNUC_INTERNAL
580void pcmk__add_with_this_list(GList **list, GList *addition,
581 const pcmk_resource_t *rsc);
582
583G_GNUC_INTERNAL
585
586G_GNUC_INTERNAL
588
589G_GNUC_INTERNAL
590void pcmk__new_colocation(const char *id, const char *node_attr, int score,
591 pcmk_resource_t *dependent, pcmk_resource_t *primary,
592 const char *dependent_role, const char *primary_role,
593 uint32_t flags);
594
595G_GNUC_INTERNAL
597
610static inline bool
611pcmk__colocation_has_influence(const pcmk__colocation_t *colocation,
612 const pcmk_resource_t *rsc)
613{
614 if (rsc == NULL) {
615 rsc = colocation->primary;
616 }
617
618 /* A bundle replica colocates its remote connection with its container,
619 * using a finite score so that the container can run on Pacemaker Remote
620 * nodes.
621 *
622 * Moving a connection is lightweight and does not interrupt the service,
623 * while moving a container is heavyweight and does interrupt the service,
624 * so don't move a clean, active container based solely on the preferences
625 * of its connection.
626 *
627 * This also avoids problematic scenarios where two containers want to
628 * perpetually swap places.
629 */
630 if (pcmk_is_set(colocation->dependent->flags,
633 && pcmk__list_of_1(rsc->running_on)) {
634 return false;
635 }
636
637 /* The dependent in a colocation influences the primary's location
638 * if the PCMK_XA_INFLUENCE option is true or the primary is not yet active.
639 */
640 return pcmk_is_set(colocation->flags, pcmk__coloc_influence)
641 || (rsc->running_on == NULL);
642}
643
644
645// Ordering constraints (pcmk_sched_ordering.c)
646
647G_GNUC_INTERNAL
648void pcmk__new_ordering(pcmk_resource_t *first_rsc, char *first_task,
649 pcmk_action_t *first_action, pcmk_resource_t *then_rsc,
650 char *then_task, pcmk_action_t *then_action,
651 uint32_t flags, pcmk_scheduler_t *sched);
652
653G_GNUC_INTERNAL
654void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
655
656G_GNUC_INTERNAL
658
659G_GNUC_INTERNAL
661 pcmk_action_t *shutdown_op);
662
663G_GNUC_INTERNAL
665
666G_GNUC_INTERNAL
667void pcmk__order_after_each(pcmk_action_t *after, GList *list);
668
669
680#define pcmk__order_resource_actions(first_rsc, first_task, \
681 then_rsc, then_task, flags) \
682 pcmk__new_ordering((first_rsc), \
683 pcmk__op_key((first_rsc)->id, (first_task), 0), \
684 NULL, \
685 (then_rsc), \
686 pcmk__op_key((then_rsc)->id, (then_task), 0), \
687 NULL, (flags), (first_rsc)->cluster)
688
689#define pcmk__order_starts(rsc1, rsc2, flags) \
690 pcmk__order_resource_actions((rsc1), PCMK_ACTION_START, \
691 (rsc2), PCMK_ACTION_START, (flags))
692
693#define pcmk__order_stops(rsc1, rsc2, flags) \
694 pcmk__order_resource_actions((rsc1), PCMK_ACTION_STOP, \
695 (rsc2), PCMK_ACTION_STOP, (flags))
696
697
698// Ticket constraints (pcmk_sched_tickets.c)
699
700G_GNUC_INTERNAL
701void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
702
703
704// Promotable clone resources (pcmk_sched_promotable.c)
705
706G_GNUC_INTERNAL
708
709G_GNUC_INTERNAL
711
712G_GNUC_INTERNAL
714
715G_GNUC_INTERNAL
717
718G_GNUC_INTERNAL
720
721G_GNUC_INTERNAL
723
724G_GNUC_INTERNAL
726 pcmk_resource_t *dependent,
728 *colocation);
729
730G_GNUC_INTERNAL
732 pcmk_resource_t *dependent,
734 *colocation);
735
736
737// Pacemaker Remote nodes (pcmk_sched_remote.c)
738
739G_GNUC_INTERNAL
741
742G_GNUC_INTERNAL
744
745G_GNUC_INTERNAL
747 const pcmk_node_t *node);
748
749G_GNUC_INTERNAL
751
752G_GNUC_INTERNAL
753void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params);
754
755G_GNUC_INTERNAL
756void pcmk__add_guest_meta_to_xml(xmlNode *args_xml,
757 const pcmk_action_t *action);
758
759
760// Primitives (pcmk_sched_primitive.c)
761
762G_GNUC_INTERNAL
764 const pcmk_node_t *prefer,
765 bool stop_if_fail);
766
767G_GNUC_INTERNAL
769
770G_GNUC_INTERNAL
772
773G_GNUC_INTERNAL
775 const pcmk_node_t *node);
776
777G_GNUC_INTERNAL
779 const pcmk_resource_t *primary,
780 const pcmk__colocation_t *colocation,
781 bool for_dependent);
782
783G_GNUC_INTERNAL
785 const pcmk_resource_t *orig_rsc,
786 GList **list);
787
788G_GNUC_INTERNAL
790 const pcmk_resource_t *orig_rsc,
791 GList **list);
792
793G_GNUC_INTERNAL
795 bool optional);
796
797G_GNUC_INTERNAL
798void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
799
800G_GNUC_INTERNAL
802 const pcmk_resource_t *orig_rsc,
803 GList *all_rscs, GHashTable *utilization);
804
805G_GNUC_INTERNAL
807
808
809// Groups (pcmk_sched_group.c)
810
811G_GNUC_INTERNAL
813 bool stop_if_fail);
814
815G_GNUC_INTERNAL
817
818G_GNUC_INTERNAL
820
821G_GNUC_INTERNAL
823 const pcmk_resource_t *primary,
824 const pcmk__colocation_t *colocation,
825 bool for_dependent);
826
827G_GNUC_INTERNAL
829 const pcmk_resource_t *orig_rsc,
830 GList **list);
831
832G_GNUC_INTERNAL
834 const pcmk_resource_t *orig_rsc,
835 GList **list);
836
837G_GNUC_INTERNAL
839 const pcmk_resource_t *target_rsc,
840 const char *log_id,
841 GHashTable **nodes,
842 const pcmk__colocation_t *colocation,
843 float factor, uint32_t flags);
844
845G_GNUC_INTERNAL
847 pcmk__location_t *location);
848
849G_GNUC_INTERNAL
851 const pcmk_node_t *node);
852
853G_GNUC_INTERNAL
855 pcmk_action_t *then,
856 const pcmk_node_t *node,
857 uint32_t flags, uint32_t filter,
858 uint32_t type,
860
861G_GNUC_INTERNAL
863 const pcmk_resource_t *orig_rsc,
864 GList *colocated_rscs);
865
866G_GNUC_INTERNAL
868 const pcmk_resource_t *orig_rsc,
869 GList *all_rscs, GHashTable *utilization);
870
871G_GNUC_INTERNAL
873
874
875// Clones (pcmk_sched_clone.c)
876
877G_GNUC_INTERNAL
879 bool stop_if_fail);
880
881G_GNUC_INTERNAL
883
884G_GNUC_INTERNAL
886
887G_GNUC_INTERNAL
889
890G_GNUC_INTERNAL
892 const pcmk_resource_t *primary,
893 const pcmk__colocation_t *colocation,
894 bool for_dependent);
895
896G_GNUC_INTERNAL
898 const pcmk_resource_t *orig_rsc,
899 GList **list);
900
901G_GNUC_INTERNAL
903 const pcmk_resource_t *orig_rsc,
904 GList **list);
905
906G_GNUC_INTERNAL
908 pcmk__location_t *constraint);
909
910G_GNUC_INTERNAL
912 const pcmk_node_t *node);
913
914G_GNUC_INTERNAL
916
917G_GNUC_INTERNAL
918void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
919
920G_GNUC_INTERNAL
922 const pcmk_resource_t *orig_rsc,
923 GList *all_rscs, GHashTable *utilization);
924
925G_GNUC_INTERNAL
927
928// Bundles (pcmk_sched_bundle.c)
929
930G_GNUC_INTERNAL
932 const pcmk_node_t *prefer, bool stop_if_fail);
933
934G_GNUC_INTERNAL
936
937G_GNUC_INTERNAL
939
940G_GNUC_INTERNAL
942
943G_GNUC_INTERNAL
945 const pcmk_resource_t *primary,
946 const pcmk__colocation_t *colocation,
947 bool for_dependent);
948
949G_GNUC_INTERNAL
951 const pcmk_resource_t *orig_rsc,
952 GList **list);
953
954G_GNUC_INTERNAL
956 const pcmk_resource_t *orig_rsc,
957 GList **list);
958
959G_GNUC_INTERNAL
961 pcmk__location_t *constraint);
962
963G_GNUC_INTERNAL
965 const pcmk_node_t *node);
966
967G_GNUC_INTERNAL
969
970G_GNUC_INTERNAL
972
973G_GNUC_INTERNAL
975 const pcmk_resource_t *orig_rsc,
976 GList *all_rscs, GHashTable *utilization);
977
978G_GNUC_INTERNAL
980
981
982// Clone instances or bundle replica containers (pcmk_sched_instances.c)
983
984G_GNUC_INTERNAL
985void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances,
986 int max_total, int max_per_node);
987
988G_GNUC_INTERNAL
989void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances);
990
991G_GNUC_INTERNAL
992bool pcmk__instance_matches(const pcmk_resource_t *instance,
993 const pcmk_node_t *node, enum rsc_role_e role,
994 bool current);
995
996G_GNUC_INTERNAL
998 const pcmk_resource_t *rsc,
999 enum rsc_role_e role,
1000 bool current);
1001
1002G_GNUC_INTERNAL
1004 pcmk_action_t *then,
1005 const pcmk_node_t *node,
1006 uint32_t flags, uint32_t filter,
1007 uint32_t type,
1009
1010G_GNUC_INTERNAL
1012 const GList *instances,
1013 const pcmk_node_t *node);
1014
1015
1016// Injections (pcmk_injections.c)
1017
1018G_GNUC_INTERNAL
1019xmlNode *pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid);
1020
1021G_GNUC_INTERNAL
1022xmlNode *pcmk__inject_node_state_change(cib_t *cib_conn, const char *node,
1023 bool up);
1024
1025G_GNUC_INTERNAL
1026xmlNode *pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node,
1027 const char *resource,
1028 const char *lrm_name,
1029 const char *rclass,
1030 const char *rtype,
1031 const char *rprovider);
1032
1033G_GNUC_INTERNAL
1034void pcmk__inject_failcount(pcmk__output_t *out, cib_t *cib_conn,
1035 xmlNode *cib_node, const char *resource,
1036 const char *task, guint interval_ms, int rc);
1037
1038G_GNUC_INTERNAL
1039xmlNode *pcmk__inject_action_result(xmlNode *cib_resource,
1040 lrmd_event_data_t *op, int target_rc);
1041
1042
1043// Nodes (pcmk_sched_nodes.c)
1044
1045G_GNUC_INTERNAL
1046bool pcmk__node_available(const pcmk_node_t *node, bool consider_score,
1047 bool consider_guest);
1048
1049G_GNUC_INTERNAL
1050bool pcmk__any_node_available(GHashTable *nodes);
1051
1052G_GNUC_INTERNAL
1053GHashTable *pcmk__copy_node_table(GHashTable *nodes);
1054
1055G_GNUC_INTERNAL
1056void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy);
1057
1058G_GNUC_INTERNAL
1059void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup);
1060
1061G_GNUC_INTERNAL
1062GList *pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node);
1063
1064G_GNUC_INTERNAL
1066
1067G_GNUC_INTERNAL
1069 const pcmk_node_t *node);
1070
1071
1072// Functions applying to more than one variant (pcmk_sched_resource.c)
1073
1074G_GNUC_INTERNAL
1076
1077G_GNUC_INTERNAL
1079 const xmlNode *rsc_entry, bool active_on_node);
1080
1081G_GNUC_INTERNAL
1082GList *pcmk__rscs_matching_id(const char *id,
1084
1085G_GNUC_INTERNAL
1087 const pcmk_resource_t *orig_rsc,
1088 GList *colocated_rscs);
1089
1090G_GNUC_INTERNAL
1091void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
1092
1093G_GNUC_INTERNAL
1095
1096G_GNUC_INTERNAL
1097bool pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force,
1098 bool stop_if_fail);
1099
1100G_GNUC_INTERNAL
1102
1103G_GNUC_INTERNAL
1105 pcmk_resource_t **failed);
1106
1107G_GNUC_INTERNAL
1109
1110G_GNUC_INTERNAL
1111gint pcmk__cmp_instance(gconstpointer a, gconstpointer b);
1112
1113G_GNUC_INTERNAL
1114gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b);
1115
1116
1117// Functions related to probes (pcmk_sched_probes.c)
1118
1119G_GNUC_INTERNAL
1121
1122G_GNUC_INTERNAL
1124
1125G_GNUC_INTERNAL
1126bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node);
1127
1128G_GNUC_INTERNAL
1130
1131
1132// Functions related to live migration (pcmk_sched_migration.c)
1133
1135 const pcmk_node_t *current);
1136
1137void pcmk__abort_dangling_migration(void *data, void *user_data);
1138
1140 const pcmk_node_t *current);
1141
1143
1144
1145// Functions related to node utilization (pcmk_sched_utilization.c)
1146
1147G_GNUC_INTERNAL
1149 const pcmk_node_t *node2);
1150
1151G_GNUC_INTERNAL
1152void pcmk__consume_node_capacity(GHashTable *current_utilization,
1153 const pcmk_resource_t *rsc);
1154
1155G_GNUC_INTERNAL
1156void pcmk__release_node_capacity(GHashTable *current_utilization,
1157 const pcmk_resource_t *rsc);
1158
1159G_GNUC_INTERNAL
1161
1162G_GNUC_INTERNAL
1164 const GList *allowed_nodes);
1165
1166G_GNUC_INTERNAL
1168
1169
1170// Functions related to the scheduler (pcmk_scheduler.c)
1171
1172G_GNUC_INTERNAL
1173int pcmk__init_scheduler(pcmk__output_t *out, xmlNodePtr input, const crm_time_t *date,
1175
1176
1177// General setup functions (pcmk_setup.c)
1178
1179G_GNUC_INTERNAL
1181 pcmk_scheduler_t **scheduler, xmlNode **xml);
1182
1183#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:98
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__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 int 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 int pcmk__group_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__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 int 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 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__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 int pcmk__apply_coloc_to_priority(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation)
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 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 int pcmk__update_promotable_dependent_priority(const pcmk_resource_t *primary, pcmk_resource_t *dependent, const pcmk__colocation_t *colocation)
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__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)
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 int 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__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)
int(* apply_coloc_score)(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
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(* 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)