pacemaker  2.0.5-ba59be712
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 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 = -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)
 
void crm_cluster_disconnect (crm_cluster_t *cluster)
 
gboolean send_cluster_message (crm_node_t *node, enum crm_ais_msg_types service, xmlNode *data, gboolean ordered)
 
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)
 
crm_node_tcrm_get_peer (unsigned int id, const char *uname)
 
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...
 
int crm_terminate_member (int nodeid, const char *uname, void *unused)
 
int crm_terminate_member_no_mainloop (int nodeid, const char *uname, int *connection)
 
const char * crm_peer_uuid (crm_node_t *node)
 
const char * crm_peer_uname (const char *uuid)
 Get the node name corresponding to a node UUID. More...
 
void set_uuid (xmlNode *xml, const char *attr, crm_node_t *node)
 
enum crm_ais_msg_types text2msg_type (const char *text)
 
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)
 
const char * name_for_cluster_type (enum cluster_type_e type)
 
gboolean is_corosync_cluster (void)
 
const char * get_local_node_name (void)
 
char * get_node_name (uint32_t nodeid)
 

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 33 of file cluster.h.

◆ CRM_NODE_MEMBER

#define CRM_NODE_MEMBER   "member"

Definition at line 34 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 177 of file cluster.h.

◆ crm_ais_msg_class

Enumerator
crm_class_cluster 

Definition at line 95 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 99 of file cluster.h.

◆ crm_get_peer_flags

Enumerator
CRM_GET_PEER_CLUSTER 
CRM_GET_PEER_REMOTE 
CRM_GET_PEER_ANY 

Definition at line 113 of file cluster.h.

◆ crm_join_phase

Enumerator
crm_join_nack 
crm_join_none 
crm_join_welcomed 
crm_join_integrated 
crm_join_finalized 
crm_join_confirmed 

Definition at line 36 of file cluster.h.

◆ crm_node_flags

Enumerator
crm_remote_node 
crm_node_dirty 

Definition at line 46 of file cluster.h.

◆ crm_status_type

Enumerator
crm_status_uname 
crm_status_nstate 
crm_status_processes 

Definition at line 166 of file cluster.h.

Function Documentation

◆ crm_active_peers()

guint crm_active_peers ( void  )

Definition at line 365 of file membership.c.

◆ crm_cluster_connect()

gboolean crm_cluster_connect ( crm_cluster_t cluster)

Definition at line 61 of file cluster.c.

◆ crm_cluster_disconnect()

void crm_cluster_disconnect ( crm_cluster_t cluster)

Definition at line 83 of file cluster.c.

◆ crm_get_peer()

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

Definition at line 654 of file membership.c.

◆ crm_get_peer_full()

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

Definition at line 503 of file membership.c.

◆ crm_is_peer_active()

gboolean crm_is_peer_active ( const crm_node_t node)

Definition at line 272 of file membership.c.

◆ crm_peer_destroy()

void crm_peer_destroy ( void  )

Definition at line 406 of file membership.c.

◆ crm_peer_init()

void crm_peer_init ( void  )

Definition at line 390 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 178 of file cluster.c.

◆ crm_peer_uuid()

const char* crm_peer_uuid ( crm_node_t node)

Definition at line 30 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 234 of file membership.c.

◆ crm_remote_peer_cache_remove()

void crm_remote_peer_cache_remove ( const char *  node_name)

Definition at line 120 of file membership.c.

◆ crm_remote_peer_cache_size()

int crm_remote_peer_cache_size ( void  )

Definition at line 60 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 crm_update_peer_state() if the state is known.

Definition at line 80 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 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 458 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 441 of file membership.c.

◆ crm_terminate_member()

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

Definition at line 1017 of file membership.c.

◆ crm_terminate_member_no_mainloop()

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

Definition at line 1024 of file membership.c.

◆ get_cluster_type()

enum cluster_type_e get_cluster_type ( void  )

Definition at line 275 of file cluster.c.

◆ get_local_node_name()

const char* get_local_node_name ( void  )

Definition at line 120 of file cluster.c.

◆ get_node_name()

char* get_node_name ( uint32_t  nodeid)

Definition at line 132 of file cluster.c.

◆ is_corosync_cluster()

gboolean is_corosync_cluster ( void  )

Definition at line 330 of file cluster.c.

◆ name_for_cluster_type()

const char* name_for_cluster_type ( enum cluster_type_e  type)

Definition at line 236 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 324 of file membership.c.

◆ send_cluster_message()

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

Definition at line 104 of file cluster.c.

◆ set_uuid()

void set_uuid ( xmlNode *  xml,
const char *  attr,
crm_node_t node 
)

Definition at line 227 of file cluster.c.

◆ text2msg_type()

enum crm_ais_msg_types text2msg_type ( const char *  text)

Definition at line 776 of file cpg.c.

Variable Documentation

◆ crm_have_quorum

gboolean crm_have_quorum

Definition at line 56 of file membership.c.

◆ crm_peer_cache

GHashTable* crm_peer_cache

Definition at line 34 of file membership.c.

◆ crm_peer_seq

unsigned long long crm_peer_seq

Definition at line 55 of file membership.c.

◆ crm_remote_peer_cache

GHashTable* crm_remote_peer_cache

Definition at line 51 of file membership.c.