pacemaker  2.0.3-4b1f869f0f
Scalable High-Availability cluster resource manager
pcmki_sched_allocate.h
Go to the documentation of this file.
1 /*
2  * Copyright 2004-2019 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) (resource_t *, const char *, GHashTable *, const char *, float,
22  enum pe_weights);
23  node_t *(*allocate) (resource_t *, node_t *, pe_working_set_t *);
25  gboolean(*create_probe) (resource_t *, node_t *, action_t *, gboolean, pe_working_set_t *);
27 
32 
34 
37  pe_node_t *, enum pe_action_flags,
38  enum pe_action_flags,
39  enum pe_ordering,
40  pe_working_set_t *data_set);
41 
43  void (*append_meta) (resource_t * rsc, xmlNode * xml);
44 };
45 
46 extern GHashTable *rsc_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
47  const char *attr, float factor, enum pe_weights flags);
48 
49 extern GHashTable *clone_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
50  const char *attr, float factor, enum pe_weights flags);
51 
52 GHashTable *pcmk__bundle_merge_weights(pe_resource_t *rsc, const char *rhs,
53  GHashTable *nodes, const char *attr,
54  float factor, enum pe_weights flags);
55 
56 extern GHashTable *native_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
57  const char *attr, float factor, enum pe_weights flags);
58 
59 extern GHashTable *group_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes,
60  const char *attr, float factor, enum pe_weights flags);
61 
62 extern node_t *native_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set);
63 extern void native_create_actions(resource_t * rsc, pe_working_set_t * data_set);
64 extern void native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set);
66  rsc_colocation_t *constraint,
67  pe_working_set_t *data_set);
69  rsc_colocation_t *constraint,
70  pe_working_set_t *data_set);
71 extern void rsc_ticket_constraint(resource_t * lh_rsc, rsc_ticket_t * rsc_ticket,
72  pe_working_set_t * data_set);
73 extern enum pe_action_flags native_action_flags(action_t * action, node_t * node);
74 
75 void native_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
76 extern void native_expand(resource_t * rsc, pe_working_set_t * data_set);
77 extern gboolean native_create_probe(resource_t * rsc, node_t * node, action_t * complete,
78  gboolean force, pe_working_set_t * data_set);
79 extern void native_append_meta(resource_t * rsc, xmlNode * xml);
80 
81 extern node_t *group_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set);
82 extern void group_create_actions(resource_t * rsc, pe_working_set_t * data_set);
83 extern void group_internal_constraints(resource_t * rsc, pe_working_set_t * data_set);
85  rsc_colocation_t *constraint,
86  pe_working_set_t *data_set);
88  rsc_colocation_t *constraint,
89  pe_working_set_t *data_set);
90 extern enum pe_action_flags group_action_flags(action_t * action, node_t * node);
91 void group_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
92 extern void group_expand(resource_t * rsc, pe_working_set_t * data_set);
93 extern void group_append_meta(resource_t * rsc, xmlNode * xml);
94 
96  pe_working_set_t *data_set);
98  pe_working_set_t *data_set);
100  pe_action_t *complete, gboolean force,
101  pe_working_set_t *data_set);
103  pe_working_set_t *data_set);
105  pe_resource_t *rh_rsc,
106  rsc_colocation_t *constraint,
107  pe_working_set_t *data_set);
109  pe_resource_t *rh_rsc,
110  rsc_colocation_t *constraint,
111  pe_working_set_t *data_set);
114  pe_node_t *node);
116 void pcmk__bundle_append_meta(pe_resource_t *rsc, xmlNode *xml);
117 
118 extern node_t *clone_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set);
119 extern void clone_create_actions(resource_t * rsc, pe_working_set_t * data_set);
120 extern void clone_internal_constraints(resource_t * rsc, pe_working_set_t * data_set);
122  rsc_colocation_t *constraint,
123  pe_working_set_t *data_set);
125  rsc_colocation_t *constraint,
126  pe_working_set_t *data_set);
127 void clone_rsc_location(pe_resource_t *rsc, pe__location_t *constraint);
128 extern enum pe_action_flags clone_action_flags(action_t * action, node_t * node);
129 extern void clone_expand(resource_t * rsc, pe_working_set_t * data_set);
130 extern gboolean clone_create_probe(resource_t * rsc, node_t * node, action_t * complete,
131  gboolean force, pe_working_set_t * data_set);
132 extern void clone_append_meta(resource_t * rsc, xmlNode * xml);
133 
134 void apply_master_prefs(resource_t *rsc);
139 void promotable_colocation_rh(resource_t *lh_rsc, resource_t *rh_rsc,
140  rsc_colocation_t *constraint,
141  pe_working_set_t *data_set);
142 
143 /* extern resource_object_functions_t resource_variants[]; */
145 
146 extern gboolean unpack_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set);
147 
148 extern gboolean unpack_rsc_colocation(xmlNode * xml_obj, pe_working_set_t * data_set);
149 
150 extern gboolean unpack_location(xmlNode * xml_obj, pe_working_set_t * data_set);
151 
152 extern gboolean unpack_rsc_ticket(xmlNode * xml_obj, pe_working_set_t * data_set);
153 
154 void LogNodeActions(pe_working_set_t * data_set, gboolean terminal);
155 void LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal);
157  gboolean terminal);
158 
159 extern void rsc_stonith_ordering(resource_t * rsc, action_t * stonith_op,
160  pe_working_set_t * data_set);
161 
163  pe_node_t *node,
164  enum pe_action_flags flags,
165  enum pe_action_flags filter,
166  enum pe_ordering type,
167  pe_working_set_t *data_set);
169  pe_node_t *node,
170  enum pe_action_flags flags,
171  enum pe_action_flags filter,
172  enum pe_ordering type,
173  pe_working_set_t *data_set);
175  pe_action_t *then,
176  pe_node_t *node,
177  enum pe_action_flags flags,
178  enum pe_action_flags filter,
179  enum pe_ordering type,
180  pe_working_set_t *data_set);
181 
182 gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line);
183 gboolean update_action(pe_action_t *action, pe_working_set_t *data_set);
184 void complex_set_cmds(resource_t * rsc);
185 void pcmk__log_transition_summary(const char *filename);
187  resource_t * rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set);
188 #endif
pe_action_flags
pe_action_flags
Definition: pe_types.h:267
clone_rsc_location
void clone_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
Definition: pcmk_sched_clone.c:1214
clone_rsc_colocation_rh
void clone_rsc_colocation_rh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:1029
GListPtr
GList * GListPtr
Definition: crm.h:215
resource_alloc_functions_s::append_meta
void(* append_meta)(resource_t *rsc, xmlNode *xml)
Definition: pcmki_sched_allocate.h:43
group_create_actions
void group_create_actions(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:79
resource_alloc_functions_s::rsc_location
void(* rsc_location)(pe_resource_t *, pe__location_t *)
Definition: pcmki_sched_allocate.h:33
group_merge_weights
GHashTable * group_merge_weights(resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, enum pe_weights flags)
Definition: pcmk_sched_group.c:483
native_expand
void native_expand(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:2230
pcmk__bundle_action_flags
enum pe_action_flags pcmk__bundle_action_flags(pe_action_t *action, pe_node_t *node)
Definition: pcmk_sched_bundle.c:542
group_action_flags
enum pe_action_flags group_action_flags(action_t *action, node_t *node)
Definition: pcmk_sched_group.c:372
flags
uint64_t flags
Definition: remote.c:5
promote_demote_constraints
void promote_demote_constraints(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_promotable.c:869
resource_alloc_functions_s::create_actions
void(* create_actions)(resource_t *, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:24
pcmk__bundle_internal_constraints
void pcmk__bundle_internal_constraints(pe_resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:244
clone_create_actions
void clone_create_actions(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:805
clone_create_probe
gboolean clone_create_probe(resource_t *rsc, node_t *node, action_t *complete, gboolean force, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:1383
type
enum crm_ais_msg_types type
Definition: internal.h:5
internal.h
clone_create_pseudo_actions
void clone_create_pseudo_actions(resource_t *rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:818
clone_action_flags
enum pe_action_flags clone_action_flags(action_t *action, node_t *node)
Definition: pcmk_sched_clone.c:1208
native_rsc_location
void native_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
Definition: pcmk_sched_native.c:2165
unpack_rsc_colocation
gboolean unpack_rsc_colocation(xmlNode *xml_obj, pe_working_set_t *data_set)
Definition: pcmk_sched_constraints.c:2638
group_color
node_t * group_color(resource_t *rsc, node_t *preferred, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:18
group_internal_constraints
void group_internal_constraints(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:162
xml.h
Wrappers for and extensions to libxml2.
resource_alloc_functions_s::update_actions
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)
Definition: pcmki_sched_allocate.h:36
pcmk__bundle_create_actions
void pcmk__bundle_create_actions(pe_resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:195
native_merge_weights
GHashTable * native_merge_weights(resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, enum pe_weights flags)
Definition: pcmk_sched_native.c:297
native_rsc_colocation_lh
void native_rsc_colocation_lh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:1589
native_update_actions
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)
Definition: pcmk_sched_native.c:2010
clone_color
node_t * clone_color(resource_t *rsc, node_t *preferred, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:591
pcmk__bundle_color
pe_node_t * pcmk__bundle_color(pe_resource_t *rsc, pe_node_t *preferred, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:101
pcmk__bundle_merge_weights
GHashTable * pcmk__bundle_merge_weights(pe_resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, enum pe_weights flags)
Definition: pcmk_sched_bundle.c:1046
complex.h
pe_weights
pe_weights
Definition: pcmki_scheduler.h:32
promotable_colocation_rh
void promotable_colocation_rh(resource_t *lh_rsc, resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_promotable.c:948
pcmk__bundle_append_meta
void pcmk__bundle_append_meta(pe_resource_t *rsc, xmlNode *xml)
Definition: pcmk_sched_bundle.c:1041
pe_action_s
Definition: pe_types.h:371
resource_alloc_functions_s::create_probe
gboolean(* create_probe)(resource_t *, node_t *, action_t *, gboolean, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:25
update_action_flags
gboolean update_action_flags(action_t *action, enum pe_action_flags flags, const char *source, int line)
Definition: pcmk_sched_allocate.c:119
clone_expand
void clone_expand(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:1230
create_promotable_actions
void create_promotable_actions(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_promotable.c:786
resource_class_alloc_functions
resource_alloc_functions_t resource_class_alloc_functions[]
Definition: pcmk_sched_allocate.c:59
group_append_meta
void group_append_meta(resource_t *rsc, xmlNode *xml)
Definition: pcmk_sched_group.c:515
native_create_actions
void native_create_actions(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:1119
resource_alloc_functions_s::rsc_colocation_rh
void(* rsc_colocation_rh)(pe_resource_t *, pe_resource_t *, rsc_colocation_t *, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:30
resource_alloc_functions_s::expand
void(* expand)(resource_t *, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:42
native_rsc_colocation_rh
void native_rsc_colocation_rh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:1799
pcmk__log_transition_summary
void pcmk__log_transition_summary(const char *filename)
Definition: pcmk_sched_allocate.c:2800
unpack_location
gboolean unpack_location(xmlNode *xml_obj, pe_working_set_t *data_set)
Definition: pcmk_sched_constraints.c:990
unpack_rsc_order
gboolean unpack_rsc_order(xmlNode *xml_obj, pe_working_set_t *data_set)
Definition: pcmk_sched_constraints.c:2139
pe_working_set_s
Definition: pe_types.h:118
resource_alloc_functions_s
Definition: pcmki_sched_allocate.h:20
pcmk__multi_update_actions
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)
Definition: pcmk_sched_bundle.c:799
promotable_constraints
void promotable_constraints(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_promotable.c:895
group_rsc_colocation_lh
void group_rsc_colocation_lh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:282
color_promotable
node_t * color_promotable(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_promotable.c:632
resource_alloc_functions_s::rsc_colocation_lh
void(* rsc_colocation_lh)(pe_resource_t *, pe_resource_t *, rsc_colocation_t *, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:28
pe_graph_flags
pe_graph_flags
Definition: pe_types.h:259
unpack_rsc_ticket
gboolean unpack_rsc_ticket(xmlNode *xml_obj, pe_working_set_t *data_set)
Definition: pcmk_sched_constraints.c:2964
rsc_colocation_s
Definition: pcmki_scheduler.h:40
pcmk__bundle_rsc_location
void pcmk__bundle_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
Definition: pcmk_sched_bundle.c:852
clone_append_meta
void clone_append_meta(resource_t *rsc, xmlNode *xml)
Definition: pcmk_sched_clone.c:1423
native_internal_constraints
void native_internal_constraints(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:1376
group_rsc_colocation_rh
void group_rsc_colocation_rh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:324
apply_master_prefs
void apply_master_prefs(resource_t *rsc)
Definition: pcmk_sched_promotable.c:534
group_update_actions
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)
Definition: pcmk_sched_group.c:413
rsc_stonith_ordering
void rsc_stonith_ordering(resource_t *rsc, action_t *stonith_op, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:3254
rsc_merge_weights
GHashTable * rsc_merge_weights(resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, enum pe_weights flags)
Definition: pcmk_sched_native.c:304
resource_alloc_functions_s::internal_constraints
void(* internal_constraints)(resource_t *, pe_working_set_t *)
Definition: pcmki_sched_allocate.h:26
pcmk__bundle_log_actions
void pcmk__bundle_log_actions(pe_resource_t *rsc, pe_working_set_t *data_set, gboolean terminal)
Definition: pcmk_sched_bundle.c:1054
native_action_flags
enum pe_action_flags native_action_flags(action_t *action, node_t *node)
Definition: pcmk_sched_native.c:1931
group_expand
void group_expand(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_group.c:468
LogNodeActions
void LogNodeActions(pe_working_set_t *data_set, gboolean terminal)
Definition: pcmk_sched_allocate.c:2933
pcmk__bundle_rsc_colocation_rh
void pcmk__bundle_rsc_colocation_rh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:463
group_rsc_location
void group_rsc_location(pe_resource_t *rsc, pe__location_t *constraint)
Definition: pcmk_sched_group.c:439
clone_merge_weights
GHashTable * clone_merge_weights(resource_t *rsc, const char *rhs, GHashTable *nodes, const char *attr, float factor, enum pe_weights flags)
Definition: pcmk_sched_clone.c:1469
clone_rsc_colocation_lh
void clone_rsc_colocation_lh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:1017
native_color
node_t * native_color(resource_t *rsc, node_t *preferred, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:437
pe_resource_s
Definition: pe_types.h:293
rsc_ticket_s
Definition: pcmki_scheduler.h:59
pe__location_constraint_s
Definition: internal.h:28
native_create_probe
gboolean native_create_probe(resource_t *rsc, node_t *node, action_t *complete, gboolean force, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:2784
update_action
gboolean update_action(pe_action_t *action, pe_working_set_t *data_set)
Definition: pcmk_sched_graph.c:512
pcmk__bundle_expand
void pcmk__bundle_expand(pe_resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:884
LogActions
void LogActions(resource_t *rsc, pe_working_set_t *data_set, gboolean terminal)
Definition: pcmk_sched_native.c:2378
native_append_meta
void native_append_meta(resource_t *rsc, xmlNode *xml)
Definition: pcmk_sched_native.c:3332
pcmk__bundle_create_probe
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)
Definition: pcmk_sched_bundle.c:947
rsc_ticket_constraint
void rsc_ticket_constraint(resource_t *lh_rsc, rsc_ticket_t *rsc_ticket, pe_working_set_t *data_set)
Definition: pcmk_sched_native.c:1841
notify_data_s
Definition: internal.h:51
pe_node_s
Definition: pe_types.h:217
status.h
Cluster status and scheduling.
clone_internal_constraints
void clone_internal_constraints(resource_t *rsc, pe_working_set_t *data_set)
Definition: pcmk_sched_clone.c:880
pcmki_scheduler.h
pcmk__bundle_rsc_colocation_lh
void pcmk__bundle_rsc_colocation_lh(pe_resource_t *lh_rsc, pe_resource_t *rh_rsc, rsc_colocation_t *constraint, pe_working_set_t *data_set)
Definition: pcmk_sched_bundle.c:419
resource_alloc_functions_s::action_flags
enum pe_action_flags(* action_flags)(action_t *, node_t *)
Definition: pcmki_sched_allocate.h:35
pe_ordering
pe_ordering
Definition: pe_types.h:448
complex_set_cmds
void complex_set_cmds(resource_t *rsc)
Definition: pcmk_sched_allocate.c:767