1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 #ifndef PCMK__PENGINE_PE_STATUS_PRIVATE__H
  11 #define PCMK__PENGINE_PE_STATUS_PRIVATE__H
  12 
  13 
  14 
  15 
  16 
  17 #include <glib.h>                 
  18 #include <libxml/tree.h>          
  19 
  20 #include <crm/common/digest_internal.h>     
  21 #include <crm/common/scheduler_types.h>     
  22 
  23 #ifdef __cplusplus
  24 extern "C" {
  25 #endif
  26 
  27 #if defined(PCMK__UNIT_TESTING)
  28 #undef G_GNUC_INTERNAL
  29 #define G_GNUC_INTERNAL
  30 #endif
  31 
  32 typedef struct notify_data_s {
  33     GSList *keys;               
  34 
  35     const char *action;
  36 
  37     pcmk_action_t *pre;
  38     pcmk_action_t *post;
  39     pcmk_action_t *pre_done;
  40     pcmk_action_t *post_done;
  41 
  42     GList *active;            
  43     GList *inactive;          
  44     GList *start;             
  45     GList *stop;              
  46     GList *demote;            
  47     GList *promote;           
  48     GList *promoted;          
  49     GList *unpromoted;        
  50     GHashTable *allowed_nodes;
  51 } notify_data_t;
  52 
  53 G_GNUC_INTERNAL
  54 pcmk_resource_t *pe__create_clone_child(pcmk_resource_t *rsc,
  55                                         pcmk_scheduler_t *scheduler);
  56 
  57 G_GNUC_INTERNAL
  58 void pe__create_action_notifications(pcmk_resource_t *rsc,
  59                                      notify_data_t *n_data);
  60 
  61 G_GNUC_INTERNAL
  62 void pe__free_action_notification_data(notify_data_t *n_data);
  63 
  64 G_GNUC_INTERNAL
  65 notify_data_t *pe__action_notif_pseudo_ops(pcmk_resource_t *rsc,
  66                                            const char *task,
  67                                            pcmk_action_t *action,
  68                                            pcmk_action_t *complete);
  69 
  70 G_GNUC_INTERNAL
  71 void pe__force_anon(const char *standard, pcmk_resource_t *rsc, const char *rid,
  72                     pcmk_scheduler_t *scheduler);
  73 
  74 G_GNUC_INTERNAL
  75 gint pe__cmp_rsc_priority(gconstpointer a, gconstpointer b);
  76 
  77 G_GNUC_INTERNAL
  78 gboolean pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc,
  79                              pcmk_resource_t *parent,
  80                              pcmk_scheduler_t *scheduler);
  81 
  82 G_GNUC_INTERNAL
  83 gboolean unpack_remote_nodes(xmlNode *xml_resources,
  84                              pcmk_scheduler_t *scheduler);
  85 
  86 G_GNUC_INTERNAL
  87 gboolean unpack_resources(const xmlNode *xml_resources,
  88                           pcmk_scheduler_t *scheduler);
  89 
  90 G_GNUC_INTERNAL
  91 void pcmk__validate_fencing_topology(const xmlNode *xml);
  92 
  93 G_GNUC_INTERNAL
  94 gboolean unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler);
  95 
  96 G_GNUC_INTERNAL
  97 gboolean unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler);
  98 
  99 G_GNUC_INTERNAL
 100 gboolean unpack_tags(xmlNode *xml_tags, pcmk_scheduler_t *scheduler);
 101 
 102 G_GNUC_INTERNAL
 103 gboolean unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler);
 104 
 105 G_GNUC_INTERNAL
 106 pcmk__op_digest_t *pe__compare_fencing_digest(pcmk_resource_t *rsc,
 107                                               const char *agent,
 108                                               pcmk_node_t *node,
 109                                               pcmk_scheduler_t *scheduler);
 110 
 111 G_GNUC_INTERNAL
 112 void pe__unpack_node_health_scores(pcmk_scheduler_t *scheduler);
 113 
 114 
 115 
 116 G_GNUC_INTERNAL
 117 unsigned int pe__primitive_max_per_node(const pcmk_resource_t *rsc);
 118 
 119 
 120 
 121 G_GNUC_INTERNAL
 122 unsigned int pe__group_max_per_node(const pcmk_resource_t *rsc);
 123 
 124 
 125 
 126 G_GNUC_INTERNAL
 127 unsigned int pe__clone_max_per_node(const pcmk_resource_t *rsc);
 128 
 129 
 130 
 131 G_GNUC_INTERNAL
 132 pcmk_node_t *pe__bundle_active_node(const pcmk_resource_t *rsc,
 133                                     unsigned int *count_all,
 134                                     unsigned int *count_clean);
 135 
 136 G_GNUC_INTERNAL
 137 unsigned int pe__bundle_max_per_node(const pcmk_resource_t *rsc);
 138 
 139 #ifdef __cplusplus
 140 }
 141 #endif
 142 
 143 #endif