15#include <libxml/tree.h>
61#if PCMK__CONCURRENT_FENCING_DEFAULT_TRUE
284 if ((
scheduler == NULL) || (node_name == NULL)) {
306 crm_trace(
"Scheduler 'now' set to current time");
330 crm_debug(
"Updated next scheduler recheck to %s for %s",
332 pcmk__s(reason,
"some reason"));
344 const xmlNode *rsc_history;
363 struct param_check *param_check = NULL;
365 CRM_CHECK((rsc_history != NULL) && (rsc != NULL) && (node != NULL),
return);
367 crm_trace(
"Deferring checks of %s until after assignment",
368 pcmk__xe_id(rsc_history));
370 param_check->rsc_history = rsc_history;
371 param_check->rsc = rsc;
372 param_check->node = node;
373 param_check->check_type = flag;
395 item != NULL; item = item->next) {
396 struct param_check *param_check = item->data;
398 cb(param_check->rsc, param_check->node, param_check->rsc_history,
399 param_check->check_type);
void pcmk__free_action_relation(gpointer user_data)
void pcmk__free_action(gpointer user_data)
#define pcmk__assert_alloc(nmemb, size)
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
long long crm_time_get_seconds_since_epoch(const crm_time_t *dt)
void crm_time_free(crm_time_t *dt)
crm_time_t * crm_time_new(const char *string)
void pcmk__free_location(gpointer user_data)
#define CRM_CHECK(expr, failure_action)
#define crm_debug(fmt, args...)
#define crm_trace(fmt, args...)
bool pcmk__config_has_error
bool pcmk__config_has_warning
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)
void pcmk__free_resource(gpointer user_data)
#define pcmk__assert(expr)
int pcmk_set_scheduler_cib(pcmk_scheduler_t *scheduler, xmlNode *cib)
void pcmk__set_scheduler_defaults(pcmk_scheduler_t *scheduler)
bool pcmk_has_quorum(const pcmk_scheduler_t *scheduler)
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__free_param_checks(pcmk_scheduler_t *scheduler)
void pcmk_reset_scheduler(pcmk_scheduler_t *scheduler)
Reset scheduler data to defaults.
time_t pcmk__scheduler_epoch_time(pcmk_scheduler_t *scheduler)
void pcmk__add_param_check(const xmlNode *rsc_history, pcmk_resource_t *rsc, pcmk_node_t *node, enum pcmk__check_parameters flag)
pcmk_node_t * pcmk_get_dc(const pcmk_scheduler_t *scheduler)
enum pe_quorum_policy pcmk_get_no_quorum_policy(const pcmk_scheduler_t *scheduler)
void pcmk__foreach_param_check(pcmk_scheduler_t *scheduler, void(*cb)(pcmk_resource_t *, pcmk_node_t *, const xmlNode *, enum pcmk__check_parameters))
void pcmk__update_recheck_time(time_t recheck, pcmk_scheduler_t *scheduler, const char *reason)
pe_quorum_policy
Possible responses to loss of quorum.
@ pcmk_no_quorum_stop
Stop all resources in partition.
#define pcmk__set_scheduler_flags(scheduler, flags_to_set)
@ pcmk__sched_stop_removed_resources
@ pcmk__sched_cancel_removed_actions
@ pcmk__sched_symmetric_cluster
@ pcmk__sched_concurrent_fencing
char * pcmk__trim(char *str)
pcmk_scheduler_t * scheduler
pcmk__resource_private_t * priv
GList * ordering_constraints
guint priority_fencing_ms
const char * fence_action
const char * placement_strategy
GList * colocation_constraints
GHashTable * ticket_constraints
GList * location_constraints
pcmk__scheduler_private_t * priv
enum pe_quorum_policy no_quorum_policy
void pcmk__xml_free(xmlNode *xml)