root/include/crm/pengine/status.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. pe_rsc_is_clone
  2. pe_rsc_is_unique_clone
  3. pe_rsc_is_anon_clone
  4. pe_rsc_is_bundled

   1 /*
   2  * Copyright 2004-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 PCMK__CRM_PENGINE_STATUS__H
  11 #  define PCMK__CRM_PENGINE_STATUS__H
  12 
  13 #  include <glib.h>                 // gboolean
  14 #  include <stdbool.h>              // bool
  15 #  include <crm/common/util.h>      // pcmk_is_set()
  16 #  include <crm/common/iso8601.h>
  17 #  include <crm/pengine/common.h>
  18 #  include <crm/pengine/pe_types.h> // pcmk_node_t, pcmk_resource_t, etc.
  19 #  include <crm/pengine/complex.h>
  20 
  21 #ifdef __cplusplus
  22 extern "C" {
  23 #endif
  24 
  25 /*!
  26  * \file
  27  * \brief Cluster status and scheduling
  28  * \ingroup pengine
  29  */
  30 
  31 const char *rsc_printable_id(const pcmk_resource_t *rsc);
  32 gboolean cluster_status(pcmk_scheduler_t *scheduler);
  33 pcmk_scheduler_t *pe_new_working_set(void);
  34 void pe_free_working_set(pcmk_scheduler_t *scheduler);
  35 void set_working_set_defaults(pcmk_scheduler_t *scheduler);
  36 void cleanup_calculations(pcmk_scheduler_t *scheduler);
  37 void pe_reset_working_set(pcmk_scheduler_t *scheduler);
  38 pcmk_resource_t *pe_find_resource(GList *rsc_list, const char *id_rh);
  39 pcmk_resource_t *pe_find_resource_with_flags(GList *rsc_list, const char *id,
  40                                              enum pe_find flags);
  41 pcmk_node_t *pe_find_node(const GList *node_list, const char *node_name);
  42 pcmk_node_t *pe_find_node_id(const GList *node_list, const char *id);
  43 pcmk_node_t *pe_find_node_any(const GList *node_list, const char *id,
  44                             const char *node_name);
  45 GList *find_operations(const char *rsc, const char *node, gboolean active_filter,
  46                          pcmk_scheduler_t *scheduler);
  47 void calculate_active_ops(const GList *sorted_op_list, int *start_index,
  48                           int *stop_index);
  49 int pe_bundle_replicas(const pcmk_resource_t *rsc);
  50 
  51 /*!
  52  * \brief Check whether a resource is any clone type
  53  *
  54  * \param[in] rsc  Resource to check
  55  *
  56  * \return true if resource is clone, false otherwise
  57  */
  58 static inline bool
  59 pe_rsc_is_clone(const pcmk_resource_t *rsc)
     /* [previous][next][first][last][top][bottom][index][help] */
  60 {
  61     return (rsc != NULL) && (rsc->variant == pcmk_rsc_variant_clone);
  62 }
  63 
  64 /*!
  65  * \brief Check whether a resource is a globally unique clone
  66  *
  67  * \param[in] rsc  Resource to check
  68  *
  69  * \return true if resource is unique clone, false otherwise
  70  */
  71 static inline bool
  72 pe_rsc_is_unique_clone(const pcmk_resource_t *rsc)
     /* [previous][next][first][last][top][bottom][index][help] */
  73 {
  74     return pe_rsc_is_clone(rsc) && pcmk_is_set(rsc->flags, pcmk_rsc_unique);
  75 }
  76 
  77 /*!
  78  * \brief Check whether a resource is an anonymous clone
  79  *
  80  * \param[in] rsc  Resource to check
  81  *
  82  * \return true if resource is anonymous clone, false otherwise
  83  */
  84 static inline bool
  85 pe_rsc_is_anon_clone(const pcmk_resource_t *rsc)
     /* [previous][next][first][last][top][bottom][index][help] */
  86 {
  87     return pe_rsc_is_clone(rsc) && !pcmk_is_set(rsc->flags, pcmk_rsc_unique);
  88 }
  89 
  90 /*!
  91  * \brief Check whether a resource is part of a bundle
  92  *
  93  * \param[in] rsc  Resource to check
  94  *
  95  * \return true if resource is part of a bundle, false otherwise
  96  */
  97 static inline bool
  98 pe_rsc_is_bundled(const pcmk_resource_t *rsc)
     /* [previous][next][first][last][top][bottom][index][help] */
  99 {
 100     if (rsc == NULL) {
 101         return false;
 102     }
 103     while (rsc->parent != NULL) {
 104         rsc = rsc->parent;
 105     }
 106     return rsc->variant == pcmk_rsc_variant_bundle;
 107 }
 108 
 109 #ifdef __cplusplus
 110 }
 111 #endif
 112 
 113 #endif

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