pacemaker  2.0.4-2deceaa3ae
Scalable High-Availability cluster resource manager
alerts_internal.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2020 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 ALERT_INTERNAL_H
11 #define ALERT_INTERNAL_H
12 
13 #include <glib.h>
14 #include <stdbool.h>
15 
16 /* Default-Timeout to use before killing a alerts script (in milliseconds) */
17 # define PCMK__ALERT_DEFAULT_TIMEOUT_MS (30000)
18 
19 /* Default-Format-String used to pass timestamps to the alerts scripts */
20 # define PCMK__ALERT_DEFAULT_TSTAMP_FORMAT "%H:%M:%S.%06N"
21 
24  pcmk__alert_node = (1 << 0),
25  pcmk__alert_fencing = (1 << 1),
30 };
31 
32 typedef struct {
33  char *id;
34  char *path;
36  char *recipient;
38  GHashTable *envvars;
39  int timeout;
40  uint32_t flags;
42 
65 };
66 
67 #define PCMK__ALERT_INTERNAL_KEY_MAX 19
68 #define PCMK__ALERT_NODE_SEQUENCE "CRM_alert_node_sequence"
69 
70 extern const char *pcmk__alert_keys[PCMK__ALERT_INTERNAL_KEY_MAX][3];
71 
73 pcmk__alert_t *pcmk__alert_new(const char *id, const char *path);
74 void pcmk__free_alert(pcmk__alert_t *entry);
75 void pcmk__add_alert_key(GHashTable *table, enum pcmk__alert_keys_e name,
76  const char *value);
77 void pcmk__add_alert_key_int(GHashTable *table, enum pcmk__alert_keys_e name,
78  int value);
79 bool pcmk__alert_in_patchset(xmlNode *msg, bool config);
80 
81 static inline const char *
82 pcmk__alert_flag2text(enum pcmk__alert_flags flag)
83 {
84  switch (flag) {
85  case pcmk__alert_node: return "node";
86  case pcmk__alert_fencing: return "fencing";
87  case pcmk__alert_resource: return "resource";
88  case pcmk__alert_attribute: return "attribute";
89  default: return "unknown";
90  }
91 }
92 #endif
PCMK__alert_key_target_rc
@ PCMK__alert_key_target_rc
Definition: alerts_internal.h:52
pcmk__add_alert_key
void pcmk__add_alert_key(GHashTable *table, enum pcmk__alert_keys_e name, const char *value)
Definition: alerts.c:152
pcmk__alert_t::path
char * path
Definition: alerts_internal.h:34
pcmk__alert_keys
const char * pcmk__alert_keys[PCMK__ALERT_INTERNAL_KEY_MAX][3]
Definition: alerts.c:21
PCMK__alert_key_rsc
@ PCMK__alert_key_rsc
Definition: alerts_internal.h:47
PCMK__alert_key_rc
@ PCMK__alert_key_rc
Definition: alerts_internal.h:53
PCMK__alert_key_timestamp_usec
@ PCMK__alert_key_timestamp_usec
Definition: alerts_internal.h:61
PCMK__alert_key_attribute_value
@ PCMK__alert_key_attribute_value
Definition: alerts_internal.h:59
PCMK__alert_key_exec_time
@ PCMK__alert_key_exec_time
Definition: alerts_internal.h:62
pcmk__alert_attribute
@ pcmk__alert_attribute
Definition: alerts_internal.h:27
PCMK__alert_key_task
@ PCMK__alert_key_task
Definition: alerts_internal.h:48
PCMK__alert_key_recipient
@ PCMK__alert_key_recipient
Definition: alerts_internal.h:44
pcmk__alert_default
@ pcmk__alert_default
Definition: alerts_internal.h:28
pcmk__alert_t::id
char * id
Definition: alerts_internal.h:33
pcmk__alert_t::tstamp_format
char * tstamp_format
Definition: alerts_internal.h:35
pcmk__alert_in_patchset
bool pcmk__alert_in_patchset(xmlNode *msg, bool config)
Definition: alerts.c:198
pcmk__alert_t::select_attribute_name
char ** select_attribute_name
Definition: alerts_internal.h:37
pcmk__alert_fencing
@ pcmk__alert_fencing
Definition: alerts_internal.h:25
pcmk__add_alert_key_int
void pcmk__add_alert_key_int(GHashTable *table, enum pcmk__alert_keys_e name, int value)
Definition: alerts.c:166
PCMK__alert_key_version
@ PCMK__alert_key_version
Definition: alerts_internal.h:55
pcmk__alert_t
Definition: alerts_internal.h:32
pcmk__alert_t::flags
uint32_t flags
Definition: alerts_internal.h:40
pcmk__dup_alert
pcmk__alert_t * pcmk__dup_alert(pcmk__alert_t *entry)
Definition: alerts.c:132
PCMK__alert_key_desc
@ PCMK__alert_key_desc
Definition: alerts_internal.h:50
pcmk__alert_keys_e
pcmk__alert_keys_e
Definition: alerts_internal.h:43
pcmk__alert_t::recipient
char * recipient
Definition: alerts_internal.h:36
PCMK__alert_key_node_sequence
@ PCMK__alert_key_node_sequence
Definition: alerts_internal.h:56
pcmk__free_alert
void pcmk__free_alert(pcmk__alert_t *entry)
Definition: alerts.c:107
pcmk__alert_t::envvars
GHashTable * envvars
Definition: alerts_internal.h:38
PCMK__ALERT_INTERNAL_KEY_MAX
#define PCMK__ALERT_INTERNAL_KEY_MAX
Definition: alerts_internal.h:67
PCMK__alert_key_timestamp
@ PCMK__alert_key_timestamp
Definition: alerts_internal.h:57
PCMK__alert_key_select_kind
@ PCMK__alert_key_select_kind
Definition: alerts_internal.h:63
pcmk__alert_none
@ pcmk__alert_none
Definition: alerts_internal.h:23
PCMK__alert_key_nodeid
@ PCMK__alert_key_nodeid
Definition: alerts_internal.h:46
pcmk__alert_flags
pcmk__alert_flags
Definition: alerts_internal.h:22
PCMK__alert_key_select_attribute_name
@ PCMK__alert_key_select_attribute_name
Definition: alerts_internal.h:64
pcmk__alert_t::timeout
int timeout
Definition: alerts_internal.h:39
pcmk__alert_new
pcmk__alert_t * pcmk__alert_new(const char *id, const char *path)
Create a new alert entry structure.
Definition: alerts.c:94
pcmk__alert_resource
@ pcmk__alert_resource
Definition: alerts_internal.h:26
pcmk__alert_node
@ pcmk__alert_node
Definition: alerts_internal.h:24
PCMK__alert_key_interval
@ PCMK__alert_key_interval
Definition: alerts_internal.h:49
name
char * name
Definition: pcmk_fence.c:30
PCMK__alert_key_kind
@ PCMK__alert_key_kind
Definition: alerts_internal.h:54
PCMK__alert_key_node
@ PCMK__alert_key_node
Definition: alerts_internal.h:45
PCMK__alert_key_timestamp_epoch
@ PCMK__alert_key_timestamp_epoch
Definition: alerts_internal.h:60
PCMK__alert_key_status
@ PCMK__alert_key_status
Definition: alerts_internal.h:51
PCMK__alert_key_attribute_name
@ PCMK__alert_key_attribute_name
Definition: alerts_internal.h:58