29 const char *first = cib_source;
31 if (cib_source == NULL) {
35 while (isspace(*first)) {
62 xmlNode *status = NULL;
64 pcmk__assert((cib_object != NULL) && (*cib_object != NULL));
71 "Input is not a CIB (outermost element is %s not "
73 pcmk__s((
const char *) (*cib_object)->name,
"unrecognizable"));
84 (xmlRelaxNGValidityErrorFunc) out->
err, out)) {
93 out->
err(out,
"The cluster will NOT be able to use this configuration.\n"
94 "Please manually update the configuration to conform to the %s syntax.",
105 if (*cib_object != NULL) {
109 if (status == NULL) {
135 xmlNode *cib_object = NULL;
154 out->
err(out,
"Couldn't allocate scheduler data: %s",
pcmk_rc_str(rc));
int cib__signon_query(pcmk__output_t *out, cib_t **cib, xmlNode **cib_object)
xmlNode * pcmk_find_cib_element(xmlNode *cib, const char *element_name)
Find an element in the CIB.
#define pcmk__config_err(fmt...)
bool pcmk__config_has_error
bool pcmk__config_has_warning
pcmk_scheduler_t * scheduler
Control output from tools.
void pcmk__xml_output_finish(pcmk__output_t *out, crm_exit_t exit_status, xmlNodePtr *xml)
int pcmk__xml_output_new(pcmk__output_t **out, xmlNodePtr *xml)
int pcmk__verify(pcmk_scheduler_t *scheduler, pcmk__output_t *out, xmlNode **cib_object)
int pcmk_verify(xmlNodePtr *xml, const char *cib_source)
Verify that a CIB is error-free or output errors and warnings.
int pcmk__parse_cib(pcmk__output_t *out, const char *cib_source, xmlNodePtr *cib_object)
void pcmk__register_lib_messages(pcmk__output_t *out)
void pcmk__schedule_actions(pcmk_scheduler_t *scheduler)
void pe__register_messages(pcmk__output_t *out)
Function and executable result codes.
const char * pcmk_rc_str(int rc)
Get a user-friendly description of a return code.
@ pcmk_rc_schema_validation
crm_exit_t pcmk_rc2exitc(int rc)
Map a function return code to the most similar exit code.
#define pcmk__assert(expr)
void pcmk_free_scheduler(pcmk_scheduler_t *scheduler)
Free scheduler data.
pcmk_scheduler_t * pcmk_new_scheduler(void)
Create a new object to hold scheduler data.
#define pcmk__set_scheduler_flags(scheduler, flags_to_set)
@ pcmk__sched_validate_only
bool pcmk__validate_xml(xmlNode *xml_blob, const char *validation, xmlRelaxNGValidityErrorFunc error_handler, void *error_handler_context)
const char * pcmk__highest_schema_name(void)
int pcmk__update_configured_schema(xmlNode **xml, bool to_logs)
Update XML from its configured schema to the latest major series.
This structure contains everything that makes up a single output formatter.
int int void(* err)(pcmk__output_t *out, const char *format,...) G_GNUC_PRINTF(2
pcmk__scheduler_private_t * priv
xmlNode * pcmk__xe_create(xmlNode *parent, const char *name)
void pcmk__xml_free(xmlNode *xml)
xmlNode * pcmk__xml_read(const char *filename)
xmlNode * pcmk__xml_parse(const char *input)