LCOV - code coverage report
Current view: top level - common - scheduler.c (source / functions) Hit Total Coverage
Test: Pacemaker code coverage Lines: 15 19 78.9 %
Date: 2024-05-07 11:09:47 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright 2004-2024 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             : #include <crm_internal.h>
      11             : 
      12             : #include <stdint.h>             // uint32_t
      13             : #include <errno.h>              // EINVAL
      14             : #include <glib.h>               // gboolean, FALSE
      15             : #include <libxml/tree.h>        // xmlNode
      16             : 
      17             : #include <crm/common/scheduler.h>
      18             : 
      19             : uint32_t pcmk__warnings = 0;
      20             : 
      21             : gboolean was_processing_error = FALSE;
      22             : gboolean was_processing_warning = FALSE;
      23             : 
      24             : /*!
      25             :  * \internal
      26             :  * \brief Get the Designated Controller node from scheduler data
      27             :  *
      28             :  * \param[in] scheduler  Scheduler data
      29             :  *
      30             :  * \return Designated Controller node from scheduler data, or NULL if none
      31             :  */
      32             : pcmk_node_t *
      33           3 : pcmk_get_dc(const pcmk_scheduler_t *scheduler)
      34             : {
      35           3 :     return (scheduler == NULL)? NULL : scheduler->dc_node;
      36             : }
      37             : 
      38             : /*!
      39             :  * \internal
      40             :  * \brief Get the no quorum policy from scheduler data
      41             :  *
      42             :  * \param[in] scheduler  Scheduler data
      43             :  *
      44             :  * \return No quorum policy from scheduler data
      45             :  */
      46             : enum pe_quorum_policy
      47           2 : pcmk_get_no_quorum_policy(const pcmk_scheduler_t *scheduler)
      48             : {
      49           2 :     if (scheduler == NULL) {
      50           1 :         return pcmk_no_quorum_stop; // The default
      51             :     }
      52           1 :     return scheduler->no_quorum_policy;
      53             : }
      54             : 
      55             : /*!
      56             :  * \internal
      57             :  * \brief Set CIB XML as scheduler input in scheduler data
      58             :  *
      59             :  * \param[out] scheduler  Scheduler data
      60             :  * \param[in]  cib        CIB XML to set as scheduler input
      61             :  *
      62             :  * \return Standard Pacemaker return code (EINVAL if \p scheduler is NULL,
      63             :  *         otherwise pcmk_rc_ok)
      64             :  * \note This will not free any previously set scheduler CIB.
      65             :  */
      66             : int
      67           5 : pcmk_set_scheduler_cib(pcmk_scheduler_t *scheduler, xmlNode *cib)
      68             : {
      69           5 :     if (scheduler == NULL) {
      70           2 :         return EINVAL;
      71             :     }
      72           3 :     scheduler->input = cib;
      73           3 :     return pcmk_rc_ok;
      74             : }
      75             : 
      76             : /*!
      77             :  * \internal
      78             :  * \brief Check whether cluster has quorum
      79             :  *
      80             :  * \param[in] scheduler  Scheduler data
      81             :  *
      82             :  * \return true if cluster has quorum, otherwise false
      83             :  */
      84             : bool
      85           3 : pcmk_has_quorum(const pcmk_scheduler_t *scheduler)
      86             : {
      87           3 :     if (scheduler == NULL) {
      88           1 :         return false;
      89             :     }
      90           2 :     return pcmk_is_set(scheduler->flags, pcmk_sched_quorate);
      91             : }
      92             : 
      93             : /*!
      94             :  * \brief Find a node by name in scheduler data
      95             :  *
      96             :  * \param[in] scheduler  Scheduler data
      97             :  * \param[in] node_name  Name of node to find
      98             :  *
      99             :  * \return Node from scheduler data that matches \p node_name if any,
     100             :  *         otherwise NULL
     101             :  */
     102             : pcmk_node_t *
     103           0 : pcmk_find_node(const pcmk_scheduler_t *scheduler, const char *node_name)
     104             : {
     105           0 :     if ((scheduler == NULL) || (node_name == NULL)) {
     106           0 :         return NULL;
     107             :     }
     108           0 :     return pcmk__find_node_in_list(scheduler->nodes, node_name);
     109             : }

Generated by: LCOV version 1.14