pacemaker 3.0.1-16e74fc4da
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/probes.h>
19#include <crm/common/xml.h> // PCMK_XA_OPERATION
20
30bool
31pcmk_is_probe(const char *task, guint interval_ms)
32{
33 // @COMPAT This should be made inline at an API compatibility break
34 return (interval_ms == 0)
35 && pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_none);
36}
37
45bool
46pcmk_xe_is_probe(const xmlNode *xml)
47{
48 int interval_ms = 0;
49
50 if (xml == NULL) {
51 return false;
52 }
53
55 &interval_ms, 0);
56
58 interval_ms);
59}
60
69bool
70pcmk_xe_mask_probe_failure(const xmlNode *xml)
71{
72 int exec_status = PCMK_EXEC_UNKNOWN;
73 int exit_status = PCMK_OCF_OK;
74
75 if (!pcmk_xe_is_probe(xml)) {
76 return false;
77 }
78
79 crm_element_value_int(xml, PCMK__XA_OP_STATUS, &exec_status);
80 crm_element_value_int(xml, PCMK__XA_RC_CODE, &exit_status);
81
82 return (exit_status == PCMK_OCF_NOT_INSTALLED)
83 || (exit_status == PCMK_OCF_INVALID_PARAM)
84 || (exec_status == PCMK_EXEC_NOT_INSTALLED);
85}
#define PCMK_ACTION_MONITOR
Definition actions.h:51
API related to options.
#define PCMK_META_INTERVAL
Definition options.h:92
bool pcmk_is_probe(const char *task, guint interval_ms)
Check whether an action name and interval represent a probe.
Definition probes.c:31
bool pcmk_xe_mask_probe_failure(const xmlNode *xml)
Check whether an action history entry represents a maskable probe.
Definition probes.c:70
bool pcmk_xe_is_probe(const xmlNode *xml)
Check whether an action history entry represents a probe.
Definition probes.c:46
Scheduler API for probes.
@ PCMK_OCF_NOT_INSTALLED
Dependencies not available locally.
Definition results.h:182
@ PCMK_OCF_INVALID_PARAM
Parameter invalid (in local context)
Definition results.h:179
@ PCMK_OCF_OK
Success.
Definition results.h:174
@ PCMK_EXEC_NOT_INSTALLED
Agent or dependency not available locally.
Definition results.h:318
@ PCMK_EXEC_UNKNOWN
Used only to initialize variables.
Definition results.h:309
int pcmk__scan_min_int(const char *text, int *result, int minimum)
Definition strings.c:116
@ pcmk__str_none
Wrappers for and extensions to libxml2.
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
int crm_element_value_int(const xmlNode *data, const char *name, int *dest)
Retrieve the integer value of an XML attribute.
#define PCMK_XA_OPERATION
Definition xml_names.h:349
#define PCMK__XA_OP_STATUS
#define PCMK__XA_RC_CODE