22 time_t_string(time_t when) {
32 PCMK__OUTPUT_ARGS(
"failed-fencing-history",
"stonith_history_t *",
"GListPtr",
"gboolean",
"gboolean")
37 gboolean full_history = va_arg(args, gboolean);
38 gboolean print_spacer = va_arg(args, gboolean);
53 out->increment_list(out);
60 PCMK__OUTPUT_ARGS(
"fencing-history",
"stonith_history_t *",
"GListPtr",
"gboolean",
"gboolean")
65 gboolean full_history = va_arg(args, gboolean);
66 gboolean print_spacer = va_arg(args, gboolean);
78 out->increment_list(out);
86 PCMK__OUTPUT_ARGS(
"full-fencing-history",
"crm_exit_t",
"stonith_history_t *",
"GListPtr",
"gboolean",
"gboolean")
92 gboolean full_history = va_arg(args, gboolean);
93 gboolean print_spacer = va_arg(args, gboolean);
104 out->increment_list(out);
111 PCMK__OUTPUT_ARGS(
"full-fencing-history",
"crm_exit_t",
"stonith_history_t *",
"GListPtr",
"gboolean",
"gboolean")
117 gboolean full_history = va_arg(args, gboolean);
118 gboolean print_spacer G_GNUC_UNUSED = va_arg(args, gboolean);
122 if (history_rc == 0) {
130 out->increment_list(out);
136 char *rc_s = crm_itoa(history_rc);
150 const char *
target = va_arg(args,
const char *);
151 time_t when = va_arg(args, time_t);
166 const char *
target = va_arg(args,
const char *);
167 time_t when = va_arg(args, time_t);
181 const char *
target = va_arg(args,
const char *);
182 time_t when = va_arg(args, time_t);
186 char *buf = time_t_string(when);
198 PCMK__OUTPUT_ARGS(
"pending-fencing-actions",
"stonith_history_t *",
"GListPtr",
"gboolean",
"gboolean")
203 gboolean full_history = va_arg(args, gboolean);
204 gboolean print_spacer = va_arg(args, gboolean);
220 out->increment_list(out);
227 PCMK__OUTPUT_ARGS(
"stonith-event",
"stonith_history_t *",
"gboolean",
"gboolean")
231 gboolean full_history = va_arg(args, gboolean);
232 gboolean later_succeeded = va_arg(args, gboolean);
234 switch(event->state) {
236 char *completed_s = time_t_string(event->completed);
238 out->list_item(out,
"successful-stonith-event",
239 "%s of %s successful: delegate=%s, client=%s, origin=%s, %s='%s'",
241 event->delegate ? event->delegate :
"",
242 event->client, event->origin,
243 full_history ?
"completed" :
"last-successful",
250 char *failed_s = time_t_string(event->completed);
252 out->list_item(out,
"failed-stonith-event",
253 "%s of %s failed : delegate=%s, client=%s, origin=%s, %s='%s' %s",
255 event->delegate ? event->delegate :
"",
256 event->client, event->origin,
257 full_history ?
"completed" :
"last-failed",
259 later_succeeded ?
"(a later attempt succeeded)" :
"");
265 out->list_item(out,
"pending-stonith-event",
266 "%s of %s pending: client=%s, origin=%s",
268 event->client, event->origin);
275 PCMK__OUTPUT_ARGS(
"stonith-event",
"stonith_history_t *",
"gboolean",
"gboolean")
279 gboolean full_history = va_arg(args, gboolean);
280 gboolean later_succeeded = va_arg(args, gboolean);
282 char *buf = time_t_string(event->completed);
284 switch (event->state) {
288 event->delegate ? event->delegate :
"",
289 event->client, event->origin,
290 full_history ?
"completed" :
"last-failed", buf,
291 later_succeeded ?
"(a later attempt succeeded)" :
"");
297 event->delegate ? event->delegate :
"",
298 event->client, event->origin,
299 full_history ?
"completed" :
"last-successful", buf);
305 event->client, event->origin);
313 PCMK__OUTPUT_ARGS(
"stonith-event",
"stonith_history_t *",
"gboolean",
"gboolean")
318 gboolean full_history G_GNUC_UNUSED = va_arg(args, gboolean);
319 gboolean later_succeeded G_GNUC_UNUSED = va_arg(args, gboolean);
323 switch (event->state) {
333 char *state = crm_itoa(event->state);
341 if (event->delegate != NULL) {
351 buf = time_t_string(event->completed);
359 PCMK__OUTPUT_ARGS(
"validate",
"const char *",
"const char *",
"char *",
"char *",
"int")
362 const char *agent = va_arg(args,
const char *);
363 const char *device = va_arg(args,
const char *);
364 char *output = va_arg(args,
char *);
365 char *error_output = va_arg(args,
char *);
366 int rc = va_arg(args,
int);
370 rc ?
"failed" :
"succeeded");
375 rc ?
"failed" :
"succeeded");
380 out->subprocess_output(out,
rc, output, error_output);
384 PCMK__OUTPUT_ARGS(
"validate",
"const char *",
"const char *",
"char *",
"char *",
"int")
387 const char *agent = va_arg(args,
const char *);
388 const char *device = va_arg(args,
const char *);
389 char *output = va_arg(args,
char *);
390 char *error_output = va_arg(args,
char *);
391 int rc = va_arg(args,
int);
395 rc ?
"failed" :
"succeeded");
398 rc ?
"failed" :
"succeeded");
412 PCMK__OUTPUT_ARGS(
"validate",
"const char *",
"const char *",
"char *",
"char *",
"int")
417 const char *agent = va_arg(args,
const char *);
418 const char *device = va_arg(args,
const char *);
419 char *output = va_arg(args,
char *);
420 char *error_output = va_arg(args,
char *);
421 int rc = va_arg(args,
int);
424 if (device != NULL) {
430 out->subprocess_output(out,
rc, output, error_output);
int stonith__validate_agent_text(pcmk__output_t *out, va_list args)
struct stonith_history_s * next
int stonith__event_xml(pcmk__output_t *out, va_list args)
int stonith__full_history(pcmk__output_t *out, va_list args)
#define crm_time_log_timeofday
struct crm_time_s crm_time_t
gboolean pcmk__str_in_list(GList *lst, const gchar *s)
int stonith__event_html(pcmk__output_t *out, va_list args)
enum crm_exit_e crm_exit_t
int stonith__last_fenced_text(pcmk__output_t *out, va_list args)
xmlNodePtr pcmk__output_create_html_node(pcmk__output_t *out, const char *element_name, const char *id, const char *class_name, const char *text)
int stonith__validate_agent_html(pcmk__output_t *out, va_list args)
Formatted output for pacemaker tools.
int stonith__history(pcmk__output_t *out, va_list args)
void pcmk__output_xml_push_parent(pcmk__output_t *out, xmlNodePtr node)
const char * stonith_action_str(const char *action)
Turn stonith action into a more readable string.
#define PCMK__OUTPUT_ARGS(ARGS...)
int stonith__event_text(pcmk__output_t *out, va_list args)
int stonith__pending_actions(pcmk__output_t *out, va_list args)
void crm_time_set_timet(crm_time_t *target, time_t *source)
void stonith__register_messages(pcmk__output_t *out)
gboolean stonith__later_succeeded(stonith_history_t *event, stonith_history_t *top_history)
Wrappers for and extensions to libxml2.
void pcmk__indented_printf(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
int stonith__full_history_xml(pcmk__output_t *out, va_list args)
int stonith__validate_agent_xml(pcmk__output_t *out, va_list args)
int stonith__last_fenced_xml(pcmk__output_t *out, va_list args)
#define crm_time_log_with_timezone
void pcmk__output_xml_pop_parent(pcmk__output_t *out)
char * crm_time_as_string(crm_time_t *dt, int flags)
const xmlChar * pcmkXmlStr
#define PCMK__OUTPUT_LIST_FOOTER(out_obj, retcode)
#define PCMK__OUTPUT_LIST_HEADER(out_obj, cond, retcode, title...)
crm_time_t * crm_time_new(const char *string)
This structure contains everything that makes up a single output formatter.
int stonith__last_fenced_html(pcmk__output_t *out, va_list args)
void pcmk__register_messages(pcmk__output_t *out, pcmk__message_entry_t *table)
xmlNodePtr pcmk__output_create_xml_node(pcmk__output_t *out, const char *name)
int stonith__failed_history(pcmk__output_t *out, va_list args)
char * crm_strdup_printf(char const *format,...) __attribute__((__format__(__printf__
#define crm_time_log_date
void crm_time_free(crm_time_t *dt)