pacemaker  2.1.9-49aab99839
Scalable High-Availability cluster resource manager
Data Structures | Macros | Typedefs | Enumerations
action_relation_internal.h File Reference
#include <stdint.h>
#include <crm/common/scheduler_types.h>
Include dependency graph for action_relation_internal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pcmk__action_relation_t
 

Macros

#define pcmk__set_relation_flags(ar_flags, flags_to_set)
 
#define pcmk__clear_relation_flags(ar_flags, flags_to_clear)
 

Typedefs

typedef struct pe_action_wrapper_s pcmk__related_action_t
 

Enumerations

enum  pcmk__action_relation_flags {
  pcmk__ar_none = 0U, pcmk__ar_ordered = (1U << 0), pcmk__ar_if_first_unmigratable = (1U << 1), pcmk__ar_then_implies_first = (1U << 4),
  pcmk__ar_first_implies_then = (1U << 5), pcmk__ar_promoted_then_implies_first = (1U << 6), pcmk__ar_unmigratable_then_blocks = (1U << 7), pcmk__ar_unrunnable_first_blocks = (1U << 8),
  pcmk__ar_first_else_then = (1U << 9), pcmk__ar_first_implies_same_node_then = (1U << 10), pcmk__ar_nested_remote_probe = (1U << 11), pcmk__ar_intermediate_stop = (1U << 12),
  pcmk__ar_serialize = (1U << 14), pcmk__ar_if_on_same_node = (1U << 15), pcmk__ar_then_implies_first_graphed = (1U << 16), pcmk__ar_first_implies_then_graphed = (1U << 17),
  pcmk__ar_asymmetric = (1U << 20), pcmk__ar_if_on_same_node_or_target = (1U << 21), pcmk__ar_min_runnable = (1U << 22), pcmk__ar_if_required_on_same_node = (1U << 23),
  pcmk__ar_guest_allowed = (1U << 24), pcmk__ar_then_cancels_first = (1U << 25)
}
 

Macro Definition Documentation

◆ pcmk__clear_relation_flags

#define pcmk__clear_relation_flags (   ar_flags,
  flags_to_clear 
)
Value:
do { \
ar_flags = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \
"Action relation", "constraint", \
ar_flags, (flags_to_clear), \
#flags_to_clear); \
} while (0)
#define LOG_TRACE
Definition: logging.h:38

Definition at line 172 of file action_relation_internal.h.

◆ pcmk__set_relation_flags

#define pcmk__set_relation_flags (   ar_flags,
  flags_to_set 
)
Value:
do { \
ar_flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \
"Action relation", "constraint", \
ar_flags, (flags_to_set), \
#flags_to_set); \
} while (0)
#define LOG_TRACE
Definition: logging.h:38

Definition at line 158 of file action_relation_internal.h.

Typedef Documentation

◆ pcmk__related_action_t

Definition at line 149 of file action_relation_internal.h.

Enumeration Type Documentation

◆ pcmk__action_relation_flags

Flags to indicate the relationship between two actions

The values and semantics of these flags should not be changed until the deprecated enum pe_ordering is dropped from the public API.

Enumerator
pcmk__ar_none 

No relation (compare with equality rather than bit set)

pcmk__ar_ordered 

Actions are ordered (optionally, if no other flags are set)

pcmk__ar_if_first_unmigratable 

Relation applies only if 'first' cannot be part of a live migration.

pcmk__ar_then_implies_first 

If 'then' is required, 'first' becomes required (and becomes unmigratable if 'then' is); also, if 'first' is a stop of a blocked resource, 'then' becomes unrunnable

pcmk__ar_first_implies_then 

If 'first' is required, 'then' becomes required; if 'first' is a stop of a blocked resource, 'then' becomes unrunnable

pcmk__ar_promoted_then_implies_first 

If 'then' is required and for a promoted instance, 'first' becomes required (and becomes unmigratable if 'then' is)

pcmk__ar_unmigratable_then_blocks 

'first' is runnable only if 'then' is both runnable and migratable, and 'first' becomes required if 'then' is

pcmk__ar_unrunnable_first_blocks 

'then' is runnable (and migratable) only if 'first' is runnable

pcmk__ar_first_else_then 

If 'first' is unrunnable, 'then' becomes a real, unmigratable action.

pcmk__ar_first_implies_same_node_then 

If 'first' is required, 'then' action for instance on same node is.

pcmk__ar_nested_remote_probe 

Disable relation if 'first' is unrunnable and for an active resource, otherwise order actions and make 'then' unrunnable if 'first' is.

This is used to order a bundle replica's start of its container before a probe of its remote connection resource, in case the connection uses the REMOTE_CONTAINER_HACK to replace the connection address with where the container is running.

pcmk__ar_intermediate_stop 

If 'first' is for a blocked resource, make 'then' unrunnable.

If 'then' is required, make 'first' required, make 'first' unmigratable if 'then' is unmigratable, and make 'then' unrunnable if 'first' is unrunnable.

If 'then' is unrunnable and for the same resource as 'first', make 'first' required if it is runnable, and make 'first' unmigratable if 'then' is unmigratable.

This is used for "stop then start primitive" (restarts) and "stop group member then stop previous member".

pcmk__ar_serialize 

The actions must be serialized if in the same transition but can be in either order. (In practice, we always arrange them as 'first' then 'then', so they end up being essentially the same as optional orderings.)

Handle more intelligently – for example, we could schedule the action with the fewest inputs first, so we're more likely to execute at least one if there is a failure during the transition. Or, we could prefer certain action types over others, or base it on resource priority.

pcmk__ar_if_on_same_node 

Relation applies only if actions are on same node.

pcmk__ar_then_implies_first_graphed 

If 'then' is required, 'first' must be added to the transition graph.

pcmk__ar_first_implies_then_graphed 

If 'first' is required and runnable, 'then' must be in graph.

pcmk__ar_asymmetric 

User-configured asymmetric ordering.

pcmk__ar_if_on_same_node_or_target 

Actions are ordered if on same node (or migration target for migrate_to)

pcmk__ar_min_runnable 

'then' action is runnable if certain number of 'first' instances are

pcmk__ar_if_required_on_same_node 

Ordering applies only if 'first' is required and on same node as 'then'.

pcmk__ar_guest_allowed 

Ordering applies even if 'first' runs on guest node created by 'then'.

pcmk__ar_then_cancels_first 

If 'then' action becomes required, 'first' becomes optional.

Definition at line 22 of file action_relation_internal.h.