pacemaker  1.1.18-7fdfbbe
Scalable High-Availability cluster resource manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
membership.c File Reference
#include <crm_internal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <glib.h>
#include <crm/common/ipc.h>
#include <crm/cluster/internal.h>
#include <crm/msg_xml.h>
#include <crm/stonith-ng.h>
Include dependency graph for membership.c:

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 
#define s_if_plural(i)   (((i) == 1)? "" : "s")
 
#define XPATH_GUEST_NODE_CONFIG
 
#define XPATH_REMOTE_NODE_CONFIG
 
#define XPATH_REMOTE_NODE_STATUS
 

Functions

int crm_remote_peer_cache_size (void)
 
crm_node_tcrm_remote_peer_get (const char *node_name)
 Get a remote node peer cache entry, creating it if necessary. More...
 
void crm_remote_peer_cache_add (const char *node_name)
 Add a node to the remote peer cache. More...
 
void crm_remote_peer_cache_remove (const char *node_name)
 
void crm_remote_peer_cache_refresh (xmlNode *cib)
 Repopulate the remote peer cache based on CIB XML. More...
 
gboolean crm_is_peer_active (const crm_node_t *node)
 
guint reap_crm_member (uint32_t id, const char *name)
 Remove all peer cache entries matching a node ID and/or uname. More...
 
guint crm_active_peers (void)
 
void crm_peer_init (void)
 
void crm_peer_destroy (void)
 
void crm_set_status_callback (void(*dispatch)(enum crm_status_type, crm_node_t *, const void *))
 Set a client function that will be called after peer status changes. More...
 
void crm_set_autoreap (gboolean autoreap)
 Tell the library whether to automatically reap lost nodes. More...
 
crm_node_tcrm_find_peer_full (unsigned int id, const char *uname, int flags)
 
crm_node_tcrm_get_peer_full (unsigned int id, const char *uname, int flags)
 
crm_node_tcrm_find_peer (unsigned int id, const char *uname)
 
crm_node_tcrm_get_peer (unsigned int id, const char *uname)
 
crm_node_tcrm_update_peer (const char *source, unsigned int id, uint64_t born, uint64_t seen, int32_t votes, uint32_t children, const char *uuid, const char *uname, const char *addr, const char *state)
 
void crm_update_peer_uname (crm_node_t *node, const char *uname)
 
crm_node_tcrm_update_peer_proc (const char *source, crm_node_t *node, uint32_t flag, const char *status)
 
void crm_update_peer_expected (const char *source, crm_node_t *node, const char *expected)
 
crm_node_tcrm_update_peer_state (const char *source, crm_node_t *node, const char *state, int membership)
 Update a node's state and membership information. More...
 
void crm_reap_unseen_nodes (uint64_t membership)
 
int crm_terminate_member (int nodeid, const char *uname, void *unused)
 
int crm_terminate_member_no_mainloop (int nodeid, const char *uname, int *connection)
 

Variables

GHashTable * crm_peer_cache = NULL
 
GHashTable * crm_remote_peer_cache = NULL
 
unsigned long long crm_peer_seq = 0
 
gboolean crm_have_quorum = FALSE
 
void(* crm_status_callback )(enum crm_status_type, crm_node_t *, const void *) = NULL
 

Macro Definition Documentation

#define _GNU_SOURCE

Definition at line 21 of file membership.c.

#define s_if_plural (   i)    (((i) == 1)? "" : "s")

Definition at line 35 of file membership.c.

#define XPATH_GUEST_NODE_CONFIG
Value:
"[@name='" XML_RSC_ATTR_REMOTE_NODE "']"
#define XML_CIB_TAG_NVPAIR
Definition: msg_xml.h:181
#define XML_CIB_TAG_RESOURCE
Definition: msg_xml.h:195
#define XML_TAG_META_SETS
Definition: msg_xml.h:185
#define XML_RSC_ATTR_REMOTE_NODE
Definition: msg_xml.h:232
#define XML_TAG_CIB
Definition: msg_xml.h:81
#define XML_CIB_TAG_CONFIGURATION
Definition: msg_xml.h:157

Definition at line 236 of file membership.c.

#define XPATH_REMOTE_NODE_CONFIG
Value:
"[@type='remote'][@provider='pacemaker']"
#define XML_CIB_TAG_RESOURCE
Definition: msg_xml.h:195
#define XML_TAG_CIB
Definition: msg_xml.h:81
#define XML_CIB_TAG_CONFIGURATION
Definition: msg_xml.h:157

Definition at line 242 of file membership.c.

#define XPATH_REMOTE_NODE_STATUS
Value:
"[@" XML_NODE_IS_REMOTE "='true']"
#define XML_CIB_TAG_STATE
Definition: msg_xml.h:177
#define XML_NODE_IS_REMOTE
Definition: msg_xml.h:272
#define XML_TAG_CIB
Definition: msg_xml.h:81
#define XML_CIB_TAG_STATUS
Definition: msg_xml.h:158

Definition at line 247 of file membership.c.

Function Documentation

guint crm_active_peers ( void  )

Definition at line 393 of file membership.c.

crm_node_t* crm_find_peer ( unsigned int  id,
const char *  uname 
)

Definition at line 540 of file membership.c.

crm_node_t* crm_find_peer_full ( unsigned int  id,
const char *  uname,
int  flags 
)

Definition at line 502 of file membership.c.

crm_node_t* crm_get_peer ( unsigned int  id,
const char *  uname 
)

Definition at line 676 of file membership.c.

crm_node_t* crm_get_peer_full ( unsigned int  id,
const char *  uname,
int  flags 
)

Definition at line 521 of file membership.c.

gboolean crm_is_peer_active ( const crm_node_t node)

Definition at line 295 of file membership.c.

void crm_peer_destroy ( void  )

Definition at line 431 of file membership.c.

void crm_peer_init ( void  )

Definition at line 419 of file membership.c.

void crm_reap_unseen_nodes ( uint64_t  membership)

Definition at line 1089 of file membership.c.

void crm_remote_peer_cache_add ( const char *  node_name)

Add a node to the remote peer cache.

Parameters
[in]node_nameName of remote node
Note
This is a legacy convenience wrapper for crm_remote_peer_get() for callers that don't need the cache entry returned.

Definition at line 137 of file membership.c.

void crm_remote_peer_cache_refresh ( xmlNode *  cib)

Repopulate the remote peer cache based on CIB XML.

Parameters
[in]xmlNodeCIB XML to parse

Definition at line 257 of file membership.c.

void crm_remote_peer_cache_remove ( const char *  node_name)

Definition at line 143 of file membership.c.

int crm_remote_peer_cache_size ( void  )

Definition at line 69 of file membership.c.

crm_node_t* crm_remote_peer_get ( const char *  node_name)

Get a remote node peer cache entry, creating it if necessary.

Parameters
[in]node_nameName of remote node
Returns
Cache entry for node on success, NULL (and set errno) otherwise
Note
When creating a new entry, this will leave the node state undetermined, so the caller should also call crm_update_peer_state() if the state is known.

Definition at line 89 of file membership.c.

void crm_set_autoreap ( gboolean  autoreap)

Tell the library whether to automatically reap lost nodes.

If TRUE (the default), calling crm_update_peer_proc() will also update the peer state to CRM_NODE_MEMBER or CRM_NODE_LOST, and crm_update_peer_state() will reap peers whose state changes to anything other than CRM_NODE_MEMBER. Callers should leave this enabled unless they plan to manage the cache separately on their own.

Parameters
[in]autoreapTRUE to enable automatic reaping, FALSE to disable

Definition at line 476 of file membership.c.

void crm_set_status_callback ( void(*)(enum crm_status_type, crm_node_t *, const void *)  dispatch)

Set a client function that will be called after peer status changes.

Parameters
[in]dispatchPointer to function to use as callback
Note
Previously, client callbacks were responsible for peer cache management. This is no longer the case, and client callbacks should do only client-specific handling. Callbacks MUST NOT add or remove entries in the peer caches.

Definition at line 459 of file membership.c.

int crm_terminate_member ( int  nodeid,
const char *  uname,
void *  unused 
)

Definition at line 1115 of file membership.c.

int crm_terminate_member_no_mainloop ( int  nodeid,
const char *  uname,
int *  connection 
)

Definition at line 1122 of file membership.c.

crm_node_t* crm_update_peer ( const char *  source,
unsigned int  id,
uint64_t  born,
uint64_t  seen,
int32_t  votes,
uint32_t  children,
const char *  uuid,
const char *  uname,
const char *  addr,
const char *  state 
)

Definition at line 755 of file membership.c.

void crm_update_peer_expected ( const char *  source,
crm_node_t node,
const char *  expected 
)

Definition at line 965 of file membership.c.

crm_node_t* crm_update_peer_proc ( const char *  source,
crm_node_t node,
uint32_t  flag,
const char *  status 
)

Definition at line 891 of file membership.c.

crm_node_t* crm_update_peer_state ( const char *  source,
crm_node_t node,
const char *  state,
int  membership 
)

Update a node's state and membership information.

Parameters
[in]sourceCaller's function name (for log messages)
[in]nodeNode object to update
[in]stateNode's new state
[in]membershipNode's new membership ID
Returns
NULL if any node was reaped, value of node otherwise
Note
If this function returns NULL, the supplied node object was likely freed and should not be used again. This function should not be called within a cache iteration if reaping is possible, otherwise reaping could invalidate the iterator.

Definition at line 1077 of file membership.c.

void crm_update_peer_uname ( crm_node_t node,
const char *  uname 
)

Definition at line 838 of file membership.c.

guint reap_crm_member ( uint32_t  id,
const char *  name 
)

Remove all peer cache entries matching a node ID and/or uname.

Parameters
[in]idID of node to remove (or 0 to ignore)
[in]nameUname of node to remove (or NULL to ignore)
Returns
Number of cache entries removed

Definition at line 352 of file membership.c.

Variable Documentation

gboolean crm_have_quorum = FALSE

Definition at line 65 of file membership.c.

GHashTable* crm_peer_cache = NULL

Definition at line 44 of file membership.c.

unsigned long long crm_peer_seq = 0

Definition at line 64 of file membership.c.

GHashTable* crm_remote_peer_cache = NULL

Definition at line 62 of file membership.c.

void(* crm_status_callback)(enum crm_status_type, crm_node_t *, const void *) = NULL

Definition at line 446 of file membership.c.