root/include/pcmki/pcmki_simulate.h

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

INCLUDED FROM


   1 /*
   2  * Copyright 2021-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__PCMKI_PCMKI_SIMULATE__H
  11 #  define PCMK__PCMKI_PCMKI_SIMULATE__H
  12 
  13 #include <crm/common/output_internal.h>
  14 #include <crm/common/scheduler.h>
  15 #include <pcmki/pcmki_transition.h>
  16 #include <crm/cib.h>                    // cib_t
  17 #include <pacemaker.h>
  18 #include <stdbool.h>
  19 #include <stdint.h>
  20 
  21 /*!
  22  * \internal
  23  * \brief Profile the configuration updates and scheduler actions in every
  24  *        CIB file in a given directory, printing the profiling timings for
  25  *        each.
  26  *
  27  * \note \p scheduler->priv must have been set to a valid \p pcmk__output_t
  28  *       object before this function is called.
  29  *
  30  * \param[in]     dir        A directory full of CIB files to be profiled
  31  * \param[in]     repeat     Number of times to run on each input file
  32  * \param[in,out] scheduler  Scheduler data
  33  * \param[in]     use_date   The date to set the cluster's time to (may be NULL)
  34  */
  35 void pcmk__profile_dir(const char *dir, long long repeat,
  36                        pcmk_scheduler_t *scheduler, const char *use_date);
  37 
  38 /*!
  39  * \internal
  40  * \brief Simulate executing a transition
  41  *
  42  * \param[in,out] scheduler     Scheduler data
  43  * \param[in,out] cib           CIB object for scheduler input
  44  * \param[in]     op_fail_list  List of actions to simulate as failing
  45  *
  46  * \return Transition status after simulated execution
  47  */
  48 enum pcmk__graph_status pcmk__simulate_transition(pcmk_scheduler_t *scheduler,
  49                                                   cib_t *cib,
  50                                                   const GList *op_fail_list);
  51 
  52 /*!
  53  * \internal
  54  * \brief Simulate a cluster's response to events
  55  *
  56  * This high-level function essentially implements crm_simulate(8).  It operates
  57  * on an input CIB file and various lists of events that can be simulated.  It
  58  * optionally writes out a variety of artifacts to show the results of the
  59  * simulation.  Output can be modified with various flags.
  60  *
  61  * \param[in,out] scheduler    Scheduler data
  62  * \param[in,out] out          The output functions structure
  63  * \param[in]     injections   A structure containing cluster events
  64  *                             (node up/down, tickets, injected operations)
  65  *                             and related data
  66  * \param[in]     flags        A bitfield of \p pcmk_sim_flags to modify
  67  *                             operation of the simulation
  68  * \param[in]     section_opts Which portions of the cluster status output
  69  *                             should be displayed?
  70  * \param[in]     use_date     The date to set the cluster's time to
  71  *                             (may be NULL)
  72  * \param[in]     input_file   The source CIB file, which may be overwritten by
  73  *                             this function (may be NULL)
  74  * \param[in]     graph_file   Where to write the XML-formatted transition graph
  75  *                             (may be NULL, in which case no file will be
  76  *                             written)
  77  * \param[in]     dot_file     Where to write the dot(1) formatted transition
  78  *                             graph (may be NULL, in which case no file will
  79  *                             be written; see \p pcmk__write_sim_dotfile())
  80  *
  81  * \return Standard Pacemaker return code
  82  */
  83 int pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out,
  84                    const pcmk_injections_t *injections, unsigned int flags,
  85                    uint32_t section_opts, const char *use_date,
  86                    const char *input_file, const char *graph_file,
  87                    const char *dot_file);
  88 
  89 /*!
  90  * \internal
  91  *
  92  * If this global is set to true, simulations will add nodes to the
  93  * CIB configuration section, as well as the status section.
  94  */
  95 extern bool pcmk__simulate_node_config;
  96 
  97 #endif

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