Skip to content

Commit bf39184

Browse files
committed
Refactor: various: use new convenience functions for generating XML IDs
1 parent dc977b6 commit bf39184

File tree

7 files changed

+41
-121
lines changed

7 files changed

+41
-121
lines changed

attrd/commands.c

+12-29
Original file line numberDiff line numberDiff line change
@@ -1033,43 +1033,29 @@ write_attributes(bool all, bool peer_discovered)
10331033
static void
10341034
build_update_element(xmlNode *parent, attribute_t *a, const char *nodeid, const char *value)
10351035
{
1036-
char *set = NULL;
1037-
char *uuid = NULL;
1036+
const char *set = NULL;
10381037
xmlNode *xml_obj = NULL;
10391038

1040-
if(a->set) {
1041-
set = strdup(a->set);
1042-
} else {
1043-
set = crm_strdup_printf("%s-%s", XML_CIB_TAG_STATUS, nodeid);
1044-
}
1045-
1046-
if(a->uuid) {
1047-
uuid = strdup(a->uuid);
1048-
} else {
1049-
int lpc;
1050-
uuid = crm_strdup_printf("%s-%s", set, a->id);
1051-
1052-
/* Minimal attempt at sanitizing automatic IDs */
1053-
for (lpc = 0; uuid[lpc] != 0; lpc++) {
1054-
switch (uuid[lpc]) {
1055-
case ':':
1056-
case '#':
1057-
uuid[lpc] = '.';
1058-
}
1059-
}
1060-
}
1061-
10621039
xml_obj = create_xml_node(parent, XML_CIB_TAG_STATE);
10631040
crm_xml_add(xml_obj, XML_ATTR_ID, nodeid);
10641041

10651042
xml_obj = create_xml_node(xml_obj, XML_TAG_TRANSIENT_NODEATTRS);
10661043
crm_xml_add(xml_obj, XML_ATTR_ID, nodeid);
10671044

10681045
xml_obj = create_xml_node(xml_obj, XML_TAG_ATTR_SETS);
1069-
crm_xml_add(xml_obj, XML_ATTR_ID, set);
1046+
if (a->set) {
1047+
crm_xml_set_id(xml_obj, "%s", a->set);
1048+
} else {
1049+
crm_xml_set_id(xml_obj, "%s-%s", XML_CIB_TAG_STATUS, nodeid);
1050+
}
1051+
set = ID(xml_obj);
10701052

10711053
xml_obj = create_xml_node(xml_obj, XML_CIB_TAG_NVPAIR);
1072-
crm_xml_add(xml_obj, XML_ATTR_ID, uuid);
1054+
if (a->uuid) {
1055+
crm_xml_set_id(xml_obj, "%s", a->uuid);
1056+
} else {
1057+
crm_xml_set_id(xml_obj, "%s-%s", set, a->id);
1058+
}
10731059
crm_xml_add(xml_obj, XML_NVPAIR_ATTR_NAME, a->id);
10741060

10751061
if(value) {
@@ -1079,9 +1065,6 @@ build_update_element(xmlNode *parent, attribute_t *a, const char *nodeid, const
10791065
crm_xml_add(xml_obj, XML_NVPAIR_ATTR_VALUE, "");
10801066
crm_xml_add(xml_obj, "__delete__", XML_NVPAIR_ATTR_VALUE);
10811067
}
1082-
1083-
free(uuid);
1084-
free(set);
10851068
}
10861069

10871070
void

crmd/pengine.c

+3-5
Original file line numberDiff line numberDiff line change
@@ -264,12 +264,12 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value)
264264
}
265265

266266
if(max == 0) {
267-
char *attr_id = crm_concat(CIB_OPTIONS_FIRST, attr_name, '-');
268267
xmlNode *configuration = NULL;
269268
xmlNode *crm_config = NULL;
270269
xmlNode *cluster_property_set = NULL;
271270

272-
crm_trace("Creating %s/%s = %s", attr_id, attr_name, attr_value);
271+
crm_trace("Creating %s-%s for %s=%s",
272+
CIB_OPTIONS_FIRST, attr_name, attr_name, attr_value);
273273

274274
configuration = find_entity(xml, XML_CIB_TAG_CONFIGURATION, NULL);
275275
if (configuration == NULL) {
@@ -289,11 +289,9 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value)
289289

290290
xml = create_xml_node(cluster_property_set, XML_CIB_TAG_NVPAIR);
291291

292-
crm_xml_add(xml, XML_ATTR_ID, attr_id);
292+
crm_xml_set_id(xml, "%s-%s", CIB_OPTIONS_FIRST, attr_name);
293293
crm_xml_add(xml, XML_NVPAIR_ATTR_NAME, attr_name);
294294
crm_xml_add(xml, XML_NVPAIR_ATTR_VALUE, attr_value);
295-
296-
free(attr_id);
297295
}
298296
freeXpathObject(xpathObj);
299297
}

lib/cluster/corosync.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -548,12 +548,9 @@ corosync_initialize_nodelist(void *cluster, gboolean force_member, xmlNode * xml
548548
any = TRUE;
549549

550550
if (xml_parent) {
551-
char buffer[64];
552551
xmlNode *node = create_xml_node(xml_parent, XML_CIB_TAG_NODE);
553552

554-
if(snprintf(buffer, 63, "%u", nodeid) > 0) {
555-
crm_xml_add(node, XML_ATTR_ID, buffer);
556-
}
553+
crm_xml_set_id(node, "%u", nodeid);
557554
crm_xml_add(node, XML_ATTR_UNAME, name);
558555
if (force_member) {
559556
crm_xml_add(node, XML_ATTR_TYPE, CRM_NODE_MEMBER);

lib/pengine/unpack.c

+9-28
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,6 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_
373373
const char *remote_port = NULL;
374374
const char *connect_timeout = "60s";
375375
const char *remote_allow_migrate=NULL;
376-
char *tmp_id = NULL;
377376

378377
for (attr_set = __xml_first_child(xml_obj); attr_set != NULL; attr_set = __xml_next_element(attr_set)) {
379378
if (safe_str_neq((const char *)attr_set->name, XML_TAG_META_SETS)) {
@@ -427,73 +426,55 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_
427426
crm_xml_add(xml_rsc, XML_ATTR_TYPE, "remote");
428427

429428
xml_tmp = create_xml_node(xml_rsc, XML_TAG_META_SETS);
430-
tmp_id = crm_concat(remote_name, XML_TAG_META_SETS, '_');
431-
crm_xml_add(xml_tmp, XML_ATTR_ID, tmp_id);
432-
free(tmp_id);
429+
crm_xml_set_id(xml_tmp, "%s_%s", remote_name, XML_TAG_META_SETS);
433430

434431
attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR);
435-
tmp_id = crm_concat(remote_name, "meta-attributes-container", '_');
436-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
432+
crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-container");
437433
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_RSC_ATTR_CONTAINER);
438434
crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, container_id);
439-
free(tmp_id);
440435

441436
attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR);
442-
tmp_id = crm_concat(remote_name, "meta-attributes-internal", '_');
443-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
437+
crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-internal");
444438
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_RSC_ATTR_INTERNAL_RSC);
445439
crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, "true");
446-
free(tmp_id);
447440

448441
if (remote_allow_migrate) {
449442
attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR);
450-
tmp_id = crm_concat(remote_name, "meta-attributes-container", '_');
451-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
443+
crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-container");
452444
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_OP_ATTR_ALLOW_MIGRATE);
453445
crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_allow_migrate);
454-
free(tmp_id);
455446
}
456447

457448
xml_tmp = create_xml_node(xml_rsc, "operations");
458449
attr = create_xml_node(xml_tmp, XML_ATTR_OP);
459-
tmp_id = crm_concat(remote_name, "monitor-interval-30s", '_');
460-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
450+
crm_xml_set_id(attr, "%s_%s", remote_name, "monitor-interval-30s");
461451
crm_xml_add(attr, XML_ATTR_TIMEOUT, "30s");
462452
crm_xml_add(attr, XML_LRM_ATTR_INTERVAL, "30s");
463453
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "monitor");
464-
free(tmp_id);
465454

466455
if (connect_timeout) {
467456
attr = create_xml_node(xml_tmp, XML_ATTR_OP);
468-
tmp_id = crm_concat(remote_name, "start-interval-0", '_');
469-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
457+
crm_xml_set_id(attr, "%s_%s", remote_name, "start-interval-0");
470458
crm_xml_add(attr, XML_ATTR_TIMEOUT, connect_timeout);
471459
crm_xml_add(attr, XML_LRM_ATTR_INTERVAL, "0");
472460
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "start");
473-
free(tmp_id);
474461
}
475462

476463
if (remote_port || remote_server) {
477464
xml_tmp = create_xml_node(xml_rsc, XML_TAG_ATTR_SETS);
478-
tmp_id = crm_concat(remote_name, XML_TAG_ATTR_SETS, '_');
479-
crm_xml_add(xml_tmp, XML_ATTR_ID, tmp_id);
480-
free(tmp_id);
465+
crm_xml_set_id(xml_tmp, "%s_%s", remote_name, XML_TAG_ATTR_SETS);
481466

482467
if (remote_server) {
483468
attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR);
484-
tmp_id = crm_concat(remote_name, "instance-attributes-addr", '_');
485-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
469+
crm_xml_set_id(attr, "%s_%s", remote_name, "instance-attributes-addr");
486470
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "addr");
487471
crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_server);
488-
free(tmp_id);
489472
}
490473
if (remote_port) {
491474
attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR);
492-
tmp_id = crm_concat(remote_name, "instance-attributes-port", '_');
493-
crm_xml_add(attr, XML_ATTR_ID, tmp_id);
475+
crm_xml_set_id(attr, "%s_%s", remote_name, "instance-attributes-port");
494476
crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "port");
495477
crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_port);
496-
free(tmp_id);
497478
}
498479
}
499480

tools/crm_node.c

+3-9
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,8 @@ cib_remove_node(uint32_t id, const char *name)
105105
crm_xml_add(node, XML_ATTR_UNAME, name);
106106
crm_xml_add(node_state, XML_ATTR_UNAME, name);
107107
if(id) {
108-
char buffer[64];
109-
if(snprintf(buffer, 63, "%u", id) > 0) {
110-
crm_xml_add(node, XML_ATTR_ID, buffer);
111-
crm_xml_add(node_state, XML_ATTR_ID, buffer);
112-
}
108+
crm_xml_set_id(node, "%u", id);
109+
crm_xml_add(node_state, XML_ATTR_ID, ID(node));
113110
}
114111

115112
cib = cib_new();
@@ -200,10 +197,7 @@ int tools_remove_node_cache(const char *node, const char *target)
200197
cmd = create_request(CRM_OP_RM_NODE_CACHE,
201198
NULL, NULL, target, crm_system_name, admin_uuid);
202199
if (n) {
203-
char buffer[64];
204-
if(snprintf(buffer, 63, "%u", n) > 0) {
205-
crm_xml_add(cmd, XML_ATTR_ID, buffer);
206-
}
200+
crm_xml_set_id(cmd, "%u", n);
207201
}
208202
crm_xml_add(cmd, XML_ATTR_UNAME, name);
209203
}

tools/crm_resource_ban.c

+12-42
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t
6262
{
6363
char *later_s = NULL;
6464
int rc = pcmk_ok;
65-
char *id = NULL;
6665
xmlNode *fragment = NULL;
6766
xmlNode *location = NULL;
6867

@@ -83,10 +82,8 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t
8382

8483
fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS);
8584

86-
id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, host);
8785
location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION);
88-
crm_xml_add(location, XML_ATTR_ID, id);
89-
free(id);
86+
crm_xml_set_id(location, "cli-ban-%s-on-%s", rsc_id, host);
9087

9188
if (BE_QUIET == FALSE) {
9289
CMD_ERR("WARNING: Creating rsc_location constraint '%s'"
@@ -117,27 +114,18 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t
117114
xmlNode *rule = create_xml_node(location, XML_TAG_RULE);
118115
xmlNode *expr = create_xml_node(rule, XML_TAG_EXPRESSION);
119116

120-
id = crm_strdup_printf("cli-ban-%s-on-%s-rule", rsc_id, host);
121-
crm_xml_add(rule, XML_ATTR_ID, id);
122-
free(id);
123-
117+
crm_xml_set_id(rule, "cli-ban-%s-on-%s-rule", rsc_id, host);
124118
crm_xml_add(rule, XML_RULE_ATTR_SCORE, MINUS_INFINITY_S);
125119
crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and");
126120

127-
id = crm_strdup_printf("cli-ban-%s-on-%s-expr", rsc_id, host);
128-
crm_xml_add(expr, XML_ATTR_ID, id);
129-
free(id);
130-
121+
crm_xml_set_id(expr, "cli-ban-%s-on-%s-expr", rsc_id, host);
131122
crm_xml_add(expr, XML_EXPR_ATTR_ATTRIBUTE, "#uname");
132123
crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq");
133124
crm_xml_add(expr, XML_EXPR_ATTR_VALUE, host);
134125
crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string");
135126

136127
expr = create_xml_node(rule, "date_expression");
137-
id = crm_strdup_printf("cli-ban-%s-on-%s-lifetime", rsc_id, host);
138-
crm_xml_add(expr, XML_ATTR_ID, id);
139-
free(id);
140-
128+
crm_xml_set_id(expr, "cli-ban-%s-on-%s-lifetime", rsc_id, host);
141129
crm_xml_add(expr, "operation", "lt");
142130
crm_xml_add(expr, "end", later_s);
143131
}
@@ -156,7 +144,6 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn)
156144
{
157145
char *later_s = parse_cli_lifetime(move_lifetime);
158146
int rc = pcmk_ok;
159-
char *id = NULL;
160147
xmlNode *location = NULL;
161148
xmlNode *fragment = NULL;
162149

@@ -171,10 +158,8 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn)
171158

172159
fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS);
173160

174-
id = crm_strdup_printf("cli-prefer-%s", rsc_id);
175161
location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION);
176-
crm_xml_add(location, XML_ATTR_ID, id);
177-
free(id);
162+
crm_xml_set_id(location, "cli-prefer-%s", rsc_id);
178163

179164
crm_xml_add(location, XML_LOC_ATTR_SOURCE, rsc_id);
180165
if(scope_master) {
@@ -192,27 +177,18 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn)
192177
xmlNode *rule = create_xml_node(location, XML_TAG_RULE);
193178
xmlNode *expr = create_xml_node(rule, XML_TAG_EXPRESSION);
194179

195-
id = crm_concat("cli-prefer-rule", rsc_id, '-');
196-
crm_xml_add(rule, XML_ATTR_ID, id);
197-
free(id);
198-
180+
crm_xml_set_id(rule, "cli-prefer-rule-%s", rsc_id);
199181
crm_xml_add(rule, XML_RULE_ATTR_SCORE, INFINITY_S);
200182
crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and");
201183

202-
id = crm_concat("cli-prefer-expr", rsc_id, '-');
203-
crm_xml_add(expr, XML_ATTR_ID, id);
204-
free(id);
205-
184+
crm_xml_set_id(expr, "cli-prefer-expr-%s", rsc_id);
206185
crm_xml_add(expr, XML_EXPR_ATTR_ATTRIBUTE, "#uname");
207186
crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq");
208187
crm_xml_add(expr, XML_EXPR_ATTR_VALUE, host);
209188
crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string");
210189

211190
expr = create_xml_node(rule, "date_expression");
212-
id = crm_concat("cli-prefer-lifetime-end", rsc_id, '-');
213-
crm_xml_add(expr, XML_ATTR_ID, id);
214-
free(id);
215-
191+
crm_xml_set_id(expr, "cli-prefer-lifetime-end-%s", rsc_id);
216192
crm_xml_add(expr, "operation", "lt");
217193
crm_xml_add(expr, "end", later_s);
218194
}
@@ -228,7 +204,6 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn)
228204
int
229205
cli_resource_clear(const char *rsc_id, const char *host, GListPtr allnodes, cib_t * cib_conn)
230206
{
231-
char *id = NULL;
232207
int rc = pcmk_ok;
233208
xmlNode *fragment = NULL;
234209
xmlNode *location = NULL;
@@ -240,30 +215,25 @@ cli_resource_clear(const char *rsc_id, const char *host, GListPtr allnodes, cib_
240215
fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS);
241216

242217
if(host) {
243-
id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, host);
244218
location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION);
245-
crm_xml_add(location, XML_ATTR_ID, id);
246-
free(id);
219+
crm_xml_set_id(location, "cli-ban-%s-on-%s", rsc_id, host);
247220

248221
} else {
249222
GListPtr n = allnodes;
250223
for(; n; n = n->next) {
251224
node_t *target = n->data;
252225

253-
id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, target->details->uname);
254226
location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION);
255-
crm_xml_add(location, XML_ATTR_ID, id);
256-
free(id);
227+
crm_xml_set_id(location, "cli-ban-%s-on-%s",
228+
rsc_id, target->details->uname);
257229
}
258230
}
259231

260-
id = crm_strdup_printf("cli-prefer-%s", rsc_id);
261232
location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION);
262-
crm_xml_add(location, XML_ATTR_ID, id);
233+
crm_xml_set_id(location, "cli-prefer-%s", rsc_id);
263234
if(host && do_force == FALSE) {
264235
crm_xml_add(location, XML_CIB_TAG_NODE, host);
265236
}
266-
free(id);
267237

268238
crm_log_xml_info(fragment, "Delete");
269239
rc = cib_conn->cmds->delete(cib_conn, XML_CIB_TAG_CONSTRAINTS, fragment, cib_options);

tools/fake_transition.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ inject_transient_attr(xmlNode * cib_node, const char *name, const char *value)
6767
xmlNode *nvp = NULL;
6868
xmlChar *node_path;
6969
const char *node_uuid = ID(cib_node);
70-
char *nvp_id = crm_concat(name, node_uuid, '-');
7170

7271
node_path = xmlGetNodePath(cib_node);
7372
quiet_log(" + Injecting attribute %s=%s into %s '%s'\n",
@@ -87,11 +86,9 @@ inject_transient_attr(xmlNode * cib_node, const char *name, const char *value)
8786
}
8887

8988
nvp = create_xml_node(container, XML_CIB_TAG_NVPAIR);
90-
crm_xml_add(nvp, XML_ATTR_ID, nvp_id);
89+
crm_xml_set_id(nvp, "%s-%s", name, node_uuid);
9190
crm_xml_add(nvp, XML_NVPAIR_ATTR_NAME, name);
9291
crm_xml_add(nvp, XML_NVPAIR_ATTR_VALUE, value);
93-
94-
free(nvp_id);
9592
}
9693

9794
static void

0 commit comments

Comments
 (0)