pacemaker 2.1.8-2.1.8
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
nodes.c
Go to the documentation of this file.
1/*
2 * Copyright 2022-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 <libxml/tree.h> // xmlNode
13#include <crm/common/nvpair.h>
14
23bool
25{
26 return (node != NULL) && node->details->online;
27}
28
41bool
43{
44 return (node != NULL) && node->details->pending;
45}
46
60bool
62{
63 return (node != NULL) && !(node->details->unclean);
64}
65
74bool
76{
77 return (node != NULL) && node->details->shutdown;
78}
79
88bool
90{
91 return (node != NULL) && node->details->maintenance;
92}
93
106bool
108 bool (*fn)(pcmk_resource_t *, void *),
109 void *user_data)
110{
111 bool result = false;
112
113 if ((node != NULL) && (fn != NULL)) {
114 for (GList *item = node->details->running_rsc; item != NULL;
115 item = item->next) {
116
117 result = fn((pcmk_resource_t *) item->data, user_data);
118 if (!result) {
119 break;
120 }
121 }
122 }
123 return result;
124}
125
126void
127pcmk__xe_add_node(xmlNode *xml, const char *node, int nodeid)
128{
129 CRM_ASSERT(xml != NULL);
130
131 if (node != NULL) {
133 }
134
135 if (nodeid > 0) {
137 }
138}
139
150pcmk__find_node_in_list(const GList *nodes, const char *node_name)
151{
152 if (node_name != NULL) {
153 for (const GList *iter = nodes; iter != NULL; iter = iter->next) {
154 pcmk_node_t *node = (pcmk_node_t *) iter->data;
155
156 if (pcmk__str_eq(node->details->uname, node_name,
158 return node;
159 }
160 }
161 }
162 return NULL;
163}
pcmk_node_t * pcmk__find_node_in_list(const GList *nodes, const char *node_name)
Definition nodes.c:150
void pcmk__xe_add_node(xmlNode *xml, const char *node, int nodeid)
Definition nodes.c:127
bool pcmk_node_is_online(const pcmk_node_t *node)
Definition nodes.c:24
bool pcmk_node_is_shutting_down(const pcmk_node_t *node)
Definition nodes.c:75
bool pcmk_node_is_clean(const pcmk_node_t *node)
Definition nodes.c:61
bool pcmk_node_is_pending(const pcmk_node_t *node)
Definition nodes.c:42
bool pcmk_foreach_active_resource(pcmk_node_t *node, bool(*fn)(pcmk_resource_t *, void *), void *user_data)
Definition nodes.c:107
bool pcmk_node_is_in_maintenance(const pcmk_node_t *node)
Definition nodes.c:89
Functionality for manipulating name/value pairs.
const char * crm_xml_add_int(xmlNode *node, const char *name, int value)
Create an XML attribute with specified name and integer value.
Definition nvpair.c:348
const char * crm_xml_add(xmlNode *node, const char *name, const char *value)
Create an XML attribute with specified name and value.
Definition nvpair.c:301
pcmk__action_result_t result
Definition pcmk_fence.c:35
#define CRM_ASSERT(expr)
Definition results.h:42
@ pcmk__str_casei
struct pe_node_shared_s * details
Definition nodes.h:167
gboolean shutdown
Definition nodes.h:97
gboolean online
Definition nodes.h:80
const char * uname
Definition nodes.h:73
gboolean unclean
Definition nodes.h:91
gboolean maintenance
Definition nodes.h:104
gboolean pending
Definition nodes.h:87
GList * running_rsc
Definition nodes.h:139
#define PCMK__XA_ATTR_HOST_ID
#define PCMK__XA_ATTR_HOST