16#include <libxml/tree.h>
25#define XPATH_DEPRECATED_RULES \
26 "//" PCMK_XE_OP_DEFAULTS "//" PCMK_XE_EXPRESSION \
27 "|//" PCMK_XE_OP "//" PCMK_XE_EXPRESSION
43 if (deprecated != NULL) {
45 "Support for rules with node attribute expressions in "
47 "and will be dropped in a future release");
76 const char *new_version = NULL;
77 xmlNode *section = NULL;
97 pcmk__config_err(
"Can't process CIB with feature set '%s' greater than our own '%s'",
134 "Fencing and resource management disabled "
135 "due to lack of quorum");
165 item != NULL; item = item->next) {
171 crm_trace(
"Cluster resource count: %d (%d disabled, %d blocked)",
180 crm_info(
"Creating a fake local node for %s",
201 for (rIter = rsc_list;
id && rIter; rIter = rIter->next) {
233 if ((match == NULL) && (
uname != NULL)) {
250 for (
const GList *iter = nodes; iter != NULL; iter = iter->next) {
void pcmk__free_action(gpointer user_data)
int pcmk__check_feature_set(const char *cib_version)
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
void crm_time_free(crm_time_t *dt)
crm_time_t * crm_time_new(const char *string)
#define crm_info(fmt, args...)
#define CRM_LOG_ASSERT(expr)
#define crm_trace(fmt, args...)
#define pcmk__config_err(fmt...)
#define pcmk__warn_once(wo_flag, fmt...)
pcmk_scheduler_t * scheduler
pcmk_node_t * pcmk__find_node_in_list(const GList *nodes, const char *node_name)
void pcmk__free_node(gpointer user_data)
G_GNUC_INTERNAL gboolean unpack_resources(const xmlNode *xml_resources, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL gboolean unpack_tags(xmlNode *xml_tags, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL gboolean unpack_remote_nodes(xmlNode *xml_resources, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL void pcmk__validate_fencing_topology(const xmlNode *xml)
G_GNUC_INTERNAL gboolean unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL gboolean unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler)
G_GNUC_INTERNAL gboolean unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler)
pcmk_node_t * pe_create_node(const char *id, const char *uname, const char *type, int score, pcmk_scheduler_t *scheduler)
pe_find
Search options for resources (exact resource ID always matches)
@ pcmk_rsc_match_history
Also match clone instance ID from resource history.
void pcmk__free_resource(gpointer user_data)
@ pcmk_no_quorum_ignore
Act as if partition still holds quorum.
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.
pcmk_node_t * pcmk_find_node(const pcmk_scheduler_t *scheduler, const char *node_name)
Find a node by name in scheduler data.
void pcmk_reset_scheduler(pcmk_scheduler_t *scheduler)
Reset scheduler data to defaults.
void pcmk__set_scheduler_defaults(pcmk_scheduler_t *scheduler)
#define pcmk__clear_scheduler_flags(scheduler, flags_to_clear)
void pcmk__free_param_checks(pcmk_scheduler_t *scheduler)
#define pcmk__sched_warn(scheduler, fmt...)
#define pcmk__set_scheduler_flags(scheduler, flags_to_set)
@ pcmk__sched_have_status
@ pcmk__sched_location_only
pcmk_node_t * pe_find_node_id(const GList *nodes, const char *id)
Find a node by ID in a list of nodes.
pcmk_node_t * pe_find_node(const GList *nodes, const char *node_name)
void pe_free_working_set(pcmk_scheduler_t *scheduler)
void pe_reset_working_set(pcmk_scheduler_t *scheduler)
pcmk_node_t * pe_find_node_any(const GList *nodes, const char *id, const char *uname)
Find a node by name or ID in a list of nodes.
pcmk_resource_t * pe_find_resource(GList *rsc_list, const char *id)
pcmk_scheduler_t * pe_new_working_set(void)
gboolean cluster_status(pcmk_scheduler_t *scheduler)
void cleanup_calculations(pcmk_scheduler_t *scheduler)
void set_working_set_defaults(pcmk_scheduler_t *scheduler)
#define XPATH_DEPRECATED_RULES
pcmk_resource_t * pe_find_resource_with_flags(GList *rsc_list, const char *id, enum pe_find flags)
Deprecated Pacemaker scheduler utilities.
This structure contains everything that makes up a single output formatter.
const pcmk__rsc_methods_t * fns
pcmk__resource_private_t * priv
pcmk_resource_t *(* find_rsc)(pcmk_resource_t *rsc, const char *search, const pcmk_node_t *node, uint32_t flags)
void(* count)(pcmk_resource_t *rsc)
GList * ordering_constraints
GHashTable * ticket_constraints
GList * location_constraints
pcmk__scheduler_private_t * priv
enum pe_quorum_policy no_quorum_policy
pcmk__node_private_t * priv
Wrappers for and extensions to libxml2.
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
bool pcmk__xe_attr_is_true(const xmlNode *node, const char *name)
xmlNode * pcmk__xe_create(xmlNode *parent, const char *name)
void pcmk__xml_free(xmlNode *xml)
#define PCMK_XE_OP_DEFAULTS
#define PCMK_XE_CRM_CONFIG
#define PCMK_XE_RESOURCES
#define PCMK_XA_HAVE_QUORUM
#define PCMK_XE_FENCING_TOPOLOGY
#define PCMK_XA_CRM_FEATURE_SET
#define PCMK_XE_RSC_DEFAULTS
xmlNode * pcmk__xpath_find_one(xmlDoc *doc, const char *path, uint8_t level)