10#ifndef PCMK__CRM_COMMON_XPATH_INTERNAL__H
11#define PCMK__CRM_COMMON_XPATH_INTERNAL__H
16#include <libxml/tree.h>
17#include <libxml/xpath.h>
30#define PCMK__XP_MEMBER_NODE_CONFIG \
31 "//" PCMK_XE_CIB "/" PCMK_XE_CONFIGURATION "/" PCMK_XE_NODES \
33 "[not(@" PCMK_XA_TYPE ") or @" PCMK_XA_TYPE "='" PCMK_VALUE_MEMBER "']"
36#define PCMK__XP_GUEST_NODE_CONFIG \
37 "//" PCMK_XE_CIB "//" PCMK_XE_CONFIGURATION "//" PCMK_XE_PRIMITIVE \
38 "//" PCMK_XE_META_ATTRIBUTES "//" PCMK_XE_NVPAIR \
39 "[@" PCMK_XA_NAME "='" PCMK_META_REMOTE_NODE "']"
42#define PCMK__XP_REMOTE_NODE_CONFIG \
43 "//" PCMK_XE_CIB "//" PCMK_XE_CONFIGURATION "//" PCMK_XE_PRIMITIVE \
44 "[@" PCMK_XA_TYPE "='" PCMK_VALUE_REMOTE "']" \
45 "[@" PCMK_XA_PROVIDER "='pacemaker']"
48#define PCMK__XP_REMOTE_NODE_STATUS \
49 "//" PCMK_XE_CIB "//" PCMK_XE_STATUS "//" PCMK__XE_NODE_STATE \
50 "[@" PCMK_XA_REMOTE_NODE "='" PCMK_VALUE_TRUE "']"
65pcmk__xpath_num_results(
const xmlXPathObject *xpath_obj)
69 if (xpath_obj != NULL) {
70 num_results = xmlXPathNodeSetGetLength(xpath_obj->nodesetval);
74 return QB_MAX(num_results, 0);
84 void (*fn)(xmlNode *,
void *),
void *user_data);
Formatted output for pacemaker tools.
This structure contains everything that makes up a single output formatter.
Defined string constants for XML element and attribute names.
xmlXPathObject * pcmk__xpath_search(xmlDoc *doc, const char *path)
xmlNode * pcmk__xpath_result(xmlXPathObject *xpath_obj, int index)
void pcmk__warn_multiple_name_matches(pcmk__output_t *out, xmlNode *search, const char *name)
GString * pcmk__element_xpath(const xmlNode *xml)
xmlNode * pcmk__xpath_match_element(xmlNode *match)
xmlNode * pcmk__xpath_find_one(xmlDoc *doc, const char *path, uint8_t level)
char * pcmk__xpath_node_id(const char *xpath, const char *node)
void pcmk__xpath_foreach_result(xmlDoc *doc, const char *path, void(*fn)(xmlNode *, void *), void *user_data)