pacemaker  2.0.4-2deceaa
Scalable High-Availability cluster resource manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Enumerations | Functions
util.h File Reference

Utility functions. More...

#include <sys/types.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <limits.h>
#include <signal.h>
#include <glib.h>
#include <libxml/tree.h>
#include <crm/lrmd.h>
#include <crm/common/acl.h>
#include <crm/common/results.h>
Include dependency graph for util.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ONLINESTATUS   "online"
 
#define OFFLINESTATUS   "offline"
 
#define safe_str_eq(a, b)   crm_str_eq(a, b, FALSE)
 
#define crm_str_hash   g_str_hash_traditional
 
#define crm_atoi(text, default_text)   crm_parse_int(text, default_text)
 
#define CRM_DEFAULT_OP_TIMEOUT_S   "20s"
 
#define crm_get_interval   crm_parse_interval_spec
 

Enumerations

enum  pcmk_ra_caps {
  pcmk_ra_cap_none = 0, pcmk_ra_cap_provider = (1 << 0), pcmk_ra_cap_status = (1 << 1), pcmk_ra_cap_params = (1 << 2),
  pcmk_ra_cap_unique = (1 << 3), pcmk_ra_cap_promotable = (1 << 4), pcmk_ra_cap_stdin = (1 << 5)
}
 

Functions

int pcmk_scan_nvpair (const char *input, char **name, char **value)
 Extract the name and value from an input string formatted as "name=value". If unable to extract them, they are returned as NULL. More...
 
char * pcmk_format_nvpair (const char *name, const char *value, const char *units)
 
char * pcmk_format_named_time (const char *name, time_t epoch_time)
 
int crm_default_remote_port (void)
 Get the default remote connection TCP port on this host. More...
 
char * crm_itoa_stack (int an_int, char *buf, size_t len)
 
gboolean crm_is_true (const char *s)
 
int crm_str_to_boolean (const char *s, int *ret)
 
long long crm_parse_ll (const char *text, const char *default_text)
 Parse a long long integer value from a string. More...
 
int crm_parse_int (const char *text, const char *default_text)
 Parse an integer value from a string. More...
 
long long crm_get_msec (const char *input)
 Parse a time+units string and return milliseconds equivalent. More...
 
char * crm_strip_trailing_newline (char *str)
 
gboolean crm_str_eq (const char *a, const char *b, gboolean use_case)
 
gboolean safe_str_neq (const char *a, const char *b)
 
gboolean crm_strcase_equal (gconstpointer a, gconstpointer b)
 
guint crm_strcase_hash (gconstpointer v)
 
guint g_str_hash_traditional (gconstpointer v)
 
char * crm_strdup_printf (char const *format,...) __attribute__((__format__(__printf__
 
char int pcmk__parse_ll_range (const char *srcstring, long long *start, long long *end)
 
gboolean pcmk__str_in_list (GList *lst, const gchar *s)
 
GHashTable * crm_str_table_dup (GHashTable *old_table)
 
void crm_build_path (const char *path_c, mode_t mode)
 Create a directory, including any parent directories needed. More...
 
guint crm_parse_interval_spec (const char *input)
 Parse milliseconds from a Pacemaker interval specification. More...
 
int char2score (const char *score)
 
char * score2char (int score)
 
char * score2char_stack (int score, char *buf, size_t len)
 
gboolean parse_op_key (const char *key, char **rsc_id, char **op_type, guint *interval_ms)
 
gboolean decode_transition_key (const char *key, char **uuid, int *transition_id, int *action_id, int *target_rc)
 Parse a transition key into its constituent parts. More...
 
gboolean decode_transition_magic (const char *magic, char **uuid, int *transition_id, int *action_id, int *op_status, int *op_rc, int *target_rc)
 Parse a transition magic string into its constituent parts. More...
 
int rsc_op_expected_rc (lrmd_event_data_t *event)
 
gboolean did_rsc_op_fail (lrmd_event_data_t *event, int target_rc)
 
bool crm_op_needs_metadata (const char *rsc_class, const char *op)
 Check whether an operation requires resource agent meta-data. More...
 
xmlNode * crm_create_op_xml (xmlNode *parent, const char *prefix, const char *task, const char *interval_spec, const char *timeout)
 Create a CIB XML element for an operation. More...
 
uint32_t pcmk_get_ra_caps (const char *standard)
 Get capabilities of a resource agent standard. More...
 
char * crm_generate_ra_key (const char *standard, const char *provider, const char *type)
 
int crm_parse_agent_spec (const char *spec, char **standard, char **provider, char **type)
 Parse a "standard[:provider]:type" agent specification. More...
 
int compare_version (const char *version1, const char *version2)
 
void crm_abort (const char *file, const char *function, int line, const char *condition, gboolean do_core, gboolean do_fork)
 
char * crm_meta_name (const char *field)
 
const char * crm_meta_value (GHashTable *hash, const char *field)
 
char * crm_md5sum (const char *buffer)
 
char * crm_generate_uuid (void)
 
bool crm_is_daemon_name (const char *name)
 Check whether a string represents a cluster daemon name. More...
 
int crm_user_lookup (const char *name, uid_t *uid, gid_t *gid)
 
int pcmk_daemon_user (uid_t *uid, gid_t *gid)
 Get user and group IDs of pacemaker daemon user. More...
 
char * pcmk_hostname (void)
 Get the local hostname. More...
 
bool pcmk_str_is_infinity (const char *s)
 
bool pcmk_str_is_minus_infinity (const char *s)
 
bool crm_provider_required (const char *standard)
 Check whether a resource standard requires a provider to be specified. More...
 

Detailed Description

Utility functions.

Definition in file util.h.

Macro Definition Documentation

#define crm_atoi (   text,
  default_text 
)    crm_parse_int(text, default_text)

Definition at line 114 of file util.h.

#define CRM_DEFAULT_OP_TIMEOUT_S   "20s"

Definition at line 138 of file util.h.

#define crm_get_interval   crm_parse_interval_spec
Deprecated:
Use crm_parse_interval_spec() instead

Definition at line 219 of file util.h.

#define crm_str_hash   g_str_hash_traditional

Definition at line 66 of file util.h.

#define OFFLINESTATUS   "offline"

Definition at line 38 of file util.h.

#define ONLINESTATUS   "online"

Definition at line 37 of file util.h.

#define safe_str_eq (   a,
 
)    crm_str_eq(a, b, FALSE)

Definition at line 65 of file util.h.

Enumeration Type Documentation

Enumerator
pcmk_ra_cap_none 
pcmk_ra_cap_provider 
pcmk_ra_cap_status 
pcmk_ra_cap_params 
pcmk_ra_cap_unique 
pcmk_ra_cap_promotable 
pcmk_ra_cap_stdin 

Definition at line 143 of file util.h.

Function Documentation

int char2score ( const char *  score)

Definition at line 59 of file utils.c.

int compare_version ( const char *  version1,
const char *  version2 
)

Definition at line 227 of file utils.c.

void crm_abort ( const char *  file,
const char *  function,
int  line,
const char *  condition,
gboolean  do_core,
gboolean  do_fork 
)

Definition at line 341 of file utils.c.

void crm_build_path ( const char *  path_c,
mode_t  mode 
)

Create a directory, including any parent directories needed.

Parameters
[in]path_cPathname of the directory to create
[in]modePermissions to be used (with current umask) when creating
Note
This logs errors but does not return them to the caller.

Definition at line 81 of file io.c.

xmlNode* crm_create_op_xml ( xmlNode *  parent,
const char *  prefix,
const char *  task,
const char *  interval_spec,
const char *  timeout 
)

Create a CIB XML element for an operation.

Parameters
[in]parentIf not NULL, make new XML node a child of this one
[in]prefixGenerate an ID using this prefix
[in]taskOperation task to set
[in]interval_specOperation interval to set
[in]timeoutIf not NULL, operation timeout to set
Returns
New XML object on success, NULL otherwise

Definition at line 377 of file operations.c.

int crm_default_remote_port ( void  )

Get the default remote connection TCP port on this host.

Returns
Remote connection TCP port number

Definition at line 1262 of file remote.c.

char* crm_generate_ra_key ( const char *  standard,
const char *  provider,
const char *  type 
)

Definition at line 70 of file agents.c.

char* crm_generate_uuid ( void  )

Definition at line 495 of file utils.c.

long long crm_get_msec ( const char *  input)

Parse a time+units string and return milliseconds equivalent.

Parameters
[in]inputString with a number and units (optionally with whitespace before and/or after the number)
Returns
Milliseconds corresponding to string expression, or -1 on error

Definition at line 211 of file strings.c.

bool crm_is_daemon_name ( const char *  name)

Check whether a string represents a cluster daemon name.

Parameters
[in]nameString to check
Returns
TRUE if name is standard client name used by daemons, FALSE otherwise

Definition at line 553 of file utils.c.

gboolean crm_is_true ( const char *  s)

Definition at line 278 of file strings.c.

char* crm_itoa_stack ( int  an_int,
char *  buf,
size_t  len 
)

Definition at line 24 of file strings.c.

char* crm_md5sum ( const char *  buffer)

Definition at line 570 of file utils.c.

char* crm_meta_name ( const char *  field)

Definition at line 454 of file utils.c.

const char* crm_meta_value ( GHashTable *  hash,
const char *  field 
)

Definition at line 476 of file utils.c.

bool crm_op_needs_metadata ( const char *  rsc_class,
const char *  op 
)

Check whether an operation requires resource agent meta-data.

Parameters
[in]rsc_classResource agent class (or NULL to skip class check)
[in]opOperation action (or NULL to skip op check)
Returns
TRUE if operation needs meta-data, FALSE otherwise
Note
At least one of rsc_class and op must be specified.

Definition at line 404 of file operations.c.

int crm_parse_agent_spec ( const char *  spec,
char **  standard,
char **  provider,
char **  type 
)

Parse a "standard[:provider]:type" agent specification.

Parameters
[in]specAgent specification
[out]standardNewly allocated memory containing agent standard (or NULL)
[out]providerNewly allocated memory containing agent provider (or NULL)
put]type Newly allocated memory containing agent type (or NULL)
Returns
pcmk_ok if the string could be parsed, -EINVAL otherwise
Note
It is acceptable for the type to contain a ':' if the standard supports that. For example, systemd supports the form "systemd:UNIT@A:B".
It is the caller's responsibility to free the returned values.

Definition at line 98 of file agents.c.

int crm_parse_int ( const char *  text,
const char *  default_text 
)

Parse an integer value from a string.

Parameters
[in]textThe string to parse
[in]default_textDefault string to parse if text is NULL
Returns
Parsed value on success, INT_MIN or INT_MAX (and set errno to ERANGE) if parsed value is out of integer range, otherwise -1 (and set errno)

Definition at line 126 of file strings.c.

guint crm_parse_interval_spec ( const char *  input)

Parse milliseconds from a Pacemaker interval specification.

Parameters
[in]inputPacemaker time interval specification (a bare number of seconds, a number with a unit optionally with whitespace before and/or after the number, or an ISO 8601 duration)
Returns
Milliseconds equivalent of given specification on success (limited to the range of an unsigned integer), 0 if input is NULL, or 0 (and set errno to EINVAL) on error

Definition at line 309 of file utils.c.

long long crm_parse_ll ( const char *  text,
const char *  default_text 
)

Parse a long long integer value from a string.

Parameters
[in]textThe string to parse
[in]default_textDefault string to parse if text is NULL
Returns
Parsed value on success, -1 (and set errno) on error

Definition at line 100 of file strings.c.

bool crm_provider_required ( const char *  standard)

Check whether a resource standard requires a provider to be specified.

Deprecated:
Use pcmk_get_ra_caps() instead
Deprecated:
Parameters
[in]standardStandard name
Returns
TRUE if standard requires a provider, FALSE otherwise

Definition at line 148 of file agents.c.

gboolean crm_str_eq ( const char *  a,
const char *  b,
gboolean  use_case 
)

Definition at line 326 of file strings.c.

GHashTable* crm_str_table_dup ( GHashTable *  old_table)

Definition at line 495 of file strings.c.

int crm_str_to_boolean ( const char *  s,
int *  ret 
)

Definition at line 289 of file strings.c.

gboolean crm_strcase_equal ( gconstpointer  a,
gconstpointer  b 
)

Definition at line 469 of file strings.c.

guint crm_strcase_hash ( gconstpointer  v)

Definition at line 475 of file strings.c.

char* crm_strdup_printf ( char const *  format,
  ... 
)
char* crm_strip_trailing_newline ( char *  str)

Definition at line 310 of file strings.c.

int crm_user_lookup ( const char *  name,
uid_t *  uid,
gid_t *  gid 
)

Definition at line 131 of file utils.c.

gboolean decode_transition_key ( const char *  key,
char **  uuid,
int *  transition_id,
int *  action_id,
int *  target_rc 
)

Parse a transition key into its constituent parts.

Parameters
[in]keyTransition key to parse (must be non-NULL)
[out]uuidIf non-NULL, where to store copy of parsed UUID
[out]transition_idIf non-NULL, where to store parsed transition ID
[out]action_idIf non-NULL, where to store parsed action ID
[out]target_rcIf non-NULL, where to stored parsed target rc
Returns
TRUE if key was valid, FALSE otherwise
Note
If uuid is supplied and this returns TRUE, the caller is responsible for freeing the memory for *uuid using free().

Definition at line 218 of file operations.c.

gboolean decode_transition_magic ( const char *  magic,
char **  uuid,
int *  transition_id,
int *  action_id,
int *  op_status,
int *  op_rc,
int *  target_rc 
)

Parse a transition magic string into its constituent parts.

Parameters
[in]magicMagic string to parse (must be non-NULL)
[out]uuidIf non-NULL, where to store copy of parsed UUID
[out]transition_idIf non-NULL, where to store parsed transition ID
[out]action_idIf non-NULL, where to store parsed action ID
[out]op_statusIf non-NULL, where to store parsed result status
[out]op_rcIf non-NULL, where to store parsed actual rc
[out]target_rcIf non-NULL, where to stored parsed target rc
Returns
TRUE if key was valid, FALSE otherwise
Note
If uuid is supplied and this returns TRUE, the caller is responsible for freeing the memory for *uuid using free().

Definition at line 155 of file operations.c.

gboolean did_rsc_op_fail ( lrmd_event_data_t event,
int  target_rc 
)

Definition at line 340 of file operations.c.

guint g_str_hash_traditional ( gconstpointer  v)

Definition at line 456 of file strings.c.

gboolean parse_op_key ( const char *  key,
char **  rsc_id,
char **  op_type,
guint *  interval_ms 
)

Definition at line 48 of file operations.c.

char int pcmk__parse_ll_range ( const char *  srcstring,
long long *  start,
long long *  end 
)

Definition at line 605 of file strings.c.

gboolean pcmk__str_in_list ( GList *  lst,
const gchar *  s 
)

Definition at line 660 of file strings.c.

int pcmk_daemon_user ( uid_t *  uid,
gid_t *  gid 
)

Get user and group IDs of pacemaker daemon user.

Parameters
[out]uidIf non-NULL, where to store daemon user ID
[out]gidIf non-NULL, where to store daemon group ID
Returns
pcmk_ok on success, -errno otherwise

Definition at line 171 of file utils.c.

char* pcmk_format_named_time ( const char *  name,
time_t  epoch_time 
)

Definition at line 297 of file nvpair.c.

char* pcmk_format_nvpair ( const char *  name,
const char *  value,
const char *  units 
)

Definition at line 281 of file nvpair.c.

uint32_t pcmk_get_ra_caps ( const char *  standard)

Get capabilities of a resource agent standard.

Parameters
[in]standardStandard name
Returns
Bitmask of enum pcmk_ra_caps values

Definition at line 31 of file agents.c.

char* pcmk_hostname ( void  )

Get the local hostname.

Returns
Newly allocated string with name, or NULL (and set errno) on error

Definition at line 612 of file utils.c.

int pcmk_scan_nvpair ( const char *  input,
char **  name,
char **  value 
)

Extract the name and value from an input string formatted as "name=value". If unable to extract them, they are returned as NULL.

Parameters
[in]inputThe input string, likely from the command line
[out]nameEverything before the first '=' in the input string
[out]valueEverything after the first '=' in the input string
Returns
2 if both name and value could be extracted, 1 if only one could, and and error code otherwise

Definition at line 220 of file nvpair.c.

bool pcmk_str_is_infinity ( const char *  s)

Definition at line 620 of file utils.c.

bool pcmk_str_is_minus_infinity ( const char *  s)

Definition at line 625 of file utils.c.

int rsc_op_expected_rc ( lrmd_event_data_t event)

Definition at line 329 of file operations.c.

gboolean safe_str_neq ( const char *  a,
const char *  b 
)

Definition at line 263 of file strings.c.

char* score2char ( int  score)

Definition at line 108 of file utils.c.

char* score2char_stack ( int  score,
char *  buf,
size_t  len 
)

Definition at line 94 of file utils.c.