root/include/pcmki/pcmki_sched_utils.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright 2004-2021 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 PENGINE_AUTILS__H
  11 #  define PENGINE_AUTILS__H
  12 
  13 #include <stdbool.h>                    // bool
  14 #include <glib.h>                       // GList, GHashTable, gboolean, guint
  15 #include <crm/lrmd.h>                   // lrmd_event_data_t
  16 #include <crm/cib.h>                    // cib_t
  17 #include <crm/pengine/pe_types.h>
  18 #include <crm/pengine/internal.h>
  19 #include <pcmki/pcmki_scheduler.h>
  20 
  21 /* Constraint helper functions */
  22 pcmk__colocation_t *invert_constraint(pcmk__colocation_t *constraint);
  23 
  24 pe__location_t *copy_constraint(pe__location_t *constraint);
  25 
  26 pe__location_t *rsc2node_new(const char *id, pe_resource_t *rsc, int weight,
  27                              const char *discovery_mode, pe_node_t *node,
  28                              pe_working_set_t *data_set);
  29 
  30 void pcmk__new_colocation(const char *id, const char *node_attr, int score,
  31                           pe_resource_t *rsc_lh, pe_resource_t *rsc_rh,
  32                           const char *state_lh, const char *state_rh,
  33                           bool influence, pe_working_set_t *data_set);
  34 
  35 extern gboolean rsc_ticket_new(const char *id, pe_resource_t * rsc_lh, pe_ticket_t * ticket,
  36                                const char *state_lh, const char *loss_policy,
  37                                pe_working_set_t * data_set);
  38 
  39 GHashTable *pcmk__copy_node_table(GHashTable *nodes);
  40 GList *pcmk__copy_node_list(const GList *list, bool reset);
  41 GList *sort_nodes_by_weight(GList *nodes, pe_node_t *active_node,
  42                             pe_working_set_t *data_set);
  43 
  44 extern gboolean can_run_resources(const pe_node_t * node);
  45 extern gboolean native_assign_node(pe_resource_t *rsc, pe_node_t *chosen,
  46                                    gboolean force);
  47 void native_deallocate(pe_resource_t * rsc);
  48 
  49 extern void log_action(unsigned int log_level, const char *pre_text,
  50                        pe_action_t * action, gboolean details);
  51 
  52 gboolean can_run_any(GHashTable * nodes);
  53 pe_resource_t *find_compatible_child(pe_resource_t *local_child,
  54                                      pe_resource_t *rsc, enum rsc_role_e filter,
  55                                      gboolean current,
  56                                      pe_working_set_t *data_set);
  57 pe_resource_t *find_compatible_child_by_node(pe_resource_t * local_child, pe_node_t * local_node, pe_resource_t * rsc,
  58                                              enum rsc_role_e filter, gboolean current);
  59 gboolean is_child_compatible(pe_resource_t *child_rsc, pe_node_t * local_node, enum rsc_role_e filter, gboolean current);
  60 bool assign_node(pe_resource_t * rsc, pe_node_t * node, gboolean force);
  61 enum pe_action_flags summary_action_flags(pe_action_t * action, GList *children, pe_node_t * node);
  62 enum action_tasks clone_child_action(pe_action_t * action);
  63 int copies_per_node(pe_resource_t * rsc);
  64 
  65 enum filter_colocation_res {
  66     influence_nothing = 0,
  67     influence_rsc_location,
  68     influence_rsc_priority,
  69 };
  70 
  71 extern enum filter_colocation_res
  72 filter_colocation_constraint(pe_resource_t * rsc_lh, pe_resource_t * rsc_rh,
  73                              pcmk__colocation_t *constraint, gboolean preview);
  74 
  75 extern int compare_capacity(const pe_node_t * node1, const pe_node_t * node2);
  76 extern void calculate_utilization(GHashTable * current_utilization,
  77                                   GHashTable * utilization, gboolean plus);
  78 
  79 extern void process_utilization(pe_resource_t * rsc, pe_node_t ** prefer, pe_working_set_t * data_set);
  80 pe_action_t *create_pseudo_resource_op(pe_resource_t * rsc, const char *task, bool optional, bool runnable, pe_working_set_t *data_set);
  81 pe_action_t *pe_cancel_op(pe_resource_t *rsc, const char *name,
  82                           guint interval_ms, pe_node_t *node,
  83                           pe_working_set_t *data_set);
  84 pe_action_t *sched_shutdown_op(pe_node_t *node, pe_working_set_t *data_set);
  85 
  86 xmlNode *pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *event,
  87                                  const char *caller_version, int target_rc,
  88                                  const char *node, const char *origin,
  89                                  int level);
  90 
  91 #  define LOAD_STOPPED "load_stopped"
  92 
  93 void modify_configuration(
  94     pe_working_set_t * data_set, cib_t *cib,
  95     const char *quorum, const char *watchdog, GList *node_up, GList *node_down, GList *node_fail,
  96     GList *op_inject, GList *ticket_grant, GList *ticket_revoke,
  97     GList *ticket_standby, GList *ticket_activate);
  98 
  99 int run_simulation(pe_working_set_t * data_set, cib_t *cib, GList *op_fail_list);
 100 
 101 pcmk__output_t *pcmk__new_logger(void);
 102 
 103 #endif

/* [previous][next][first][last][top][bottom][index][help] */