pacemaker  2.0.3-4b1f869f0f
Scalable High-Availability cluster resource manager
pcmki_transition.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 CRM_TRANSITION__H
11 # define CRM_TRANSITION__H
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #include <glib.h>
18 #include <crm/crm.h>
19 #include <crm/msg_xml.h>
20 #include <crm/common/xml.h>
21 
22 typedef enum {
27 
29 typedef struct crm_graph_s crm_graph_t;
30 
31 typedef struct synapse_s {
32  int id;
33  int priority;
34 
35  gboolean ready;
36  gboolean failed;
37  gboolean executed;
38  gboolean confirmed;
39 
40  GListPtr actions; /* crm_action_t* */
41  GListPtr inputs; /* crm_action_t* */
42 } synapse_t;
43 
44 typedef struct crm_action_s {
45  int id;
46  int timeout;
47  guint interval_ms;
48  GHashTable *params;
50 
53 
54  gboolean sent_update; /* sent to the CIB */
55  gboolean executed; /* sent to the CRM */
56  gboolean confirmed;
57 
58  gboolean failed;
59  gboolean can_fail;
60 
61  xmlNode *xml;
62 
63 } crm_action_t;
64 
65 struct te_timer_s {
66  int source_id;
67  int timeout;
69 };
70 
71 /* order matters here */
77 };
78 
79 struct crm_graph_s {
80  int id;
81  char *source;
83 
84  gboolean complete;
85  const char *abort_reason;
87 
90 
94 
95  int fired;
96  int pending;
97  int skipped;
98  int completed;
100 
101  GListPtr synapses; /* synapse_t* */
102 
104 };
105 
106 typedef struct crm_graph_functions_s {
107  gboolean(*pseudo) (crm_graph_t * graph, crm_action_t * action);
108  gboolean(*rsc) (crm_graph_t * graph, crm_action_t * action);
109  gboolean(*crmd) (crm_graph_t * graph, crm_action_t * action);
110  gboolean(*stonith) (crm_graph_t * graph, crm_action_t * action);
111  gboolean(*allowed) (crm_graph_t * graph, crm_action_t * action);
113 
116  transition_pending, /* active but no actions performed this time */
122 };
123 
124 void set_default_graph_functions(void);
126 crm_graph_t *unpack_graph(xmlNode * xml_graph, const char *reference);
127 int run_graph(crm_graph_t * graph);
128 gboolean update_graph(crm_graph_t * graph, crm_action_t * action);
129 void destroy_graph(crm_graph_t * graph);
130 const char *transition_status(enum transition_status state);
131 void print_graph(unsigned int log_level, crm_graph_t * graph);
132 void print_action(int log_level, const char *prefix, crm_action_t * action);
133 bool update_abort_priority(crm_graph_t * graph, int priority,
134  enum transition_action action, const char *abort_reason);
135 const char *actiontype2text(action_type_e type);
136 lrmd_event_data_t *convert_graph_action(xmlNode * resource, crm_action_t * action, int status,
137  int rc);
138 
139 #ifdef __cplusplus
140 }
141 #endif
142 
143 #endif
crm_graph_s::source
char * source
Definition: pcmki_transition.h:81
crm_action_s::synapse
synapse_t * synapse
Definition: pcmki_transition.h:52
GListPtr
GList * GListPtr
Definition: crm.h:214
crm_graph_functions_s::pseudo
gboolean(* pseudo)(crm_graph_t *graph, crm_action_t *action)
Definition: pcmki_transition.h:107
synapse_s::confirmed
gboolean confirmed
Definition: pcmki_transition.h:38
transition_action_failed
@ transition_action_failed
Definition: pcmki_transition.h:120
crm_action_s::failed
gboolean failed
Definition: pcmki_transition.h:58
synapse_t
struct synapse_s synapse_t
msg_xml.h
crm_graph_s::batch_limit
int batch_limit
Definition: pcmki_transition.h:91
crm_action_s
Definition: pcmki_transition.h:44
te_timer_s::timeout
int timeout
Definition: pcmki_transition.h:67
transition_pending
@ transition_pending
Definition: pcmki_transition.h:116
print_graph
void print_graph(unsigned int log_level, crm_graph_t *graph)
Definition: pcmk_trans_utils.c:236
crm_graph_functions_t
struct crm_graph_functions_s crm_graph_functions_t
crm_action_s::id
int id
Definition: pcmki_transition.h:45
update_graph
gboolean update_graph(crm_graph_t *graph, crm_action_t *action)
Definition: pcmk_trans_graph.c:91
set_graph_functions
void set_graph_functions(crm_graph_functions_t *fns)
Definition: pcmk_trans_utils.c:59
crm_graph_s::id
int id
Definition: pcmki_transition.h:80
transition_complete
@ transition_complete
Definition: pcmki_transition.h:117
action_type_e
action_type_e
Definition: pcmki_transition.h:22
crm_graph_functions_s::allowed
gboolean(* allowed)(crm_graph_t *graph, crm_action_t *action)
Definition: pcmki_transition.h:111
synapse_s
Definition: pcmki_transition.h:31
synapse_s::id
int id
Definition: pcmki_transition.h:32
crm_graph_functions_s::crmd
gboolean(* crmd)(crm_graph_t *graph, crm_action_t *action)
Definition: pcmki_transition.h:109
type
enum crm_ais_msg_types type
Definition: internal.h:5
tg_shutdown
@ tg_shutdown
Definition: pcmki_transition.h:76
unpack_graph
crm_graph_t * unpack_graph(xmlNode *xml_graph, const char *reference)
Definition: pcmk_trans_unpack.c:163
crm_graph_functions_s::stonith
gboolean(* stonith)(crm_graph_t *graph, crm_action_t *action)
Definition: pcmki_transition.h:110
convert_graph_action
lrmd_event_data_t * convert_graph_action(xmlNode *resource, crm_action_t *action, int status, int rc)
Definition: pcmk_trans_unpack.c:287
crm_graph_s::synapses
GListPtr synapses
Definition: pcmki_transition.h:101
crm_graph_s::abort_reason
const char * abort_reason
Definition: pcmki_transition.h:85
crm_graph_s::num_synapses
int num_synapses
Definition: pcmki_transition.h:89
tg_done
@ tg_done
Definition: pcmki_transition.h:73
crm_action_s::sent_update
gboolean sent_update
Definition: pcmki_transition.h:54
xml.h
Wrappers for and extensions to libxml2.
action_type_pseudo
@ action_type_pseudo
Definition: pcmki_transition.h:23
crm_action_s::xml
xmlNode * xml
Definition: pcmki_transition.h:61
crm_graph_s::num_actions
int num_actions
Definition: pcmki_transition.h:88
crm_action_s::type
action_type_e type
Definition: pcmki_transition.h:49
tg_stop
@ tg_stop
Definition: pcmki_transition.h:74
synapse_s::priority
int priority
Definition: pcmki_transition.h:33
actiontype2text
const char * actiontype2text(action_type_e type)
Definition: pcmk_trans_utils.c:94
crm_action_s::timeout
int timeout
Definition: pcmki_transition.h:46
crm_graph_s::completed
int completed
Definition: pcmki_transition.h:98
crm_graph_s::network_delay
guint network_delay
Definition: pcmki_transition.h:92
crm_graph_functions_s::rsc
gboolean(* rsc)(crm_graph_t *graph, crm_action_t *action)
Definition: pcmki_transition.h:108
te_timer_s
Definition: pcmki_transition.h:65
crm_graph_s::completion_action
enum transition_action completion_action
Definition: pcmki_transition.h:86
te_timer_s::action
crm_action_t * action
Definition: pcmki_transition.h:68
synapse_s::ready
gboolean ready
Definition: pcmki_transition.h:35
lrmd_event_data_s
Definition: lrmd.h:198
te_timer_s::source_id
int source_id
Definition: pcmki_transition.h:66
crm_graph_s::pending
int pending
Definition: pcmki_transition.h:96
synapse_s::failed
gboolean failed
Definition: pcmki_transition.h:36
tg_restart
@ tg_restart
Definition: pcmki_transition.h:75
crm_graph_s::abort_priority
int abort_priority
Definition: pcmki_transition.h:82
transition_failed
@ transition_failed
Definition: pcmki_transition.h:121
transition_status
transition_status
Definition: pcmki_transition.h:114
transition_action
transition_action
Definition: pcmki_transition.h:72
transition_stopped
@ transition_stopped
Definition: pcmki_transition.h:118
crm_action_s::timer
crm_action_timer_t * timer
Definition: pcmki_transition.h:51
crm_action_s::params
GHashTable * params
Definition: pcmki_transition.h:48
crm_graph_s::migration_limit
int migration_limit
Definition: pcmki_transition.h:103
print_action
void print_action(int log_level, const char *prefix, crm_action_t *action)
Definition: pcmk_trans_utils.c:230
crm_action_s::interval_ms
guint interval_ms
Definition: pcmki_transition.h:47
crm_action_t
struct crm_action_s crm_action_t
crm_graph_functions_s
Definition: pcmki_transition.h:106
update_abort_priority
bool update_abort_priority(crm_graph_t *graph, int priority, enum transition_action action, const char *abort_reason)
Definition: pcmk_trans_utils.c:276
synapse_s::inputs
GListPtr inputs
Definition: pcmki_transition.h:41
run_graph
int run_graph(crm_graph_t *graph)
Definition: pcmk_trans_graph.c:236
crm_action_s::confirmed
gboolean confirmed
Definition: pcmki_transition.h:56
crm_action_s::can_fail
gboolean can_fail
Definition: pcmki_transition.h:59
transition_terminated
@ transition_terminated
Definition: pcmki_transition.h:119
action_type_rsc
@ action_type_rsc
Definition: pcmki_transition.h:24
crm_graph_s::incomplete
int incomplete
Definition: pcmki_transition.h:99
transition_active
@ transition_active
Definition: pcmki_transition.h:115
crm_action_s::executed
gboolean executed
Definition: pcmki_transition.h:55
crm_graph_s::fired
int fired
Definition: pcmki_transition.h:95
destroy_graph
void destroy_graph(crm_graph_t *graph)
Definition: pcmk_trans_unpack.c:270
crm.h
A dumping ground.
set_default_graph_functions
void set_default_graph_functions(void)
Definition: pcmk_trans_utils.c:53
synapse_s::actions
GListPtr actions
Definition: pcmki_transition.h:40
crm_graph_s::complete
gboolean complete
Definition: pcmki_transition.h:84
crm_graph_s::stonith_timeout
guint stonith_timeout
Definition: pcmki_transition.h:93
action_type_crm
@ action_type_crm
Definition: pcmki_transition.h:25
synapse_s::executed
gboolean executed
Definition: pcmki_transition.h:37
crm_graph_s::skipped
int skipped
Definition: pcmki_transition.h:97
crm_graph_s
Definition: pcmki_transition.h:79