pacemaker  2.1.7-0f7f88312f
Scalable High-Availability cluster resource manager
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
26  pcmk__coloc_influence = (1U << 0),
27 
28  // Colocation was explicitly configured in CIB
29  pcmk__coloc_explicit = (1U << 1),
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 
133  void (*apply_coloc_score)(pcmk_resource_t *dependent,
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 
332  void (*add_utilization)(const pcmk_resource_t *rsc,
333  const pcmk_resource_t *orig_rsc, GList *all_rscs,
334  GHashTable *utilization);
335 
343 };
344 
345 // Actions (pcmk_sched_actions.c)
346 
347 G_GNUC_INTERNAL
350 
351 G_GNUC_INTERNAL
353  const pcmk_node_t *node, uint32_t flags,
354  uint32_t filter, uint32_t type,
356 
357 G_GNUC_INTERNAL
358 void pcmk__log_action(const char *pre_text, const pcmk_action_t *action,
359  bool details);
360 
361 G_GNUC_INTERNAL
363  guint interval_ms,
364  const pcmk_node_t *node);
365 
366 G_GNUC_INTERNAL
368 
369 G_GNUC_INTERNAL
371 
372 G_GNUC_INTERNAL
374 
375 G_GNUC_INTERNAL
377 
378 G_GNUC_INTERNAL
380  const xmlNode *xml_op);
381 
382 G_GNUC_INTERNAL
384 
385 
386 // Recurring actions (pcmk_sched_recurring.c)
387 
388 G_GNUC_INTERNAL
390 
391 G_GNUC_INTERNAL
392 void 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 
396 G_GNUC_INTERNAL
397 void pcmk__reschedule_recurring(pcmk_resource_t *rsc, const char *task,
398  guint interval_ms, pcmk_node_t *node);
399 
400 G_GNUC_INTERNAL
402 
403 
404 // Producing transition graphs (pcmk_graph_producer.c)
405 
406 G_GNUC_INTERNAL
407 bool pcmk__graph_has_loop(const pcmk_action_t *init_action,
408  const pcmk_action_t *action,
410 
411 G_GNUC_INTERNAL
413 
414 G_GNUC_INTERNAL
416 
417 
418 // Fencing (pcmk_sched_fencing.c)
419 
420 G_GNUC_INTERNAL
421 void pcmk__order_vs_fence(pcmk_action_t *stonith_op,
423 
424 G_GNUC_INTERNAL
425 void pcmk__order_vs_unfence(const pcmk_resource_t *rsc, pcmk_node_t *node,
427  enum pcmk__action_relation_flags order);
428 
429 G_GNUC_INTERNAL
430 void pcmk__fence_guest(pcmk_node_t *node);
431 
432 G_GNUC_INTERNAL
433 bool pcmk__node_unfenced(const pcmk_node_t *node);
434 
435 G_GNUC_INTERNAL
436 void 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 
447 G_GNUC_INTERNAL
449  const char *id);
450 
451 G_GNUC_INTERNAL
452 xmlNode *pcmk__expand_tags_in_sets(xmlNode *xml_obj,
453  const pcmk_scheduler_t *scheduler);
454 
455 G_GNUC_INTERNAL
457  const char *id, pcmk_resource_t **rsc,
458  pcmk_tag_t **tag);
459 
460 G_GNUC_INTERNAL
461 bool pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr,
462  bool convert_rsc, const pcmk_scheduler_t *scheduler);
463 
464 G_GNUC_INTERNAL
466 
467 
468 // Location constraints
469 
470 G_GNUC_INTERNAL
471 void pcmk__unpack_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
472 
473 G_GNUC_INTERNAL
475  int node_score, const char *discover_mode,
476  pcmk_node_t *foo_node);
477 
478 G_GNUC_INTERNAL
480 
481 G_GNUC_INTERNAL
482 void pcmk__apply_location(pcmk_resource_t *rsc, pe__location_t *constraint);
483 
484 
485 // Colocation constraints (pcmk_sched_colocation.c)
486 
491 };
492 
509 static inline const char *
510 pcmk__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 
522 G_GNUC_INTERNAL
524  *dependent,
525  const pcmk_resource_t
526  *primary,
527  const pcmk__colocation_t
528  *colocation,
529  bool preview);
530 
531 G_GNUC_INTERNAL
533  const pcmk_resource_t *primary,
534  const pcmk__colocation_t *colocation);
535 
536 G_GNUC_INTERNAL
538  const pcmk_resource_t *primary,
539  const pcmk__colocation_t *colocation);
540 
541 G_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 
548 G_GNUC_INTERNAL
549 void pcmk__add_dependent_scores(gpointer data, gpointer user_data);
550 
551 G_GNUC_INTERNAL
553  const pcmk_resource_t *primary,
554  const pcmk__colocation_t *colocation,
555  const GList *primary_nodes,
556  bool merge_scores);
557 
558 G_GNUC_INTERNAL
559 void pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
560 
561 G_GNUC_INTERNAL
562 void pcmk__add_this_with(GList **list, const pcmk__colocation_t *colocation,
563  const pcmk_resource_t *rsc);
564 
565 G_GNUC_INTERNAL
566 void pcmk__add_this_with_list(GList **list, GList *addition,
567  const pcmk_resource_t *rsc);
568 
569 G_GNUC_INTERNAL
570 void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation,
571  const pcmk_resource_t *rsc);
572 
573 G_GNUC_INTERNAL
574 void pcmk__add_with_this_list(GList **list, GList *addition,
575  const pcmk_resource_t *rsc);
576 
577 G_GNUC_INTERNAL
579 
580 G_GNUC_INTERNAL
582 
583 G_GNUC_INTERNAL
584 void 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 
589 G_GNUC_INTERNAL
591 
604 static inline bool
605 pcmk__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 
641 G_GNUC_INTERNAL
642 void 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 
647 G_GNUC_INTERNAL
648 void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
649 
650 G_GNUC_INTERNAL
652 
653 G_GNUC_INTERNAL
655  pcmk_action_t *shutdown_op);
656 
657 G_GNUC_INTERNAL
659 
660 G_GNUC_INTERNAL
661 void 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 
694 G_GNUC_INTERNAL
695 void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler);
696 
697 
698 // Promotable clone resources (pcmk_sched_promotable.c)
699 
700 G_GNUC_INTERNAL
702 
703 G_GNUC_INTERNAL
705 
706 G_GNUC_INTERNAL
708 
709 G_GNUC_INTERNAL
711 
712 G_GNUC_INTERNAL
714 
715 G_GNUC_INTERNAL
717 
718 G_GNUC_INTERNAL
720  pcmk_resource_t *dependent,
721  const pcmk__colocation_t
722  *colocation);
723 
724 G_GNUC_INTERNAL
726  pcmk_resource_t *dependent,
727  const pcmk__colocation_t
728  *colocation);
729 
730 
731 // Pacemaker Remote nodes (pcmk_sched_remote.c)
732 
733 G_GNUC_INTERNAL
734 bool pcmk__is_failed_remote_node(const pcmk_node_t *node);
735 
736 G_GNUC_INTERNAL
738 
739 G_GNUC_INTERNAL
741  const pcmk_node_t *node);
742 
743 G_GNUC_INTERNAL
745 
746 G_GNUC_INTERNAL
747 void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params);
748 
749 G_GNUC_INTERNAL
750 void pcmk__add_bundle_meta_to_xml(xmlNode *args_xml,
751  const pcmk_action_t *action);
752 
753 
754 // Primitives (pcmk_sched_primitive.c)
755 
756 G_GNUC_INTERNAL
758  const pcmk_node_t *prefer,
759  bool stop_if_fail);
760 
761 G_GNUC_INTERNAL
763 
764 G_GNUC_INTERNAL
766 
767 G_GNUC_INTERNAL
769  const pcmk_node_t *node);
770 
771 G_GNUC_INTERNAL
773  const pcmk_resource_t *primary,
774  const pcmk__colocation_t *colocation,
775  bool for_dependent);
776 
777 G_GNUC_INTERNAL
779  const pcmk_resource_t *orig_rsc,
780  GList **list);
781 
782 G_GNUC_INTERNAL
784  const pcmk_resource_t *orig_rsc,
785  GList **list);
786 
787 G_GNUC_INTERNAL
788 void pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node,
789  bool optional);
790 
791 G_GNUC_INTERNAL
792 void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
793 
794 G_GNUC_INTERNAL
796  const pcmk_resource_t *orig_rsc,
797  GList *all_rscs, GHashTable *utilization);
798 
799 G_GNUC_INTERNAL
801 
802 
803 // Groups (pcmk_sched_group.c)
804 
805 G_GNUC_INTERNAL
807  bool stop_if_fail);
808 
809 G_GNUC_INTERNAL
811 
812 G_GNUC_INTERNAL
814 
815 G_GNUC_INTERNAL
817  const pcmk_resource_t *primary,
818  const pcmk__colocation_t *colocation,
819  bool for_dependent);
820 
821 G_GNUC_INTERNAL
823  const pcmk_resource_t *orig_rsc,
824  GList **list);
825 
826 G_GNUC_INTERNAL
828  const pcmk_resource_t *orig_rsc,
829  GList **list);
830 
831 G_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 
839 G_GNUC_INTERNAL
841 
842 G_GNUC_INTERNAL
844  const pcmk_node_t *node);
845 
846 G_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 
854 G_GNUC_INTERNAL
856  const pcmk_resource_t *orig_rsc,
857  GList *colocated_rscs);
858 
859 G_GNUC_INTERNAL
861  const pcmk_resource_t *orig_rsc,
862  GList *all_rscs, GHashTable *utilization);
863 
864 G_GNUC_INTERNAL
866 
867 
868 // Clones (pcmk_sched_clone.c)
869 
870 G_GNUC_INTERNAL
872  bool stop_if_fail);
873 
874 G_GNUC_INTERNAL
876 
877 G_GNUC_INTERNAL
879 
880 G_GNUC_INTERNAL
882 
883 G_GNUC_INTERNAL
885  const pcmk_resource_t *primary,
886  const pcmk__colocation_t *colocation,
887  bool for_dependent);
888 
889 G_GNUC_INTERNAL
891  const pcmk_resource_t *orig_rsc,
892  GList **list);
893 
894 G_GNUC_INTERNAL
896  const pcmk_resource_t *orig_rsc,
897  GList **list);
898 
899 G_GNUC_INTERNAL
901  pe__location_t *constraint);
902 
903 G_GNUC_INTERNAL
905  const pcmk_node_t *node);
906 
907 G_GNUC_INTERNAL
909 
910 G_GNUC_INTERNAL
911 void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
912 
913 G_GNUC_INTERNAL
915  const pcmk_resource_t *orig_rsc,
916  GList *all_rscs, GHashTable *utilization);
917 
918 G_GNUC_INTERNAL
920 
921 // Bundles (pcmk_sched_bundle.c)
922 
923 G_GNUC_INTERNAL
925  const pcmk_node_t *prefer, bool stop_if_fail);
926 
927 G_GNUC_INTERNAL
929 
930 G_GNUC_INTERNAL
932 
933 G_GNUC_INTERNAL
935 
936 G_GNUC_INTERNAL
938  const pcmk_resource_t *primary,
939  const pcmk__colocation_t *colocation,
940  bool for_dependent);
941 
942 G_GNUC_INTERNAL
944  const pcmk_resource_t *orig_rsc,
945  GList **list);
946 
947 G_GNUC_INTERNAL
949  const pcmk_resource_t *orig_rsc,
950  GList **list);
951 
952 G_GNUC_INTERNAL
954  pe__location_t *constraint);
955 
956 G_GNUC_INTERNAL
958  const pcmk_node_t *node);
959 
960 G_GNUC_INTERNAL
962 
963 G_GNUC_INTERNAL
965 
966 G_GNUC_INTERNAL
968  const pcmk_resource_t *orig_rsc,
969  GList *all_rscs, GHashTable *utilization);
970 
971 G_GNUC_INTERNAL
973 
974 
975 // Clone instances or bundle replica containers (pcmk_sched_instances.c)
976 
977 G_GNUC_INTERNAL
978 void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances,
979  int max_total, int max_per_node);
980 
981 G_GNUC_INTERNAL
982 void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances);
983 
984 G_GNUC_INTERNAL
985 bool pcmk__instance_matches(const pcmk_resource_t *instance,
986  const pcmk_node_t *node, enum rsc_role_e role,
987  bool current);
988 
989 G_GNUC_INTERNAL
991  const pcmk_resource_t *rsc,
992  enum rsc_role_e role,
993  bool current);
994 
995 G_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 
1003 G_GNUC_INTERNAL
1005  const GList *instances,
1006  const pcmk_node_t *node);
1007 
1008 
1009 // Injections (pcmk_injections.c)
1010 
1011 G_GNUC_INTERNAL
1012 xmlNode *pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid);
1013 
1014 G_GNUC_INTERNAL
1015 xmlNode *pcmk__inject_node_state_change(cib_t *cib_conn, const char *node,
1016  bool up);
1017 
1018 G_GNUC_INTERNAL
1019 xmlNode *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 
1026 G_GNUC_INTERNAL
1027 void pcmk__inject_failcount(pcmk__output_t *out, xmlNode *cib_node,
1028  const char *resource, const char *task,
1029  guint interval_ms, int rc);
1030 
1031 G_GNUC_INTERNAL
1032 xmlNode *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 
1038 G_GNUC_INTERNAL
1039 bool pcmk__node_available(const pcmk_node_t *node, bool consider_score,
1040  bool consider_guest);
1041 
1042 G_GNUC_INTERNAL
1043 bool pcmk__any_node_available(GHashTable *nodes);
1044 
1045 G_GNUC_INTERNAL
1046 GHashTable *pcmk__copy_node_table(GHashTable *nodes);
1047 
1048 G_GNUC_INTERNAL
1049 void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy);
1050 
1051 G_GNUC_INTERNAL
1052 void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup);
1053 
1054 G_GNUC_INTERNAL
1055 GList *pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node);
1056 
1057 G_GNUC_INTERNAL
1059 
1060 G_GNUC_INTERNAL
1062  const pcmk_node_t *node);
1063 
1064 
1065 // Functions applying to more than one variant (pcmk_sched_resource.c)
1066 
1067 G_GNUC_INTERNAL
1069 
1070 G_GNUC_INTERNAL
1072  const xmlNode *rsc_entry, bool active_on_node);
1073 
1074 G_GNUC_INTERNAL
1075 GList *pcmk__rscs_matching_id(const char *id,
1076  const pcmk_scheduler_t *scheduler);
1077 
1078 G_GNUC_INTERNAL
1079 GList *pcmk__colocated_resources(const pcmk_resource_t *rsc,
1080  const pcmk_resource_t *orig_rsc,
1081  GList *colocated_rscs);
1082 
1083 G_GNUC_INTERNAL
1084 void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml);
1085 
1086 G_GNUC_INTERNAL
1088 
1089 G_GNUC_INTERNAL
1090 bool pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force,
1091  bool stop_if_fail);
1092 
1093 G_GNUC_INTERNAL
1095 
1096 G_GNUC_INTERNAL
1097 bool pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node,
1098  pcmk_resource_t **failed);
1099 
1100 G_GNUC_INTERNAL
1102 
1103 G_GNUC_INTERNAL
1104 gint pcmk__cmp_instance(gconstpointer a, gconstpointer b);
1105 
1106 G_GNUC_INTERNAL
1107 gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b);
1108 
1109 
1110 // Functions related to probes (pcmk_sched_probes.c)
1111 
1112 G_GNUC_INTERNAL
1114 
1115 G_GNUC_INTERNAL
1117 
1118 G_GNUC_INTERNAL
1119 bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node);
1120 
1121 G_GNUC_INTERNAL
1123 
1124 
1125 // Functions related to live migration (pcmk_sched_migration.c)
1126 
1128  const pcmk_node_t *current);
1129 
1130 void pcmk__abort_dangling_migration(void *data, void *user_data);
1131 
1132 bool pcmk__rsc_can_migrate(const pcmk_resource_t *rsc,
1133  const pcmk_node_t *current);
1134 
1136 
1137 
1138 // Functions related to node utilization (pcmk_sched_utilization.c)
1139 
1140 G_GNUC_INTERNAL
1142  const pcmk_node_t *node2);
1143 
1144 G_GNUC_INTERNAL
1145 void pcmk__consume_node_capacity(GHashTable *current_utilization,
1146  const pcmk_resource_t *rsc);
1147 
1148 G_GNUC_INTERNAL
1149 void pcmk__release_node_capacity(GHashTable *current_utilization,
1150  const pcmk_resource_t *rsc);
1151 
1152 G_GNUC_INTERNAL
1154 
1155 G_GNUC_INTERNAL
1157  const GList *allowed_nodes);
1158 
1159 G_GNUC_INTERNAL
1160 void pcmk__show_node_capacities(const char *desc, pcmk_scheduler_t *scheduler);
1161 
1162 #endif // PCMK__LIBPACEMAKER_PRIVATE__H
const pcmk_resource_t * pe__const_top_resource(const pcmk_resource_t *rsc, bool include_bundle)
Definition: complex.c:962
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__order_after_each(pcmk_action_t *after, GList *list)
G_GNUC_INTERNAL GList * pcmk__colocated_resources(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *colocated_rscs)
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 uint32_t pcmk__collective_action_flags(pcmk_action_t *action, const GList *instances, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__show_node_capacities(const char *desc, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__unpack_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
void(* output_actions)(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node, bool optional)
void(* add_graph_meta)(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL void pcmk__group_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__primitive_create_actions(pcmk_resource_t *rsc)
char data[0]
Definition: cpg.c:55
void(* create_actions)(pcmk_resource_t *rsc)
pcmk__coloc_affects
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__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__disable_invalid_orderings(pcmk_scheduler_t *scheduler)
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)
const char * name
Definition: cib.c:26
G_GNUC_INTERNAL void pcmk__create_utilization_constraints(pcmk_resource_t *rsc, const GList *allowed_nodes)
uint32_t(* action_flags)(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__release_node_capacity(GHashTable *current_utilization, const pcmk_resource_t *rsc)
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 bool pcmk__probe_resource_list(GList *rscs, pcmk_node_t *node)
G_GNUC_INTERNAL bool pcmk__any_node_available(GHashTable *nodes)
G_GNUC_INTERNAL void pcmk__require_promotion_tickets(pcmk_resource_t *rsc)
G_GNUC_INTERNAL bool pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node, pcmk_resource_t **failed)
G_GNUC_INTERNAL void pcmk__bundle_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
bool pcmk__rsc_can_migrate(const pcmk_resource_t *rsc, const pcmk_node_t *current)
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 xmlNode * pcmk__inject_node_state_change(cib_t *cib_conn, const char *node, bool up)
Implementation of pcmk_action_t.
Definition: actions.h:390
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__inject_failcount(pcmk__output_t *out, xmlNode *cib_node, const char *resource, const char *task, guint interval_ms, int rc)
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 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 void pcmk__order_promotable_instances(pcmk_resource_t *clone)
G_GNUC_INTERNAL void pcmk__apply_locations(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__block_colocation_dependents(pcmk_action_t *action)
G_GNUC_INTERNAL void pcmk__create_instance_actions(pcmk_resource_t *rsc, GList *instances)
G_GNUC_INTERNAL void pcmk__handle_rsc_config_changes(pcmk_scheduler_t *scheduler)
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)
G_GNUC_INTERNAL xmlNode * pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid)
G_GNUC_INTERNAL void pcmk__with_bundle_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL const pcmk_node_t * pcmk__ban_insufficient_capacity(pcmk_resource_t *rsc)
pcmk_node_t node2
G_GNUC_INTERNAL void pcmk__create_promotable_actions(pcmk_resource_t *clone)
G_GNUC_INTERNAL void pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__with_clone_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
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)
enum crm_ais_msg_types type
Definition: cpg.c:48
G_GNUC_INTERNAL void pcmk__update_action_for_orderings(pcmk_action_t *action, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__action_is_recurring(const pcmk_action_t *action)
G_GNUC_INTERNAL void pcmk__sort_resources(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL pcmk_node_t * pcmk__connection_host_for_action(const pcmk_action_t *action)
Where resource is assigned.
G_GNUC_INTERNAL void pcmk__bundle_shutdown_lock(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__group_with_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
Implementation of pcmk_scheduler_t.
Definition: scheduler.h:172
G_GNUC_INTERNAL void pcmk__create_graph(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__node_available(const pcmk_node_t *node, bool consider_score, bool consider_guest)
const char * action
Definition: pcmk_fence.c:30
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__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force, bool stop_if_fail)
void(* add_actions_to_graph)(pcmk_resource_t *rsc)
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 bool pcmk__bundle_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__clone_internal_constraints(pcmk_resource_t *rsc)
Scheduler API.
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)
void(* with_this_colocations)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
pcmk__action_relation_flags
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__apply_coloc_to_priority(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation)
G_GNUC_INTERNAL void pcmk__copy_node_tables(const pcmk_resource_t *rsc, GHashTable **copy)
G_GNUC_INTERNAL void pcmk__clone_add_actions_to_graph(pcmk_resource_t *rsc)
G_GNUC_INTERNAL GList * pcmk__rscs_matching_id(const char *id, const pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__consume_node_capacity(GHashTable *current_utilization, const pcmk_resource_t *rsc)
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__add_with_this_list(GList **list, GList *addition, const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__output_resource_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL void pcmk__bundle_internal_constraints(pcmk_resource_t *rsc)
Implementation of pcmk_resource_t.
Definition: resources.h:399
G_GNUC_INTERNAL pcmk_resource_t * pcmk__find_constraint_resource(GList *rsc_list, const char *id)
void pcmk__inject_scheduler_input(pcmk_scheduler_t *scheduler, cib_t *cib, const pcmk_injections_t *injections)
void(* apply_location)(pcmk_resource_t *rsc, pe__location_t *location)
G_GNUC_INTERNAL void pcmk__create_recurring_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__log_action(const char *pre_text, const pcmk_action_t *action, bool details)
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__add_this_with(GList **list, const pcmk__colocation_t *colocation, const pcmk_resource_t *rsc)
Whether resource is considered failed.
Definition: resources.h:151
G_GNUC_INTERNAL void pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler)
void(* this_with_colocations)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
G_GNUC_INTERNAL void pcmk__set_instance_roles(pcmk_resource_t *rsc)
G_GNUC_INTERNAL uint32_t pcmk__group_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
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
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
Definition: util.h:99
G_GNUC_INTERNAL void pcmk__add_promotion_scores(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 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 void pcmk__order_probes(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__clone_create_actions(pcmk_resource_t *rsc)
void(* shutdown_lock)(pcmk_resource_t *rsc)
G_GNUC_INTERNAL gint pcmk__cmp_instance(gconstpointer a, gconstpointer b)
unsigned long long flags
Group of enum pcmk_rsc_flags.
Definition: resources.h:429
G_GNUC_INTERNAL void pcmk__unassign_resource(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__add_with_this(GList **list, const pcmk__colocation_t *colocation, const pcmk_resource_t *rsc)
rsc_role_e
Definition: roles.h:27
void pcmk__create_migration_actions(pcmk_resource_t *rsc, const pcmk_node_t *current)
G_GNUC_INTERNAL void pcmk__noop_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
G_GNUC_INTERNAL void pcmk__output_actions(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, int max_total, int max_per_node)
G_GNUC_INTERNAL gint pcmk__cmp_instance_number(gconstpointer a, gconstpointer b)
G_GNUC_INTERNAL pcmk_action_t * pcmk__new_shutdown_action(pcmk_node_t *node)
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 bool pcmk__valid_resource_or_tag(const pcmk_scheduler_t *scheduler, const char *id, pcmk_resource_t **rsc, pcmk_tag_t **tag)
Implementation of pcmk_node_t.
Definition: nodes.h:130
G_GNUC_INTERNAL void pcmk__with_primitive_colocations(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList **list)
bool(* create_probe)(pcmk_resource_t *rsc, pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data)
G_GNUC_INTERNAL void pcmk__apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL void pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml)
void(* apply_coloc_score)(pcmk_resource_t *dependent, const pcmk_resource_t *primary, const pcmk__colocation_t *colocation, bool for_dependent)
G_GNUC_INTERNAL int pcmk__compare_node_capacities(const pcmk_node_t *node1, const pcmk_node_t *node2)
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__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)
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)
bool pe__is_bundle_node(const pcmk_node_t *node)
Definition: remote.c:47
pcmk_resource_t * primary
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 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_rsc_actions_to_graph(pcmk_resource_t *rsc)
Whether resource is a remote connection allowed to run on a remote node.
Definition: resources.h:145
G_GNUC_INTERNAL void pcmk__set_assignment_methods(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__restore_node_tables(pcmk_resource_t *rsc, GHashTable *backup)
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__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 void pcmk__apply_node_health(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__action_locks_rsc_to_node(const pcmk_action_t *action)
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)
G_GNUC_INTERNAL void pcmk__clone_apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL GList * pcmk__with_this_colocations(const pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__bundle_add_actions_to_graph(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__add_dependent_scores(gpointer data, gpointer user_data)
void(* internal_constraints)(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__reschedule_recurring(pcmk_resource_t *rsc, const char *task, guint interval_ms, pcmk_node_t *node)
G_GNUC_INTERNAL GHashTable * pcmk__copy_node_table(GHashTable *nodes)
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 bool pcmk__graph_has_loop(const pcmk_action_t *init_action, const pcmk_action_t *action, pcmk__related_action_t *input)
G_GNUC_INTERNAL void pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler)
pcmk_scheduler_t * scheduler
G_GNUC_INTERNAL void pcmk__apply_orderings(pcmk_scheduler_t *sched)
G_GNUC_INTERNAL void pcmk__add_this_with_list(GList **list, GList *addition, const pcmk_resource_t *rsc)
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__node_unfenced(const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__substitute_remote_addr(pcmk_resource_t *rsc, GHashTable *params)
G_GNUC_INTERNAL void pcmk__schedule_probes(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__output_bundle_actions(pcmk_resource_t *rsc)
xmlNode * input
G_GNUC_INTERNAL void pcmk__clone_shutdown_lock(pcmk_resource_t *rsc)
Synthetic cluster events that can be injected into the cluster for running simulations.
Definition: pacemaker.h:50
G_GNUC_INTERNAL GList * pcmk__this_with_colocations(const pcmk_resource_t *rsc)
This structure contains everything that makes up a single output formatter.
Configuration tag object.
Definition: tags.h:26
G_GNUC_INTERNAL void pcmk__deduplicate_action_inputs(pcmk_action_t *action)
pcmk__coloc_select
G_GNUC_INTERNAL uint32_t pcmk__bundle_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__clone_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
G_GNUC_INTERNAL void pcmk__group_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__promotable_restart_ordering(pcmk_resource_t *rsc)
G_GNUC_INTERNAL pcmk_node_t * pcmk__group_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, bool stop_if_fail)
pcmk_resource_t * dependent
G_GNUC_INTERNAL void pcmk__group_apply_location(pcmk_resource_t *rsc, pe__location_t *location)
G_GNUC_INTERNAL void pcmk__primitive_shutdown_lock(pcmk_resource_t *rsc)
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.
GList * running_on
Nodes where resource may be active.
Definition: resources.h:460
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__order_vs_fence(pcmk_action_t *stonith_op, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node)
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)
G_GNUC_INTERNAL GList * pcmk__sort_nodes(GList *nodes, pcmk_node_t *active_node)
G_GNUC_INTERNAL void pcmk__fence_guest(pcmk_node_t *node)
G_GNUC_INTERNAL uint32_t pcmk__primitive_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
G_GNUC_INTERNAL bool pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, const xmlNode *xml_op)
pcmk_resource_t * pe__bundled_resource(const pcmk_resource_t *rsc)
Definition: bundle.c:113
G_GNUC_INTERNAL xmlNode * pcmk__inject_action_result(xmlNode *cib_resource, lrmd_event_data_t *op, int target_rc)
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 uint32_t pcmk__clone_action_flags(pcmk_action_t *action, const pcmk_node_t *node)
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 void pcmk__order_stops_before_shutdown(pcmk_node_t *node, pcmk_action_t *shutdown_op)
pcmk_node_t node1
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)
Resource agent executor events.
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 xmlNode * pcmk__expand_tags_in_sets(xmlNode *xml_obj, const pcmk_scheduler_t *scheduler)
void(* add_utilization)(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
G_GNUC_INTERNAL void pcmk__group_add_utilization(const pcmk_resource_t *rsc, const pcmk_resource_t *orig_rsc, GList *all_rscs, GHashTable *utilization)
void pcmk__abort_dangling_migration(void *data, void *user_data)
G_GNUC_INTERNAL void pcmk__bundle_create_actions(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__create_internal_constraints(pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL bool pcmk__clone_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node)
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)
void pcmk__order_migration_equivalents(pe__ordering_t *order)
uint64_t flags
Definition: remote.c:215
pcmk__coloc_flags
G_GNUC_INTERNAL void pcmk__bundle_apply_location(pcmk_resource_t *rsc, pe__location_t *constraint)
G_GNUC_INTERNAL bool pcmk__is_failed_remote_node(const pcmk_node_t *node)
G_GNUC_INTERNAL void pcmk__primitive_internal_constraints(pcmk_resource_t *rsc)
G_GNUC_INTERNAL void pcmk__group_internal_constraints(pcmk_resource_t *rsc)