pacemaker  3.0.0-d8340737c4
Scalable High-Availability cluster resource manager
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 
30 bool
31 pcmk_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 
45 bool
46 pcmk_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 
69 bool
70 pcmk_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__XA_RC_CODE
int pcmk__scan_min_int(const char *text, int *result, int minimum)
Definition: strings.c:116
Scheduler API for probes.
#define PCMK_ACTION_MONITOR
Definition: actions.h:51
#define PCMK_XA_OPERATION
Definition: xml_names.h:349
Used only to initialize variables.
Definition: results.h:307
Parameter invalid (in local context)
Definition: results.h:179
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
Definition: xml_element.c:1168
bool pcmk_xe_mask_probe_failure(const xmlNode *xml)
Check whether an action history entry represents a maskable probe.
Definition: probes.c:70
Wrappers for and extensions to libxml2.
bool pcmk_is_probe(const char *task, guint interval_ms)
Check whether an action name and interval represent a probe.
Definition: probes.c:31
Dependencies not available locally.
Definition: results.h:182
#define PCMK_META_INTERVAL
Definition: options.h:91
bool pcmk_xe_is_probe(const xmlNode *xml)
Check whether an action history entry represents a probe.
Definition: probes.c:46
Success.
Definition: results.h:174
#define PCMK__XA_OP_STATUS
int crm_element_value_int(const xmlNode *data, const char *name, int *dest)
Retrieve the integer value of an XML attribute.
Definition: xml_element.c:1201
Agent or dependency not available locally.
Definition: results.h:316
API related to options.