pacemaker  2.1.7-0f7f88312f
Scalable High-Availability cluster resource manager
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
cluster.h File Reference
#include <stdint.h>
#include <glib.h>
#include <libxml/tree.h>
#include <crm/common/xml.h>
#include <crm/common/util.h>
#include <crm/cluster/compat.h>
Include dependency graph for cluster.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  crm_peer_node_s
 
struct  crm_cluster_s
 

Macros

#define CRM_NODE_LOST   "lost"
 
#define CRM_NODE_MEMBER   "member"
 

Typedefs

typedef struct crm_peer_node_s crm_node_t
 
typedef struct crm_cluster_s crm_cluster_t
 

Enumerations

enum  crm_join_phase {
  crm_join_nack_quiet = -2, crm_join_nack = -1, crm_join_none = 0, crm_join_welcomed = 1,
  crm_join_integrated = 2, crm_join_finalized = 3, crm_join_confirmed = 4
}
 
enum  crm_node_flags { crm_remote_node = 0x0001, crm_node_dirty = 0x0010 }
 
enum  crm_ais_msg_class { crm_class_cluster = 0 }
 
enum  crm_ais_msg_types {
  crm_msg_none = 0, crm_msg_ais = 1, crm_msg_lrmd = 2, crm_msg_cib = 3,
  crm_msg_crmd = 4, crm_msg_attrd = 5, crm_msg_stonithd = 6, crm_msg_te = 7,
  crm_msg_pe = 8, crm_msg_stonith_ng = 9
}
 
enum  crm_get_peer_flags { CRM_GET_PEER_CLUSTER = 0x0001, CRM_GET_PEER_REMOTE = 0x0002, CRM_GET_PEER_ANY = CRM_GET_PEER_CLUSTER|CRM_GET_PEER_REMOTE }
 
enum  crm_status_type { crm_status_uname, crm_status_nstate, crm_status_processes }
 
enum  cluster_type_e { pcmk_cluster_unknown = 0x0001, pcmk_cluster_invalid = 0x0002, pcmk_cluster_corosync = 0x0020 }
 

Functions

void crm_peer_init (void)
 
void crm_peer_destroy (void)
 
gboolean crm_cluster_connect (crm_cluster_t *cluster)
 Connect to the cluster layer. More...
 
void crm_cluster_disconnect (crm_cluster_t *cluster)
 Disconnect from the cluster layer. More...
 
crm_cluster_tpcmk_cluster_new (void)
 Allocate a new crm_cluster_t object. More...
 
void pcmk_cluster_free (crm_cluster_t *cluster)
 Free a crm_cluster_t object and its dynamically allocated members. More...
 
gboolean send_cluster_message (const crm_node_t *node, enum crm_ais_msg_types service, const xmlNode *data, gboolean ordered)
 Send an XML message via the cluster messaging layer. More...
 
int crm_remote_peer_cache_size (void)
 
void crm_remote_peer_cache_refresh (xmlNode *cib)
 Repopulate the remote peer cache based on CIB XML. More...
 
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_remove (const char *node_name)
 
crm_node_tcrm_get_peer_full (unsigned int id, const char *uname, int flags)
 Get a node cache entry (cluster or Pacemaker Remote) More...
 
crm_node_tcrm_get_peer (unsigned int id, const char *uname)
 Get a cluster node cache entry. More...
 
guint crm_active_peers (void)
 
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...
 
const char * crm_peer_uuid (crm_node_t *node)
 Get (and set if needed) a node's UUID. More...
 
const char * crm_peer_uname (const char *uuid)
 Get the node name corresponding to a node UUID. More...
 
enum crm_ais_msg_types text2msg_type (const char *text)
 Get the message type equivalent of a string. More...
 
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...
 
enum cluster_type_e get_cluster_type (void)
 Get (and validate) the local cluster type. More...
 
const char * name_for_cluster_type (enum cluster_type_e type)
 Get a log-friendly string equivalent of a cluster type. More...
 
gboolean is_corosync_cluster (void)
 Check whether the local cluster is a Corosync cluster. More...
 
const char * get_local_node_name (void)
 Get the local node's name. More...
 
char * get_node_name (uint32_t nodeid)
 Get the node name corresponding to a cluster node ID. More...
 

Variables

gboolean crm_have_quorum
 
GHashTable * crm_peer_cache
 
GHashTable * crm_remote_peer_cache
 
unsigned long long crm_peer_seq
 

Macro Definition Documentation

◆ CRM_NODE_LOST

#define CRM_NODE_LOST   "lost"

Definition at line 32 of file cluster.h.

◆ CRM_NODE_MEMBER

#define CRM_NODE_MEMBER   "member"

Definition at line 33 of file cluster.h.

Typedef Documentation

◆ crm_cluster_t

typedef struct crm_cluster_s crm_cluster_t

◆ crm_node_t

typedef struct crm_peer_node_s crm_node_t

Enumeration Type Documentation

◆ cluster_type_e

Enumerator
pcmk_cluster_unknown 
pcmk_cluster_invalid 
pcmk_cluster_corosync 

Definition at line 191 of file cluster.h.

◆ crm_ais_msg_class

Enumerator
crm_class_cluster 

Definition at line 114 of file cluster.h.

◆ crm_ais_msg_types

Enumerator
crm_msg_none 
crm_msg_ais 
crm_msg_lrmd 
crm_msg_cib 
crm_msg_crmd 
crm_msg_attrd 
crm_msg_stonithd 
crm_msg_te 
crm_msg_pe 
crm_msg_stonith_ng 

Definition at line 118 of file cluster.h.

◆ crm_get_peer_flags

Enumerator
CRM_GET_PEER_CLUSTER 
CRM_GET_PEER_REMOTE 
CRM_GET_PEER_ANY 

Definition at line 132 of file cluster.h.

◆ crm_join_phase

Enumerator
crm_join_nack_quiet 

Not allowed to join, but don't send a nack message.

crm_join_nack 
crm_join_none 
crm_join_welcomed 
crm_join_integrated 
crm_join_finalized 
crm_join_confirmed 

Definition at line 35 of file cluster.h.

◆ crm_node_flags

Enumerator
crm_remote_node 
crm_node_dirty 

Definition at line 50 of file cluster.h.

◆ crm_status_type

Enumerator
crm_status_uname 
crm_status_nstate 
crm_status_processes 

Definition at line 181 of file cluster.h.

Function Documentation

◆ crm_active_peers()

guint crm_active_peers ( void  )

Definition at line 375 of file membership.c.

◆ crm_cluster_connect()

gboolean crm_cluster_connect ( crm_cluster_t cluster)

Connect to the cluster layer.

Parameters
[in,out]Initializedcluster object to connect
Returns
TRUE on success, otherwise FALSE

Definition at line 75 of file cluster.c.

◆ crm_cluster_disconnect()

void crm_cluster_disconnect ( crm_cluster_t cluster)

Disconnect from the cluster layer.

Parameters
[in,out]clusterCluster object to disconnect

Definition at line 101 of file cluster.c.

◆ crm_get_peer()

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

Get a cluster node cache entry.

Parameters
[in]idIf not 0, cluster node ID to search for
[in]unameIf not NULL, node name to search for
Returns
(Possibly newly created) cluster node cache entry

Definition at line 814 of file membership.c.

◆ crm_get_peer_full()

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

Get a node cache entry (cluster or Pacemaker Remote)

Parameters
[in]idIf not 0, cluster node ID to search for
[in]unameIf not NULL, node name to search for
[in]flagsBitmask of enum crm_get_peer_flags
Returns
(Possibly newly created) node cache entry

Definition at line 565 of file membership.c.

◆ crm_is_peer_active()

gboolean crm_is_peer_active ( const crm_node_t node)

Definition at line 282 of file membership.c.

◆ crm_peer_destroy()

void crm_peer_destroy ( void  )

Definition at line 417 of file membership.c.

◆ crm_peer_init()

void crm_peer_init ( void  )

Definition at line 401 of file membership.c.

◆ crm_peer_uname()

const char* crm_peer_uname ( const char *  uuid)

Get the node name corresponding to a node UUID.

Parameters
[in]uuidUUID of desired node
Returns
name of desired node
Note
This relies on the remote peer cache being populated with all remote nodes in the cluster, so callers should maintain that cache.

Definition at line 250 of file cluster.c.

◆ crm_peer_uuid()

const char* crm_peer_uuid ( crm_node_t peer)

Get (and set if needed) a node's UUID.

Parameters
[in,out]peerNode to check
Returns
Node UUID of peer, or NULL if unknown

Definition at line 38 of file cluster.c.

◆ crm_remote_peer_cache_refresh()

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 244 of file membership.c.

◆ crm_remote_peer_cache_remove()

void crm_remote_peer_cache_remove ( const char *  node_name)

Definition at line 147 of file membership.c.

◆ crm_remote_peer_cache_size()

int crm_remote_peer_cache_size ( void  )

Definition at line 87 of file membership.c.

◆ crm_remote_peer_get()

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 pcmk__update_peer_state() if the state is known.

Definition at line 107 of file membership.c.

◆ crm_set_autoreap()

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 pcmk__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 471 of file membership.c.

◆ crm_set_status_callback()

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 454 of file membership.c.

◆ get_cluster_type()

enum cluster_type_e get_cluster_type ( void  )

Get (and validate) the local cluster type.

Returns
Local cluster type
Note
This will fatally exit if the local cluster type is invalid.

Definition at line 325 of file cluster.c.

◆ get_local_node_name()

const char* get_local_node_name ( void  )

Get the local node's name.

Returns
Local node's name
Note
This will fatally exit if local node name cannot be known.

Definition at line 184 of file cluster.c.

◆ get_node_name()

char* get_node_name ( uint32_t  nodeid)

Get the node name corresponding to a cluster node ID.

Parameters
[in]nodeidNode ID to check (or 0 for local node)
Returns
Node name corresponding to nodeid
Note
This will fatally exit if nodeid is 0 and local node name cannot be known.

Definition at line 204 of file cluster.c.

◆ is_corosync_cluster()

gboolean is_corosync_cluster ( void  )

Check whether the local cluster is a Corosync cluster.

Returns
TRUE if the local cluster is a Corosync cluster, otherwise FALSE

Definition at line 389 of file cluster.c.

◆ name_for_cluster_type()

const char* name_for_cluster_type ( enum cluster_type_e  type)

Get a log-friendly string equivalent of a cluster type.

Parameters
[in]typeCluster type
Returns
Log-friendly string corresponding to type

Definition at line 304 of file cluster.c.

◆ pcmk_cluster_free()

void pcmk_cluster_free ( crm_cluster_t cluster)

Free a crm_cluster_t object and its dynamically allocated members.

Parameters
[in,out]clusterCluster object to free

Definition at line 141 of file cluster.c.

◆ pcmk_cluster_new()

crm_cluster_t* pcmk_cluster_new ( void  )

Allocate a new crm_cluster_t object.

Returns
A newly allocated crm_cluster_t object (guaranteed not NULL)
Note
The caller is responsible for freeing the return value using pcmk_cluster_free().

Definition at line 127 of file cluster.c.

◆ reap_crm_member()

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 334 of file membership.c.

◆ send_cluster_message()

gboolean send_cluster_message ( const crm_node_t node,
enum crm_ais_msg_types  service,
const xmlNode *  data,
gboolean  ordered 
)

Send an XML message via the cluster messaging layer.

Parameters
[in]nodeCluster node to send message to
[in]serviceMessage type to use in message host info
[in]dataXML message to send
[in]orderedIgnored for currently supported messaging layers
Returns
TRUE on success, otherwise FALSE

Definition at line 162 of file cluster.c.

◆ text2msg_type()

enum crm_ais_msg_types text2msg_type ( const char *  text)

Get the message type equivalent of a string.

Parameters
[in]textString of message type
Returns
Message type equivalent of text

Definition at line 1055 of file cpg.c.

Variable Documentation

◆ crm_have_quorum

gboolean crm_have_quorum

Definition at line 64 of file membership.c.

◆ crm_peer_cache

GHashTable* crm_peer_cache

Definition at line 36 of file membership.c.

◆ crm_peer_seq

unsigned long long crm_peer_seq

Definition at line 63 of file membership.c.

◆ crm_remote_peer_cache

GHashTable* crm_remote_peer_cache

Definition at line 53 of file membership.c.