pacemaker  3.0.0-d8340737c4
Scalable High-Availability cluster resource manager
xml.h
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 #ifndef PCMK__CRM_COMMON_XML__H
11 #define PCMK__CRM_COMMON_XML__H
12 
13 
14 #include <stdio.h>
15 #include <sys/types.h>
16 #include <unistd.h>
17 
18 #include <stdlib.h>
19 #include <errno.h>
20 #include <fcntl.h>
21 
22 #include <libxml/tree.h>
23 #include <libxml/xpath.h>
24 
25 #include <crm/crm.h>
26 #include <crm/common/nvpair.h>
27 #include <crm/common/schemas.h>
28 #include <crm/common/xml_io.h>
29 #include <crm/common/xml_names.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
41 typedef const xmlChar *pcmkXmlStr;
42 
43 
44 /*
45  * Searching & Modifying
46  */
47 
48 // NOTE: sbd (as of at least 1.5.2) uses this
49 xmlNode *get_xpath_object(const char *xpath, xmlNode * xml_obj, int error_level);
50 
51 xmlXPathObjectPtr xpath_search(const xmlNode *xml_top, const char *path);
52 void crm_foreach_xpath_result(xmlNode *xml, const char *xpath,
53  void (*helper)(xmlNode*, void*), void *user_data);
54 
55 void freeXpathObject(xmlXPathObjectPtr xpathObj);
56 xmlNode *getXpathResult(xmlXPathObjectPtr xpathObj, int index);
57 void dedupXpathResults(xmlXPathObjectPtr xpathObj);
58 
59 static inline int numXpathResults(xmlXPathObjectPtr xpathObj)
60 {
61  if(xpathObj == NULL || xpathObj->nodesetval == NULL) {
62  return 0;
63  }
64  return xpathObj->nodesetval->nodeNr;
65 }
66 
67 bool xml_tracking_changes(xmlNode * xml);
68 bool xml_document_dirty(xmlNode *xml);
69 void xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enforce_acls);
70 void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml);
71 void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml);
72 void xml_accept_changes(xmlNode * xml);
73 bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]);
74 
75 xmlNode *xml_create_patchset(
76  int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version);
77 int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version);
78 
79 void patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, bool with_digest);
80 
81 #ifdef __cplusplus
82 }
83 #endif
84 
85 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
86 #include <crm/common/xml_compat.h>
87 #endif
88 
89 #endif
A dumping ground.
XML schema API.
void xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, bool enforce_acls)
Definition: xml.c:346
void xml_accept_changes(xmlNode *xml)
Definition: xml.c:445
Wrappers for and extensions to XML input/output functions.
void dedupXpathResults(xmlXPathObjectPtr xpathObj)
Definition: xpath.c:101
xmlNode * get_xpath_object(const char *xpath, xmlNode *xml_obj, int error_level)
Definition: xpath.c:189
Deprecated Pacemaker XML API.
bool xml_tracking_changes(xmlNode *xml)
Definition: xml.c:361
int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version)
Definition: patchset.c:759
bool xml_document_dirty(xmlNode *xml)
Definition: xml.c:368
void patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, bool with_digest)
Definition: patchset.c:286
const xmlChar * pcmkXmlStr
Definition: xml.h:41
Functionality for manipulating name/value pairs.
const char * target
Definition: pcmk_fence.c:31
xmlXPathObjectPtr xpath_search(const xmlNode *xml_top, const char *path)
Definition: xpath.c:139
Defined string constants for XML element and attribute names.
const char * path
Definition: cib.c:28
xmlNode * getXpathResult(xmlXPathObjectPtr xpathObj, int index)
Definition: xpath.c:58
void crm_foreach_xpath_result(xmlNode *xml, const char *xpath, void(*helper)(xmlNode *, void *), void *user_data)
Run a supplied function for each result of an xpath search.
Definition: xpath.c:170
bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3])
Definition: patchset.c:311
void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml)
Definition: xml.c:1399
void freeXpathObject(xmlXPathObjectPtr xpathObj)
Definition: xpath.c:39
xmlNode * xml_create_patchset(int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version)
Definition: patchset.c:243
void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml)
Definition: xml.c:1407