pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
lrmd.h File Reference

Resource agent executor. More...

#include <stdbool.h>
#include <glib.h>
#include <crm_config.h>
#include <crm/lrmd_events.h>
#include <crm/services.h>
Include dependency graph for lrmd.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  lrmd_key_value_s
 
struct  lrmd_rsc_info_s
 
struct  lrmd_op_info_s
 
struct  lrmd_list_s
 
struct  lrmd_api_operations_s
 
struct  lrmd_s
 

Macros

#define LRMD_PROTOCOL_VERSION   "1.2"
 
#define LRMD_SUPPORTS_SCHEMA_XFER(x)
 
#define LRMD_COMPATIBLE_PROTOCOL   "1"
 
#define DEFAULT_REMOTE_KEY_LOCATION   PACEMAKER_CONFIG_DIR "/authkey"
 
#define DEFAULT_REMOTE_PORT   3121
 
#define DEFAULT_REMOTE_USERNAME   "lrmd"
 
#define LRMD_OP_RSC_REG   "lrmd_rsc_register"
 
#define LRMD_OP_RSC_EXEC   "lrmd_rsc_exec"
 
#define LRMD_OP_RSC_CANCEL   "lrmd_rsc_cancel"
 
#define LRMD_OP_RSC_UNREG   "lrmd_rsc_unregister"
 
#define LRMD_OP_RSC_INFO   "lrmd_rsc_info"
 
#define LRMD_OP_RSC_METADATA   "lrmd_rsc_metadata"
 
#define LRMD_OP_POKE   "lrmd_rsc_poke"
 
#define LRMD_OP_NEW_CLIENT   "lrmd_rsc_new_client"
 
#define LRMD_OP_CHECK   "lrmd_check"
 
#define LRMD_OP_ALERT_EXEC   "lrmd_alert_exec"
 
#define LRMD_OP_GET_RECURRING   "lrmd_get_recurring"
 
#define LRMD_IPC_OP_NEW   "new"
 
#define LRMD_IPC_OP_DESTROY   "destroy"
 
#define LRMD_IPC_OP_EVENT   "event"
 
#define LRMD_IPC_OP_REQUEST   "request"
 
#define LRMD_IPC_OP_RESPONSE   "response"
 
#define LRMD_IPC_OP_SHUTDOWN_REQ   "shutdown_req"
 
#define LRMD_IPC_OP_SHUTDOWN_ACK   "shutdown_ack"
 
#define LRMD_IPC_OP_SHUTDOWN_NACK   "shutdown_nack"
 

Typedefs

typedef struct lrmd_s lrmd_t
 
typedef struct lrmd_key_value_s lrmd_key_value_t
 
typedef struct lrmd_rsc_info_s lrmd_rsc_info_t
 
typedef struct lrmd_op_info_s lrmd_op_info_t
 
typedef void(* lrmd_event_callback) (lrmd_event_data_t *event)
 
typedef struct lrmd_list_s lrmd_list_t
 
typedef struct lrmd_api_operations_s lrmd_api_operations_t
 

Enumerations

enum  lrmd_call_options { lrmd_opt_none = 0 , lrmd_opt_drop_recurring = (1 << 0) , lrmd_opt_notify_orig_only = (1 << 1) , lrmd_opt_notify_changes_only = (1 << 2) }
 

Functions

lrmd_tlrmd_api_new (void)
 Create a new connection to the local executor.
 
lrmd_tlrmd_remote_api_new (const char *nodename, const char *server, int port)
 Create a new TLS connection to a remote executor.
 
bool lrmd_dispatch (lrmd_t *lrmd)
 Use after lrmd_poll returns 1 to read and dispatch a message.
 
int lrmd_poll (lrmd_t *lrmd, int timeout)
 Check whether a message is available on an executor connection.
 
void lrmd_api_delete (lrmd_t *lrmd)
 Destroy executor connection object.
 
lrmd_key_value_tlrmd_key_value_add (lrmd_key_value_t *kvp, const char *key, const char *value)
 
lrmd_rsc_info_tlrmd_new_rsc_info (const char *rsc_id, const char *standard, const char *provider, const char *type)
 
lrmd_rsc_info_tlrmd_copy_rsc_info (lrmd_rsc_info_t *rsc_info)
 
void lrmd_free_rsc_info (lrmd_rsc_info_t *rsc_info)
 
void lrmd_free_op_info (lrmd_op_info_t *op_info)
 
void lrmd_list_freeall (lrmd_list_t *head)
 
void lrmd_key_value_freeall (lrmd_key_value_t *head)
 

Detailed Description

Resource agent executor.

Definition in file lrmd.h.

Macro Definition Documentation

◆ DEFAULT_REMOTE_KEY_LOCATION

#define DEFAULT_REMOTE_KEY_LOCATION   PACEMAKER_CONFIG_DIR "/authkey"

Definition at line 55 of file lrmd.h.

◆ DEFAULT_REMOTE_PORT

#define DEFAULT_REMOTE_PORT   3121

Definition at line 56 of file lrmd.h.

◆ DEFAULT_REMOTE_USERNAME

#define DEFAULT_REMOTE_USERNAME   "lrmd"

Definition at line 57 of file lrmd.h.

◆ LRMD_COMPATIBLE_PROTOCOL

#define LRMD_COMPATIBLE_PROTOCOL   "1"

Definition at line 52 of file lrmd.h.

◆ LRMD_IPC_OP_DESTROY

#define LRMD_IPC_OP_DESTROY   "destroy"

Definition at line 72 of file lrmd.h.

◆ LRMD_IPC_OP_EVENT

#define LRMD_IPC_OP_EVENT   "event"

Definition at line 73 of file lrmd.h.

◆ LRMD_IPC_OP_NEW

#define LRMD_IPC_OP_NEW   "new"

Definition at line 71 of file lrmd.h.

◆ LRMD_IPC_OP_REQUEST

#define LRMD_IPC_OP_REQUEST   "request"

Definition at line 74 of file lrmd.h.

◆ LRMD_IPC_OP_RESPONSE

#define LRMD_IPC_OP_RESPONSE   "response"

Definition at line 75 of file lrmd.h.

◆ LRMD_IPC_OP_SHUTDOWN_ACK

#define LRMD_IPC_OP_SHUTDOWN_ACK   "shutdown_ack"

Definition at line 77 of file lrmd.h.

◆ LRMD_IPC_OP_SHUTDOWN_NACK

#define LRMD_IPC_OP_SHUTDOWN_NACK   "shutdown_nack"

Definition at line 78 of file lrmd.h.

◆ LRMD_IPC_OP_SHUTDOWN_REQ

#define LRMD_IPC_OP_SHUTDOWN_REQ   "shutdown_req"

Definition at line 76 of file lrmd.h.

◆ LRMD_OP_ALERT_EXEC

#define LRMD_OP_ALERT_EXEC   "lrmd_alert_exec"

Definition at line 68 of file lrmd.h.

◆ LRMD_OP_CHECK

#define LRMD_OP_CHECK   "lrmd_check"

Definition at line 67 of file lrmd.h.

◆ LRMD_OP_GET_RECURRING

#define LRMD_OP_GET_RECURRING   "lrmd_get_recurring"

Definition at line 69 of file lrmd.h.

◆ LRMD_OP_NEW_CLIENT

#define LRMD_OP_NEW_CLIENT   "lrmd_rsc_new_client"

Definition at line 66 of file lrmd.h.

◆ LRMD_OP_POKE

#define LRMD_OP_POKE   "lrmd_rsc_poke"

Definition at line 65 of file lrmd.h.

◆ LRMD_OP_RSC_CANCEL

#define LRMD_OP_RSC_CANCEL   "lrmd_rsc_cancel"

Definition at line 61 of file lrmd.h.

◆ LRMD_OP_RSC_EXEC

#define LRMD_OP_RSC_EXEC   "lrmd_rsc_exec"

Definition at line 60 of file lrmd.h.

◆ LRMD_OP_RSC_INFO

#define LRMD_OP_RSC_INFO   "lrmd_rsc_info"

Definition at line 63 of file lrmd.h.

◆ LRMD_OP_RSC_METADATA

#define LRMD_OP_RSC_METADATA   "lrmd_rsc_metadata"

Definition at line 64 of file lrmd.h.

◆ LRMD_OP_RSC_REG

#define LRMD_OP_RSC_REG   "lrmd_rsc_register"

Definition at line 59 of file lrmd.h.

◆ LRMD_OP_RSC_UNREG

#define LRMD_OP_RSC_UNREG   "lrmd_rsc_unregister"

Definition at line 62 of file lrmd.h.

◆ LRMD_PROTOCOL_VERSION

#define LRMD_PROTOCOL_VERSION   "1.2"

Definition at line 44 of file lrmd.h.

◆ LRMD_SUPPORTS_SCHEMA_XFER

#define LRMD_SUPPORTS_SCHEMA_XFER ( x)
Value:
(compare_version((x), "1.2") >= 0)
int compare_version(const char *version1, const char *version2)
Definition utils.c:206

Definition at line 46 of file lrmd.h.

Typedef Documentation

◆ lrmd_api_operations_t

◆ lrmd_event_callback

typedef void(* lrmd_event_callback) (lrmd_event_data_t *event)

Definition at line 170 of file lrmd.h.

◆ lrmd_key_value_t

◆ lrmd_list_t

typedef struct lrmd_list_s lrmd_list_t

◆ lrmd_op_info_t

◆ lrmd_rsc_info_t

◆ lrmd_t

typedef struct lrmd_s lrmd_t

Definition at line 29 of file lrmd.h.

Enumeration Type Documentation

◆ lrmd_call_options

Enumerator
lrmd_opt_none 
lrmd_opt_drop_recurring 

Drop recurring operations initiated by a client when the client disconnects. This option is only valid when registering a resource. When used with a connection to a remote executor, recurring operations will be dropped once all remote connections disconnect.

lrmd_opt_notify_orig_only 

Notify only the client that made the request (rather than all clients)

lrmd_opt_notify_changes_only 

Send notifications for recurring operations only when the result changes.

Definition at line 132 of file lrmd.h.

Function Documentation

◆ lrmd_api_delete()

void lrmd_api_delete ( lrmd_t * lrmd)

Destroy executor connection object.

Parameters
[in,out]lrmdExecutor connection object to destroy

Definition at line 2469 of file lrmd_client.c.

◆ lrmd_api_new()

lrmd_t * lrmd_api_new ( void )

Create a new connection to the local executor.

Definition at line 2451 of file lrmd_client.c.

◆ lrmd_copy_rsc_info()

lrmd_rsc_info_t * lrmd_copy_rsc_info ( lrmd_rsc_info_t * rsc_info)

Definition at line 1885 of file lrmd_client.c.

◆ lrmd_dispatch()

bool lrmd_dispatch ( lrmd_t * lrmd)

Use after lrmd_poll returns 1 to read and dispatch a message.

Parameters
[in,out]lrmdExecutor connection object
Returns
TRUE if connection is still up, FALSE if disconnected

Definition at line 527 of file lrmd_client.c.

◆ lrmd_free_op_info()

void lrmd_free_op_info ( lrmd_op_info_t * op_info)

Definition at line 1942 of file lrmd_client.c.

◆ lrmd_free_rsc_info()

void lrmd_free_rsc_info ( lrmd_rsc_info_t * rsc_info)

Definition at line 1892 of file lrmd_client.c.

◆ lrmd_key_value_add()

lrmd_key_value_t * lrmd_key_value_add ( lrmd_key_value_t * kvp,
const char * key,
const char * value )

Definition at line 146 of file lrmd_client.c.

◆ lrmd_key_value_freeall()

void lrmd_key_value_freeall ( lrmd_key_value_t * head)

Definition at line 169 of file lrmd_client.c.

◆ lrmd_list_freeall()

void lrmd_list_freeall ( lrmd_list_t * head)

Definition at line 131 of file lrmd_client.c.

◆ lrmd_new_rsc_info()

lrmd_rsc_info_t * lrmd_new_rsc_info ( const char * rsc_id,
const char * standard,
const char * provider,
const char * type )

Definition at line 1872 of file lrmd_client.c.

◆ lrmd_poll()

int lrmd_poll ( lrmd_t * lrmd,
int timeout )

Check whether a message is available on an executor connection.

Parameters
[in,out]lrmdExecutor connection object to check
[in]timeoutCurrently ignored
Return values
1Message is ready
0Timeout occurred
negativeerrno Error occurred
Note
This is intended for callers that do not use a main loop.

Definition at line 495 of file lrmd_client.c.

◆ lrmd_remote_api_new()

lrmd_t * lrmd_remote_api_new ( const char * nodename,
const char * server,
int port )

Create a new TLS connection to a remote executor.

Parameters
[in]nodenameName of remote node identified with this connection
[in]serverHostname to connect to
[in]portPort number to connect to (or 0 to use default)
Returns
Newly created executor connection object
Note
If only one of nodename and server is non-NULL, it will be used for both purposes. If both are NULL, a local IPC connection will be created instead.

Definition at line 2460 of file lrmd_client.c.