root/include/crm/pengine/common.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. recovery2text

   1 /*
   2  * Copyright 2004-2020 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_COMMON__H
  11 #  define PE_COMMON__H
  12 
  13 #ifdef __cplusplus
  14 extern "C" {
  15 #endif
  16 
  17 #  include <glib.h>
  18 #  include <regex.h>
  19 
  20 #  include <crm/common/iso8601.h>
  21 
  22 extern gboolean was_processing_error;
  23 extern gboolean was_processing_warning;
  24 
  25 /* The order is (partially) significant here; the values from action_fail_ignore
  26  * through action_fail_fence are in order of increasing severity.
  27  *
  28  * @COMPAT The values should be ordered and numbered per the "TODO" comments
  29  *         below, so all values are in order of severity and there is room for
  30  *         future additions, but that would break API compatibility.
  31  * @TODO   For now, we just use a function to compare the values specially, but
  32  *         at the next compatibility break, we should arrange things properly.
  33  */
  34 enum action_fail_response {
  35     action_fail_ignore,     // @TODO = 10
  36     // @TODO action_fail_demote = 20,
  37     action_fail_recover,    // @TODO = 30
  38     // @TODO action_fail_reset_remote = 40,
  39     // @TODO action_fail_restart_container = 50,
  40     action_fail_migrate,    // @TODO = 60
  41     action_fail_block,      // @TODO = 70
  42     action_fail_stop,       // @TODO = 80
  43     action_fail_standby,    // @TODO = 90
  44     action_fail_fence,      // @TODO = 100
  45 
  46     // @COMPAT Values below here are out of order for API compatibility
  47 
  48     action_fail_restart_container,
  49 
  50     /* This is reserved for internal use for remote node connection resources.
  51      * Fence the remote node if stonith is enabled, otherwise attempt to recover
  52      * the connection resource. This allows us to specify types of connection
  53      * resource failures that should result in fencing the remote node
  54      * (for example, recurring monitor failures).
  55      */
  56     action_fail_reset_remote,
  57 
  58     action_fail_demote,
  59 };
  60 
  61 /* the "done" action must be the "pre" action +1 */
  62 enum action_tasks {
  63     no_action,
  64     monitor_rsc,
  65     stop_rsc,
  66     stopped_rsc,
  67     start_rsc,
  68     started_rsc,
  69     action_notify,
  70     action_notified,
  71     action_promote,
  72     action_promoted,
  73     action_demote,
  74     action_demoted,
  75     shutdown_crm,
  76     stonith_node
  77 };
  78 
  79 enum rsc_recovery_type {
  80     recovery_stop_start,
  81     recovery_stop_only,
  82     recovery_block
  83 };
  84 
  85 enum rsc_start_requirement {
  86     rsc_req_nothing,            /* Allowed by custom_action() */
  87     rsc_req_quorum,             /* Enforced by custom_action() */
  88     rsc_req_stonith             /* Enforced by native_start_constraints() */
  89 };
  90 
  91 enum rsc_role_e {
  92     RSC_ROLE_UNKNOWN,
  93     RSC_ROLE_STOPPED,
  94     RSC_ROLE_STARTED,
  95     RSC_ROLE_SLAVE,
  96     RSC_ROLE_MASTER,
  97 };
  98 
  99 #  define RSC_ROLE_MAX  RSC_ROLE_MASTER+1
 100 
 101 #  define RSC_ROLE_UNKNOWN_S "Unknown"
 102 #  define RSC_ROLE_STOPPED_S "Stopped"
 103 #  define RSC_ROLE_STARTED_S "Started"
 104 #  define RSC_ROLE_SLAVE_S   "Slave"
 105 #  define RSC_ROLE_MASTER_S  "Master"
 106 
 107 enum pe_print_options {
 108     pe_print_log            = (1 << 0),
 109     pe_print_html           = (1 << 1),
 110     pe_print_ncurses        = (1 << 2),
 111     pe_print_printf         = (1 << 3),
 112     pe_print_dev            = (1 << 4),  // Debugging (@COMPAT probably not useful)
 113     pe_print_details        = (1 << 5),
 114     pe_print_max_details    = (1 << 6),
 115     pe_print_rsconly        = (1 << 7),
 116     pe_print_ops            = (1 << 8),
 117     pe_print_suppres_nl     = (1 << 9),
 118     pe_print_xml            = (1 << 10),
 119     pe_print_brief          = (1 << 11),
 120     pe_print_pending        = (1 << 12),
 121     pe_print_clone_details  = (1 << 13),
 122     pe_print_clone_active   = (1 << 14), // Print clone instances only if active
 123     pe_print_implicit       = (1 << 15)  // Print implicitly created resources
 124 };
 125 
 126 const char *task2text(enum action_tasks task);
 127 enum action_tasks text2task(const char *task);
 128 enum rsc_role_e text2role(const char *role);
 129 const char *role2text(enum rsc_role_e role);
 130 const char *fail2text(enum action_fail_response fail);
 131 
 132 const char *pe_pref(GHashTable * options, const char *name);
 133 void calculate_active_ops(GList * sorted_op_list, int *start_index, int *stop_index);
 134 
 135 static inline const char *
 136 recovery2text(enum rsc_recovery_type type)
     /* [previous][next][first][last][top][bottom][index][help] */
 137 {
 138     switch (type) {
 139         case recovery_stop_only:
 140             return "shutting it down";
 141         case recovery_stop_start:
 142             return "attempting recovery";
 143         case recovery_block:
 144             return "waiting for an administrator";
 145     }
 146     return "Unknown";
 147 }
 148 
 149 typedef struct pe_re_match_data {
 150     char *string;
 151     int nregs;
 152     regmatch_t *pmatch;
 153 } pe_re_match_data_t;
 154 
 155 typedef struct pe_match_data {
 156     pe_re_match_data_t *re;
 157     GHashTable *params;
 158     GHashTable *meta;
 159 } pe_match_data_t;
 160 
 161 typedef struct pe_rsc_eval_data {
 162     const char *standard;
 163     const char *provider;
 164     const char *agent;
 165 } pe_rsc_eval_data_t;
 166 
 167 typedef struct pe_op_eval_data {
 168     const char *op_name;
 169     guint interval;
 170 } pe_op_eval_data_t;
 171 
 172 typedef struct pe_rule_eval_data {
 173     GHashTable *node_hash;
 174     enum rsc_role_e role;
 175     crm_time_t *now;
 176     pe_match_data_t *match_data;
 177     pe_rsc_eval_data_t *rsc_data;
 178     pe_op_eval_data_t *op_data;
 179 } pe_rule_eval_data_t;
 180 
 181 #ifdef __cplusplus
 182 }
 183 #endif
 184 
 185 #endif

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