#include <crm_internal.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <errno.h>
#include <sys/stat.h>
#include <stdarg.h>
#include <libxml/relaxng.h>
#include <libxslt/xslt.h>
#include <libxslt/transform.h>
#include <libxslt/security.h>
#include <libxslt/xsltutils.h>
#include <crm/msg_xml.h>
#include <crm/common/xml.h>
#include <crm/common/xml_internal.h>
Go to the source code of this file.
|
#define | SCHEMA_ZERO { .v = { 0, 0 } } |
|
#define | schema_scanf(s, prefix, version, suffix) sscanf((s), prefix "%hhu.%hhu" suffix, &((version).v[0]), &((version).v[1])) |
|
#define | schema_strdup_printf(prefix, version, suffix) crm_strdup_printf(prefix "%u.%u" suffix, (version).v[0], (version).v[1]) |
|
#define | PCMK_SCHEMAS_EMERGENCY_XSLT 1 |
|
◆ PCMK_SCHEMAS_EMERGENCY_XSLT
#define PCMK_SCHEMAS_EMERGENCY_XSLT 1 |
◆ schema_scanf
#define schema_scanf |
( |
|
s, |
|
|
|
prefix, |
|
|
|
version, |
|
|
|
suffix |
|
) |
| sscanf((s), prefix "%hhu.%hhu" suffix, &((version).v[0]), &((version).v[1])) |
◆ schema_strdup_printf
◆ SCHEMA_ZERO
#define SCHEMA_ZERO { .v = { 0, 0 } } |
◆ schema_validator_e
Enumerator |
---|
schema_validator_none | |
schema_validator_rng | |
Definition at line 47 of file schemas.c.
◆ cli_config_update()
gboolean cli_config_update |
( |
xmlNode ** |
xml, |
|
|
int * |
best_version, |
|
|
gboolean |
to_logs |
|
) |
| |
◆ crm_schema_cleanup()
void crm_schema_cleanup |
( |
void |
| ) |
|
◆ crm_schema_init()
void crm_schema_init |
( |
void |
| ) |
|
◆ get_schema_name()
const char* get_schema_name |
( |
int |
version | ) |
|
◆ get_schema_version()
int get_schema_version |
( |
const char * |
name | ) |
|
◆ update_validation()
int update_validation |
( |
xmlNode ** |
xml_blob, |
|
|
int * |
best, |
|
|
int |
max, |
|
|
gboolean |
transform, |
|
|
gboolean |
to_logs |
|
) |
| |
Update CIB XML to most recent schema version.
"Update" means either actively employ XSLT-based transformation(s) (if intermediate product to transform valid per its declared schema version, transformation available, proceeded successfully with a result valid per expectated newer schema version), or just try to bump the marked validating schema until all gradually rising schema versions attested or the first such attempt subsequently fails to validate. Which of the two styles will be used depends on transform
parameter (positive/negative, respectively).
- Parameters
-
[in,out] | xml_blob | XML tree representing CIB, may be swapped with an "updated" one |
[out] | best | The highest configuration version (per its index in the global schemas table) it was possible to reach during the update steps while ensuring the validity of the result; if no validation success was observed against possibly multiple schemas, the value is less or equal the result of get_schema_version applied on the input xml_blob value (unless that function maps it to -1, then 0 would be used instead) |
[in] | max | When transform is positive, this allows to set upper boundary schema (per its index in the global schemas table) beyond which it's forbidden to update by the means of XSLT transformation |
[in] | transform | Whether to employ XSLT-based transformation so as to allow overcoming possible incompatibilities between major schema versions (see above) |
[in] | to_logs | If true, output notable progress info to internal log streams; if false, to stderr |
- Returns
pcmk_ok
if no non-recoverable error encountered (up to caller to evaluate if the update satisfies the requirements per returned best
value), negative value carrying the reason otherwise
Definition at line 1050 of file schemas.c.
◆ validate_xml()
gboolean validate_xml |
( |
xmlNode * |
xml_blob, |
|
|
const char * |
validation, |
|
|
gboolean |
to_logs |
|
) |
| |
◆ validate_xml_verbose()
gboolean validate_xml_verbose |
( |
xmlNode * |
xml_blob | ) |
|
◆ xml_latest_schema()
const char* xml_latest_schema |
( |
void |
| ) |
|