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
42 const char *pcmk_role_text(enum rsc_role_e role);
43 enum rsc_role_e pcmk_parse_role(const char *role);
44
45 #ifdef __cplusplus
46 }
47 #endif
48
49 #endif // PCMK__CRM_COMMON_ROLES__H