root/lib/pengine/pe_status_private.h

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

INCLUDED FROM


   1 /*
   2  * Copyright 2018-2023 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 PE_STATUS_PRIVATE__H
  11 #  define PE_STATUS_PRIVATE__H
  12 
  13 /* This header is for the sole use of libpe_status, so that functions can be
  14  * declared with G_GNUC_INTERNAL for efficiency.
  15  */
  16 
  17 #if defined(PCMK__UNIT_TESTING)
  18 #undef G_GNUC_INTERNAL
  19 #define G_GNUC_INTERNAL
  20 #endif
  21 
  22 #include <glib.h>                 // GSList, GList, GHashTable
  23 #include <libxml/tree.h>          // xmlNode
  24 
  25 #include <crm/pengine/status.h>   // pcmk_action_t, pcmk_resource_t, etc.
  26 
  27 /*!
  28  * \internal
  29  * \deprecated This macro will be removed in a future release
  30  */
  31 #  define status_print(fmt, args...)           \
  32    if(options & pe_print_html) {           \
  33        FILE *stream = print_data;      \
  34        fprintf(stream, fmt, ##args);       \
  35    } else if(options & pe_print_printf || options & pe_print_ncurses) {      \
  36        FILE *stream = print_data;      \
  37        fprintf(stream, fmt, ##args);       \
  38    } else if(options & pe_print_xml) {     \
  39        FILE *stream = print_data;      \
  40        fprintf(stream, fmt, ##args);       \
  41    } else if(options & pe_print_log) {     \
  42        int log_level = *(int*)print_data;  \
  43        do_crm_log(log_level, fmt, ##args); \
  44    }
  45 
  46 typedef struct notify_data_s {
  47     GSList *keys;               // Environment variable name/value pairs
  48 
  49     const char *action;
  50 
  51     pcmk_action_t *pre;
  52     pcmk_action_t *post;
  53     pcmk_action_t *pre_done;
  54     pcmk_action_t *post_done;
  55 
  56     GList *active;            /* notify_entry_t*  */
  57     GList *inactive;          /* notify_entry_t*  */
  58     GList *start;             /* notify_entry_t*  */
  59     GList *stop;              /* notify_entry_t*  */
  60     GList *demote;            /* notify_entry_t*  */
  61     GList *promote;           /* notify_entry_t*  */
  62     GList *promoted;          /* notify_entry_t*  */
  63     GList *unpromoted;        /* notify_entry_t*  */
  64     GHashTable *allowed_nodes;
  65 } notify_data_t;
  66 
  67 G_GNUC_INTERNAL
  68 pcmk_resource_t *pe__create_clone_child(pcmk_resource_t *rsc,
  69                                       pcmk_scheduler_t *scheduler);
  70 
  71 G_GNUC_INTERNAL
  72 void pe__create_action_notifications(pcmk_resource_t *rsc,
  73                                      notify_data_t *n_data);
  74 
  75 G_GNUC_INTERNAL
  76 void pe__free_action_notification_data(notify_data_t *n_data);
  77 
  78 G_GNUC_INTERNAL
  79 notify_data_t *pe__action_notif_pseudo_ops(pcmk_resource_t *rsc,
  80                                            const char *task,
  81                                            pcmk_action_t *action,
  82                                            pcmk_action_t *complete);
  83 
  84 G_GNUC_INTERNAL
  85 void pe__force_anon(const char *standard, pcmk_resource_t *rsc, const char *rid,
  86                     pcmk_scheduler_t *scheduler);
  87 
  88 G_GNUC_INTERNAL
  89 gint pe__cmp_rsc_priority(gconstpointer a, gconstpointer b);
  90 
  91 G_GNUC_INTERNAL
  92 gboolean pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc,
  93                              pcmk_resource_t *parent,
  94                              pcmk_scheduler_t *scheduler);
  95 
  96 G_GNUC_INTERNAL
  97 gboolean unpack_remote_nodes(xmlNode *xml_resources,
  98                              pcmk_scheduler_t *scheduler);
  99 
 100 G_GNUC_INTERNAL
 101 gboolean unpack_resources(const xmlNode *xml_resources,
 102                           pcmk_scheduler_t *scheduler);
 103 
 104 G_GNUC_INTERNAL
 105 gboolean unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler);
 106 
 107 G_GNUC_INTERNAL
 108 gboolean unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler);
 109 
 110 G_GNUC_INTERNAL
 111 gboolean unpack_tags(xmlNode *xml_tags, pcmk_scheduler_t *scheduler);
 112 
 113 G_GNUC_INTERNAL
 114 gboolean unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler);
 115 
 116 G_GNUC_INTERNAL
 117 op_digest_cache_t *pe__compare_fencing_digest(pcmk_resource_t *rsc,
 118                                               const char *agent,
 119                                               pcmk_node_t *node,
 120                                               pcmk_scheduler_t *scheduler);
 121 
 122 G_GNUC_INTERNAL
 123 void pe__unpack_node_health_scores(pcmk_scheduler_t *scheduler);
 124 
 125 // Primitive resource methods
 126 
 127 G_GNUC_INTERNAL
 128 unsigned int pe__primitive_max_per_node(const pcmk_resource_t *rsc);
 129 
 130 // Group resource methods
 131 
 132 G_GNUC_INTERNAL
 133 unsigned int pe__group_max_per_node(const pcmk_resource_t *rsc);
 134 
 135 // Clone resource methods
 136 
 137 G_GNUC_INTERNAL
 138 unsigned int pe__clone_max_per_node(const pcmk_resource_t *rsc);
 139 
 140 // Bundle resource methods
 141 
 142 G_GNUC_INTERNAL
 143 pcmk_node_t *pe__bundle_active_node(const pcmk_resource_t *rsc,
 144                                     unsigned int *count_all,
 145                                     unsigned int *count_clean);
 146 
 147 G_GNUC_INTERNAL
 148 unsigned int pe__bundle_max_per_node(const pcmk_resource_t *rsc);
 149 
 150 #endif  // PE_STATUS_PRIVATE__H

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