pacemaker  2.1.2-ada5c3b36
Scalable High-Availability cluster resource manager
pcmki_sched_allocate.h
Go to the documentation of this file.
1 /*
2  * Copyright 2004-2021 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 SCHED_ALLOCATE__H
11 # define SCHED_ALLOCATE__H
12 
13 # include <glib.h>
14 # include <crm/common/xml.h>
15 # include <crm/pengine/status.h>
16 # include <crm/pengine/complex.h>
17 # include <crm/pengine/internal.h>
18 # include <pcmki/pcmki_scheduler.h>
19 
21  GHashTable *(*merge_weights) (pe_resource_t *, const char *, GHashTable *, const char *, float,
22  enum pe_weights);
27 
32 
50  GList *(*colocated_resources)(pe_resource_t *rsc, pe_resource_t *orig_rsc,
51  GList *colocated_rscs);
52 
54 
57  pe_node_t *, enum pe_action_flags,
58  enum pe_action_flags,
59  enum pe_ordering,
60  pe_working_set_t *data_set);
61 
63  void (*append_meta) (pe_resource_t * rsc, xmlNode * xml);
64 };
65 
66 GHashTable *pcmk__native_merge_weights(pe_resource_t *rsc, const char *rhs,
67  GHashTable *nodes, const char *attr,
68  float factor, uint32_t flags);
69 
70 GHashTable *pcmk__group_merge_weights(pe_resource_t *rsc, const char *rhs,
71  GHashTable *nodes, const char *attr,
72  float factor, uint32_t flags);
73 
75  pe_working_set_t *data_set);
76 extern void native_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set);
77 extern void native_internal_constraints(pe_resource_t * rsc, pe_working_set_t * data_set);
78 void native_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary,
79  pcmk__colocation_t *constraint,
80  pe_working_set_t *data_set);
81 void native_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary,
82  pcmk__colocation_t *constraint,
83  pe_working_set_t *data_set);
85 
86 void native_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
87 extern void native_expand(pe_resource_t * rsc, pe_working_set_t * data_set);
88 extern gboolean native_create_probe(pe_resource_t * rsc, pe_node_t * node, pe_action_t * complete,
89  gboolean force, pe_working_set_t * data_set);
90 extern void native_append_meta(pe_resource_t * rsc, xmlNode * xml);
91 
93  pe_working_set_t *data_set);
94 extern void group_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set);
95 extern void group_internal_constraints(pe_resource_t * rsc, pe_working_set_t * data_set);
96 void group_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary,
97  pcmk__colocation_t *constraint,
98  pe_working_set_t *data_set);
99 void group_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary,
100  pcmk__colocation_t *constraint,
101  pe_working_set_t *data_set);
103 void group_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
104 extern void group_expand(pe_resource_t * rsc, pe_working_set_t * data_set);
105 extern void group_append_meta(pe_resource_t * rsc, xmlNode * xml);
106 
108  pe_working_set_t *data_set);
110  pe_working_set_t *data_set);
112  pe_action_t *complete, gboolean force,
113  pe_working_set_t *data_set);
115  pe_working_set_t *data_set);
117  pe_resource_t *primary,
118  pcmk__colocation_t *constraint,
119  pe_working_set_t *data_set);
121  pe_resource_t *primary,
122  pcmk__colocation_t *constraint,
123  pe_working_set_t *data_set);
126  pe_node_t *node);
128 void pcmk__bundle_append_meta(pe_resource_t *rsc, xmlNode *xml);
129 
131  pe_working_set_t *data_set);
132 extern void clone_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set);
133 extern void clone_internal_constraints(pe_resource_t * rsc, pe_working_set_t * data_set);
134 void clone_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary,
135  pcmk__colocation_t *constraint,
136  pe_working_set_t *data_set);
137 void clone_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary,
138  pcmk__colocation_t *constraint,
139  pe_working_set_t *data_set);
140 void clone_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
142 extern void clone_expand(pe_resource_t * rsc, pe_working_set_t * data_set);
143 extern gboolean clone_create_probe(pe_resource_t * rsc, pe_node_t * node, pe_action_t * complete,
144  gboolean force, pe_working_set_t * data_set);
145 extern void clone_append_meta(pe_resource_t * rsc, xmlNode * xml);
146 
149  pe_working_set_t *data_set);
153 void promotable_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary,
154  pcmk__colocation_t *constraint,
155  pe_working_set_t *data_set);
156 
157 /* extern resource_object_functions_t resource_variants[]; */
159 
160 void LogNodeActions(pe_working_set_t * data_set);
161 void LogActions(pe_resource_t * rsc, pe_working_set_t * data_set);
163 
165  pe_node_t *node,
166  enum pe_action_flags flags,
167  enum pe_action_flags filter,
168  enum pe_ordering type,
169  pe_working_set_t *data_set);
171  pe_node_t *node,
172  enum pe_action_flags flags,
173  enum pe_action_flags filter,
174  enum pe_ordering type,
175  pe_working_set_t *data_set);
177  pe_action_t *then,
178  pe_node_t *node,
179  enum pe_action_flags flags,
180  enum pe_action_flags filter,
181  enum pe_ordering type,
182  pe_working_set_t *data_set);
183 
184 gboolean update_action(pe_action_t *action, pe_working_set_t *data_set);
185 void complex_set_cmds(pe_resource_t * rsc);
186 void pcmk__log_transition_summary(const char *filename);
188  pe_resource_t * rsc, GList *children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set);
189 #endif
void group_append_meta(pe_resource_t *rsc, xmlNode *xml)
enum pe_action_flags clone_action_flags(pe_action_t *action, pe_node_t *node)
void pcmk__bundle_log_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
void clone_append_meta(pe_resource_t *rsc, xmlNode *xml)
enum pe_action_flags pcmk__bundle_action_flags(pe_action_t *action, pe_node_t *node)
void complex_set_cmds(pe_resource_t *rsc)
void pcmk__log_transition_summary(const char *filename)
enum pe_graph_flags(* update_actions)(pe_action_t *, pe_action_t *, pe_node_t *, enum pe_action_flags, enum pe_action_flags, enum pe_ordering, pe_working_set_t *data_set)
resource_alloc_functions_t resource_class_alloc_functions[]
void group_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
void(* internal_constraints)(pe_resource_t *, pe_working_set_t *)
enum pe_graph_flags native_update_actions(pe_action_t *first, pe_action_t *then, pe_node_t *node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type, pe_working_set_t *data_set)
void native_expand(pe_resource_t *rsc, pe_working_set_t *data_set)
enum crm_ais_msg_types type
Definition: cpg.c:48
void native_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
void native_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void pcmk__add_promotion_scores(pe_resource_t *rsc)
GHashTable * pcmk__native_merge_weights(pe_resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, uint32_t flags)
void native_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void pcmk__bundle_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
const char * action
Definition: pcmk_fence.c:30
void promotable_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
void pcmk__bundle_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void native_internal_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
void group_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void promotable_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void native_create_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
gboolean(* create_probe)(pe_resource_t *, pe_node_t *, pe_action_t *, gboolean, pe_working_set_t *)
void create_promotable_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
void clone_expand(pe_resource_t *rsc, pe_working_set_t *data_set)
pe_action_flags
Definition: pe_types.h:291
pe_node_t * pcmk__clone_allocate(pe_resource_t *rsc, pe_node_t *preferred, pe_working_set_t *data_set)
void(* rsc_colocation_lh)(pe_resource_t *, pe_resource_t *, pcmk__colocation_t *, pe_working_set_t *)
enum pe_graph_flags group_update_actions(pe_action_t *first, pe_action_t *then, pe_node_t *node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type, pe_working_set_t *data_set)
gboolean update_action(pe_action_t *action, pe_working_set_t *data_set)
void promote_demote_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
void(* expand)(pe_resource_t *, pe_working_set_t *)
GHashTable * pcmk__group_merge_weights(pe_resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, uint32_t flags)
Wrappers for and extensions to libxml2.
void LogActions(pe_resource_t *rsc, pe_working_set_t *data_set)
pe_graph_flags
Definition: pe_types.h:283
void(* append_meta)(pe_resource_t *rsc, xmlNode *xml)
gboolean native_create_probe(pe_resource_t *rsc, pe_node_t *node, pe_action_t *complete, gboolean force, pe_working_set_t *data_set)
void(* rsc_colocation_rh)(pe_resource_t *, pe_resource_t *, pcmk__colocation_t *, pe_working_set_t *)
enum pe_action_flags(* action_flags)(pe_action_t *, pe_node_t *)
void group_internal_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
pe_node_t * pcmk__bundle_allocate(pe_resource_t *rsc, pe_node_t *preferred, pe_working_set_t *data_set)
void LogNodeActions(pe_working_set_t *data_set)
gboolean pcmk__bundle_create_probe(pe_resource_t *rsc, pe_node_t *node, pe_action_t *complete, gboolean force, pe_working_set_t *data_set)
void clone_create_pseudo_actions(pe_resource_t *rsc, GList *children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t *data_set)
void group_create_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
enum pe_action_flags group_action_flags(pe_action_t *action, pe_node_t *node)
Cluster status and scheduling.
void pcmk__bundle_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
void clone_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
void group_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
pe_weights
void(* rsc_location)(pe_resource_t *, pe__location_t *)
void clone_create_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
void pcmk__bundle_expand(pe_resource_t *rsc, pe_working_set_t *data_set)
gboolean clone_create_probe(pe_resource_t *rsc, pe_node_t *node, pe_action_t *complete, gboolean force, pe_working_set_t *data_set)
void clone_rsc_colocation_lh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
void native_append_meta(pe_resource_t *rsc, xmlNode *xml)
void(* create_actions)(pe_resource_t *, pe_working_set_t *)
void clone_rsc_colocation_rh(pe_resource_t *dependent, pe_resource_t *primary, pcmk__colocation_t *constraint, pe_working_set_t *data_set)
pe_node_t * pcmk__set_instance_roles(pe_resource_t *rsc, pe_working_set_t *data_set)
void clone_internal_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
void group_expand(pe_resource_t *rsc, pe_working_set_t *data_set)
void pcmk__bundle_create_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
enum pe_action_flags native_action_flags(pe_action_t *action, pe_node_t *node)
enum pe_graph_flags pcmk__multi_update_actions(pe_action_t *first, pe_action_t *then, pe_node_t *node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type, pe_working_set_t *data_set)
void pcmk__bundle_internal_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
void pcmk__bundle_append_meta(pe_resource_t *rsc, xmlNode *xml)
pe_ordering
Definition: pe_types.h:483
uint64_t flags
Definition: remote.c:149
pe_node_t * pcmk__native_allocate(pe_resource_t *rsc, pe_node_t *preferred, pe_working_set_t *data_set)
pe_node_t * pcmk__group_allocate(pe_resource_t *rsc, pe_node_t *preferred, pe_working_set_t *data_set)