MCPcopy Create free account
hub / github.com/ClusterLabs/pacemaker / try_cman

Function try_cman

tools/crm_node.c:402–475  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

400# include <libcman.h>
401# define MAX_NODES 256
402static gboolean
403try_cman(int command, enum cluster_type_e stack)
404{
405
406 int rc = -1, lpc = 0, node_count = 0;
407 cman_node_t node;
408 cman_cluster_t cluster;
409 cman_handle_t cman_handle = NULL;
410 cman_node_t cman_nodes[MAX_NODES];
411
412 memset(&cluster, 0, sizeof(cluster));
413
414 cman_handle = cman_init(NULL);
415 if (cman_handle == NULL || cman_is_active(cman_handle) == FALSE) {
416 crm_info("Couldn't connect to cman");
417 return FALSE;
418 }
419
420 switch (command) {
421 case 'R':
422 if (crmd_remove_node_cache(target_uname)) {
423 crm_err("Failed to connect to crmd to remove node id %s", target_uname);
424 }
425 break;
426
427 case 'e':
428 /* Age makes no sense (yet?) in a cman cluster */
429 fprintf(stdout, "1\n");
430 break;
431
432 case 'q':
433 fprintf(stdout, "%d\n", cman_is_quorate(cman_handle));
434 break;
435
436 case 'l':
437 case 'p':
438 rc = cman_get_nodes(cman_handle, MAX_NODES, &node_count, cman_nodes);
439 if (rc != 0) {
440 fprintf(stderr, "Couldn't query cman node list: %d %d", rc, errno);
441 goto cman_bail;
442 }
443
444 for (lpc = 0; lpc < node_count; lpc++) {
445 if (command == 'l') {
446 printf("%s ", cman_nodes[lpc].cn_name);
447
448 } else if (cman_nodes[lpc].cn_nodeid != 0 && cman_nodes[lpc].cn_member) {
449 /* Never allow node ID 0 to be considered a member #315711 */
450 printf("%s ", cman_nodes[lpc].cn_name);
451 }
452 }
453 printf("\n");
454 break;
455
456 case 'i':
457 rc = cman_get_node(cman_handle, CMAN_NODEID_US, &node);
458 if (rc != 0) {
459 fprintf(stderr, "Couldn't query cman node id: %d %d", rc, errno);

Callers 1

mainFunction · 0.85

Calls 3

crmd_remove_node_cacheFunction · 0.85
crm_helpFunction · 0.85
crm_exitFunction · 0.85

Tested by

no test coverage detected