pacemaker  2.1.8-3980678f03
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/xml.h> // PCMK_XA_OPERATION
19 
29 bool
30 pcmk_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 
44 bool
45 pcmk_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 
68 bool
69 pcmk_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__XA_RC_CODE
int pcmk__scan_min_int(const char *text, int *result, int minimum)
Definition: strings.c:127
#define PCMK_ACTION_MONITOR
Definition: actions.h:60
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
#define PCMK_XA_OPERATION
Definition: xml_names.h:344
Used only to initialize variables.
Definition: results.h:331
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
Definition: nvpair.c:446
Parameter invalid (in local context)
Definition: results.h:183
bool pcmk_xe_mask_probe_failure(const xmlNode *xml)
Check whether an action history entry represents a maskable probe.
Definition: probes.c:69
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:30
Dependencies not available locally.
Definition: results.h:186
#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:45
Success.
Definition: results.h:178
#define PCMK__XA_OP_STATUS
Agent or dependency not available locally.
Definition: results.h:340
API related to options.