55 rsc->
id, pcmk__node_name(current),
123 if (migrate_to != NULL) {
124 add_migration_meta(migrate_to, current, rsc->
allocated_to);
143 add_migration_meta(migrate_from, current, rsc->
allocated_to);
164 "Scheduling stop%s for %s on %s due to dangling migration",
165 (cleanup?
" and cleanup" :
""), rsc->
id,
166 pcmk__node_name(dangling_source));
190 "%s cannot migrate because " 191 "the configuration does not allow it", rsc->
id);
207 pcmk__rsc_trace(rsc,
"%s cannot migrate because it has a start pending",
214 "%s cannot migrate because " 215 "its current node (%s) is unclean",
216 rsc->
id, pcmk__node_name(current));
222 "%s cannot migrate because " 223 "its next node (%s) is unclean",
247 }
else if (key != NULL) {
266 char *first_task = NULL;
267 char *then_task = NULL;
268 bool then_migratable;
269 bool first_migratable;
272 if ((order->
rsc1 == NULL) || (order->
rsc2 == NULL)
282 if (!first_migratable && !then_migratable) {
287 first_task = task_from_action_or_key(order->
action1, order->
task1);
288 then_task = task_from_action_or_key(order->
action2, order->
task2);
295 if (first_migratable && then_migratable) {
307 if (then_migratable) {
308 if (first_migratable) {
325 }
else if (then_migratable
331 if (first_migratable) {
362 if (then_migratable) {
379 if (then_migratable) {
#define CRM_CHECK(expr, failure_action)
enum rsc_start_requirement needs
pcmk_scheduler_t * cluster
G_GNUC_INTERNAL void pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node, bool optional)
#define PCMK_META_RECORD_PENDING
pcmk_node_t * partial_migration_target
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)
#define stop_action(rsc, node, optional)
#define pcmk__rsc_trace(rsc, fmt, args...)
If 'first' is unrunnable, 'then' becomes a real, unmigratable action.
#define pcmk__insert_meta(obj, name, value)
#define PCMK_ACTION_MONITOR
#define PCMK_ACTION_MIGRATE_TO
void pcmk__create_migration_actions(pcmk_resource_t *rsc, const pcmk_node_t *current)
#define pcmk__set_relation_flags(ar_flags, flags_to_set)
#define PCMK__META_MIGRATE_TARGET
#define PCMK_ACTION_DEMOTE
Actions are ordered (optionally, if no other flags are set)
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
struct pe_node_shared_s * details
#define PCMK_ACTION_START
bool pcmk__rsc_can_migrate(const pcmk_resource_t *rsc, const pcmk_node_t *current)
Wrappers for and extensions to libxml2.
char * pcmk__op_key(const char *rsc_id, const char *op_type, guint interval_ms)
Generate an operation key (RESOURCE_ACTION_INTERVAL)
#define pcmk__str_copy(str)
pcmk_action_t * custom_action(pcmk_resource_t *rsc, char *key, const char *task, const pcmk_node_t *on_node, gboolean optional, pcmk_scheduler_t *scheduler)
Create or update an action object.
#define start_action(rsc, node, optional)
void pcmk__order_migration_equivalents(pcmk__action_relation_t *order)
Relation applies only if 'first' cannot be part of a live migration.
#define PCMK_ACTION_MIGRATE_FROM
gboolean parse_op_key(const char *key, char **rsc_id, char **op_type, guint *interval_ms)
pcmk_node_t * allocated_to
gboolean is_parent(pcmk_resource_t *child, pcmk_resource_t *rsc)
#define PCMK_ACTION_PROMOTE
#define pcmk__set_action_flags(action, flags_to_set)
#define PCMK__META_MIGRATE_SOURCE
void pcmk__abort_dangling_migration(void *data, void *user_data)