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 #ifndef PCMK__CRM_COMMON_ROLES__H
11 #define PCMK__CRM_COMMON_ROLES__H
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 /*!
18 * \file
19 * \brief Scheduler API for resource roles
20 * \ingroup core
21 */
22
23 // String equivalents of enum rsc_role_e
24
25 #define PCMK_ROLE_STOPPED "Stopped"
26 #define PCMK_ROLE_STARTED "Started"
27 #define PCMK_ROLE_UNPROMOTED "Unpromoted"
28 #define PCMK_ROLE_PROMOTED "Promoted"
29
30 /*!
31 * Possible roles that a resource can be in
32 * (order matters; values can be compared with less than and greater than)
33 */
34 enum rsc_role_e {
35 pcmk_role_unknown = 0, //!< Resource role is unknown
36 pcmk_role_stopped = 1, //!< Stopped
37 pcmk_role_started = 2, //!< Started
38 pcmk_role_unpromoted = 3, //!< Unpromoted
39 pcmk_role_promoted = 4, //!< Promoted
40
41 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
42 //! \deprecated Use pcmk_role_unknown instead
43 RSC_ROLE_UNKNOWN = pcmk_role_unknown,
44
45 //! \deprecated Use pcmk_role_stopped instead
46 RSC_ROLE_STOPPED = pcmk_role_stopped,
47
48 //! \deprecated Use pcmk_role_started instead
49 RSC_ROLE_STARTED = pcmk_role_started,
50
51 //! \deprecated Use pcmk_role_unpromoted instead
52 RSC_ROLE_UNPROMOTED = pcmk_role_unpromoted,
53
54 //! \deprecated Use pcmk_role_unpromoted instead
55 RSC_ROLE_SLAVE = pcmk_role_unpromoted,
56
57 //! \deprecated Use pcmk_role_promoted instead
58 RSC_ROLE_PROMOTED = pcmk_role_promoted,
59
60 //! \deprecated Use pcmk_role_promoted instead
61 RSC_ROLE_MASTER = pcmk_role_promoted,
62 #endif
63 };
64
65 const char *pcmk_role_text(enum rsc_role_e role);
66 enum rsc_role_e pcmk_parse_role(const char *role);
67
68 #ifdef __cplusplus
69 }
70 #endif
71
72 #endif // PCMK__CRM_COMMON_ROLES__H