pacemaker  2.1.0-7c3f660
Scalable High-Availability cluster resource manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Functions
st_client.c File Reference
#include <crm_internal.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include <libgen.h>
#include <inttypes.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <glib.h>
#include <crm/crm.h>
#include <crm/stonith-ng.h>
#include <crm/fencing/internal.h>
#include <crm/msg_xml.h>
#include <crm/common/xml.h>
#include <crm/common/xml_internal.h>
#include <crm/common/mainloop.h>
#include <crm/fencing/compat.h>
Include dependency graph for st_client.c:

Go to the source code of this file.

Data Structures

struct  timer_rec_s
 

Macros

#define FAILURE_MAX_RETRIES   2
 
#define api_log_open()   openlog("stonith-api", LOG_CONS | LOG_NDELAY | LOG_PID, LOG_DAEMON)
 
#define api_log(level, fmt, args...)   syslog(level, "%s: "fmt, __func__, args)
 

Typedefs

typedef struct stonith_private_s stonith_private_t
 
typedef struct
stonith_notify_client_s 
stonith_notify_client_t
 
typedef struct
stonith_callback_client_s 
stonith_callback_client_t
 
typedef int(* stonith_op_t )(const char *, int, const char *, xmlNode *, xmlNode *, xmlNode *, xmlNode **, xmlNode **)
 

Functions

 CRM_TRACE_INIT_DATA (stonith)
 
bool stonith_dispatch (stonith_t *st)
 
xmlNode * stonith_create_op (int call_id, const char *token, const char *op, xmlNode *data, int call_options)
 
enum stonith_namespace stonith_text2namespace (const char *namespace_s)
 Get agent namespace by name. More...
 
const char * stonith_namespace2text (enum stonith_namespace st_namespace)
 Get agent namespace name. More...
 
enum stonith_namespace stonith_get_namespace (const char *agent, const char *namespace_s)
 Determine namespace of a fence agent. More...
 
xmlNode * create_device_registration_xml (const char *id, enum stonith_namespace namespace, const char *agent, stonith_key_value_t *params, const char *rsc_provides)
 
xmlNode * create_level_registration_xml (const char *node, const char *pattern, const char *attr, const char *value, int level, stonith_key_value_t *device_list)
 
void stonith__destroy_action (stonith_action_t *action)
 
void stonith__action_result (stonith_action_t *action, int *rc, char **output, char **error_output)
 
stonith_action_tstonith_action_create (const char *agent, const char *_action, const char *victim, uint32_t victim_nodeid, int timeout, GHashTable *device_args, GHashTable *port_map, const char *host_arg)
 
int stonith_action_execute_async (stonith_action_t *action, void *userdata, void(*done)(GPid pid, int rc, const char *output, gpointer user_data), void(*fork_cb)(GPid pid, gpointer user_data))
 
int stonith__execute (stonith_action_t *action)
 
void stonith_history_free (stonith_history_t *history)
 
void stonith_dump_pending_callbacks (stonith_t *stonith)
 
void stonith_api_delete (stonith_t *stonith)
 
stonith_tstonith_api_new (void)
 
int stonith_api_connect_retry (stonith_t *st, const char *name, int max_attempts)
 Make a blocking connection attempt to the fencer. More...
 
stonith_key_value_tstonith_key_value_add (stonith_key_value_t *head, const char *key, const char *value)
 
void stonith_key_value_freeall (stonith_key_value_t *head, int keys, int values)
 
int stonith_api_kick (uint32_t nodeid, const char *uname, int timeout, bool off)
 
time_t stonith_api_time (uint32_t nodeid, const char *uname, bool in_progress)
 
bool stonith_agent_exists (const char *agent, int timeout)
 
const char * stonith_action_str (const char *action)
 Turn stonith action into a more readable string. More...
 
GList * stonith__parse_targets (const char *target_spec)
 
gboolean stonith__later_succeeded (stonith_history_t *event, stonith_history_t *top_history)
 
stonith_history_tstonith__sort_history (stonith_history_t *history)
 
const char * stonith_op_state_str (enum op_state state)
 Return string equivalent of an operation state value. More...
 
stonith_history_tstonith__first_matching_event (stonith_history_t *history, bool(*matching_fn)(stonith_history_t *, void *), void *user_data)
 
bool stonith__event_state_pending (stonith_history_t *history, void *user_data)
 
bool stonith__event_state_eq (stonith_history_t *history, void *user_data)
 
bool stonith__event_state_neq (stonith_history_t *history, void *user_data)
 
void stonith__device_parameter_flags (uint32_t *device_flags, const char *device_name, xmlNode *metadata)
 
const char * get_stonith_provider (const char *agent, const char *provider)
 

Macro Definition Documentation

#define api_log (   level,
  fmt,
  args... 
)    syslog(level, "%s: "fmt, __func__, args)

Definition at line 2241 of file st_client.c.

#define api_log_open ( )    openlog("stonith-api", LOG_CONS | LOG_NDELAY | LOG_PID, LOG_DAEMON)

Definition at line 2240 of file st_client.c.

#define FAILURE_MAX_RETRIES   2

Definition at line 633 of file st_client.c.

Typedef Documentation

typedef struct stonith_callback_client_s stonith_callback_client_t
typedef struct stonith_notify_client_s stonith_notify_client_t
typedef int(* stonith_op_t)(const char *, int, const char *, xmlNode *, xmlNode *, xmlNode *, xmlNode **, xmlNode **)

Definition at line 108 of file st_client.c.

typedef struct stonith_private_s stonith_private_t

Function Documentation

xmlNode* create_device_registration_xml ( const char *  id,
enum stonith_namespace  namespace,
const char *  agent,
stonith_key_value_t params,
const char *  rsc_provides 
)

Definition at line 275 of file st_client.c.

xmlNode* create_level_registration_xml ( const char *  node,
const char *  pattern,
const char *  attr,
const char *  value,
int  level,
stonith_key_value_t device_list 
)

Definition at line 395 of file st_client.c.

CRM_TRACE_INIT_DATA ( stonith  )
const char* get_stonith_provider ( const char *  agent,
const char *  provider 
)
Deprecated:
Use stonith_get_namespace() instead

Definition at line 2703 of file st_client.c.

void stonith__action_result ( stonith_action_t action,
int *  rc,
char **  output,
char **  error_output 
)

Definition at line 606 of file st_client.c.

void stonith__destroy_action ( stonith_action_t action)

Definition at line 575 of file st_client.c.

void stonith__device_parameter_flags ( uint32_t *  device_flags,
const char *  device_name,
xmlNode *  metadata 
)

Definition at line 2657 of file st_client.c.

bool stonith__event_state_eq ( stonith_history_t history,
void *  user_data 
)

Definition at line 2645 of file st_client.c.

bool stonith__event_state_neq ( stonith_history_t history,
void *  user_data 
)

Definition at line 2651 of file st_client.c.

bool stonith__event_state_pending ( stonith_history_t history,
void *  user_data 
)

Definition at line 2639 of file st_client.c.

int stonith__execute ( stonith_action_t action)

Definition at line 890 of file st_client.c.

stonith_history_t* stonith__first_matching_event ( stonith_history_t history,
bool(*)(stonith_history_t *, void *)  matching_fn,
void *  user_data 
)

Definition at line 2625 of file st_client.c.

gboolean stonith__later_succeeded ( stonith_history_t event,
stonith_history_t top_history 
)

Definition at line 2529 of file st_client.c.

GList* stonith__parse_targets ( const char *  target_spec)

Definition at line 2489 of file st_client.c.

stonith_history_t* stonith__sort_history ( stonith_history_t history)

Definition at line 2560 of file st_client.c.

stonith_action_t* stonith_action_create ( const char *  agent,
const char *  _action,
const char *  victim,
uint32_t  victim_nodeid,
int  timeout,
GHashTable *  device_args,
GHashTable *  port_map,
const char *  host_arg 
)

Definition at line 635 of file st_client.c.

int stonith_action_execute_async ( stonith_action_t action,
void *  userdata,
void(*)(GPid pid, int rc, const char *output, gpointer user_data)  done,
void(*)(GPid pid, gpointer user_data)  fork_cb 
)

Definition at line 863 of file st_client.c.

const char* stonith_action_str ( const char *  action)

Turn stonith action into a more readable string.

Parameters
actionStonith action

Definition at line 2381 of file st_client.c.

bool stonith_agent_exists ( const char *  agent,
int  timeout 
)

Does the given agent describe a stonith resource that can exist?

Parameters
[in]agentWhat is the name of the agent?
[in]timeoutTimeout to use when querying. If 0 is given, use a default of 120.
Returns
A boolean

Definition at line 2350 of file st_client.c.

int stonith_api_connect_retry ( stonith_t st,
const char *  name,
int  max_attempts 
)

Make a blocking connection attempt to the fencer.

Parameters
[in,out]stFencer API object
[in]nameClient name to use with fencer
[in]max_attemptsReturn error if this many attempts fail
Returns
pcmk_ok on success, result of last attempt otherwise

Definition at line 2175 of file st_client.c.

void stonith_api_delete ( stonith_t stonith)

Definition at line 2011 of file st_client.c.

int stonith_api_kick ( uint32_t  nodeid,
const char *  uname,
int  timeout,
bool  off 
)

Definition at line 2244 of file st_client.c.

stonith_t* stonith_api_new ( void  )

Definition at line 2097 of file st_client.c.

time_t stonith_api_time ( uint32_t  nodeid,
const char *  uname,
bool  in_progress 
)

Definition at line 2286 of file st_client.c.

xmlNode * stonith_create_op ( int  call_id,
const char *  token,
const char *  op,
xmlNode *  data,
int  call_options 
)

Definition at line 1204 of file st_client.c.

bool stonith_dispatch ( stonith_t st)

Definition at line 1953 of file st_client.c.

void stonith_dump_pending_callbacks ( stonith_t stonith)

Definition at line 1702 of file st_client.c.

enum stonith_namespace stonith_get_namespace ( const char *  agent,
const char *  namespace_s 
)

Determine namespace of a fence agent.

Parameters
[in]agentFence agent type
[in]namespace_sName of agent namespace as string, if known
Returns
Namespace of specified agent, as enum value

Definition at line 178 of file st_client.c.

void stonith_history_free ( stonith_history_t history)

Definition at line 1158 of file st_client.c.

stonith_key_value_t* stonith_key_value_add ( stonith_key_value_t head,
const char *  key,
const char *  value 
)

Definition at line 2196 of file st_client.c.

void stonith_key_value_freeall ( stonith_key_value_t head,
int  keys,
int  values 
)

Definition at line 2223 of file st_client.c.

const char* stonith_namespace2text ( enum stonith_namespace  st_namespace)

Get agent namespace name.

Parameters
[in]namespaceNamespace as enum value
Returns
Namespace name as string

Definition at line 157 of file st_client.c.

const char* stonith_op_state_str ( enum op_state  state)

Return string equivalent of an operation state value.

Parameters
[in]stateFencing operation state value
Returns
Human-friendly string equivalent of state

Definition at line 2612 of file st_client.c.

enum stonith_namespace stonith_text2namespace ( const char *  namespace_s)

Get agent namespace by name.

Parameters
[in]namespace_sName of namespace as string
Returns
Namespace as enum value

Definition at line 131 of file st_client.c.