pacemaker 2.1.8-2.1.8
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
probes.c
Go to the documentation of this file.
1/*
2 * Copyright 2004-2024 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#include <crm_internal.h> // pcmk__str_eq(), etc.
11
12#include <stdio.h> // NULL
13#include <stdbool.h> // bool, true, false
14#include <glib.h> // guint
15#include <libxml/tree.h> // xmlNode
16
17#include <crm/common/options.h> // PCMK_META_INTERVAL
18#include <crm/common/xml.h> // PCMK_XA_OPERATION
19
29bool
30pcmk_is_probe(const char *task, guint interval_ms)
31{
32 // @COMPAT This should be made inline at an API compatibility break
33 return (interval_ms == 0)
34 && pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_none);
35}
36
44bool
45pcmk_xe_is_probe(const xmlNode *xml)
46{
47 int interval_ms = 0;
48
49 if (xml == NULL) {
50 return false;
51 }
52
54 &interval_ms, 0);
55
57 interval_ms);
58}
59
68bool
69pcmk_xe_mask_probe_failure(const xmlNode *xml)
70{
71 int exec_status = PCMK_EXEC_UNKNOWN;
72 int exit_status = PCMK_OCF_OK;
73
74 if (!pcmk_xe_is_probe(xml)) {
75 return false;
76 }
77
78 crm_element_value_int(xml, PCMK__XA_OP_STATUS, &exec_status);
79 crm_element_value_int(xml, PCMK__XA_RC_CODE, &exit_status);
80
81 return (exit_status == PCMK_OCF_NOT_INSTALLED)
82 || (exit_status == PCMK_OCF_INVALID_PARAM)
83 || (exec_status == PCMK_EXEC_NOT_INSTALLED);
84}
#define PCMK_ACTION_MONITOR
Definition actions.h:60
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
Definition nvpair.c:446
int crm_element_value_int(const xmlNode *data, const char *name, int *dest)
Retrieve the integer value of an XML attribute.
Definition nvpair.c:482
API related to options.
#define PCMK_META_INTERVAL
Definition options.h:91
bool pcmk_is_probe(const char *task, guint interval_ms)
Check whether an action name and interval represent a probe.
Definition probes.c:30
bool pcmk_xe_mask_probe_failure(const xmlNode *xml)
Check whether an action history entry represents a maskable probe.
Definition probes.c:69
bool pcmk_xe_is_probe(const xmlNode *xml)
Check whether an action history entry represents a probe.
Definition probes.c:45
@ PCMK_OCF_NOT_INSTALLED
Dependencies not available locally.
Definition results.h:186
@ PCMK_OCF_INVALID_PARAM
Parameter invalid (in local context)
Definition results.h:183
@ PCMK_OCF_OK
Success.
Definition results.h:178
@ PCMK_EXEC_NOT_INSTALLED
Agent or dependency not available locally.
Definition results.h:340
@ PCMK_EXEC_UNKNOWN
Used only to initialize variables.
Definition results.h:331
int pcmk__scan_min_int(const char *text, int *result, int minimum)
Definition strings.c:127
@ pcmk__str_none
Wrappers for and extensions to libxml2.
#define PCMK_XA_OPERATION
Definition xml_names.h:344
#define PCMK__XA_OP_STATUS
#define PCMK__XA_RC_CODE