pacemaker  1.1.17-b36b869ca8
Scalable High-Availability cluster resource manager
Data Structures | Macros | Typedefs | Enumerations | Functions
services.h File Reference

Services API. More...

#include <glib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
Include dependency graph for services.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  svc_action_s
 

Macros

#define OCF_ROOT_DIR   "/usr/lib/ocf"
 
#define LSB_ROOT_DIR   "/etc/init.d"
 
#define SYSTEMCTL   "/bin/systemctl"
 
#define SERVICE_SCRIPT   "/sbin/service"
 
#define PCMK_RESOURCE_CLASS_OCF   "ocf"
 
#define PCMK_RESOURCE_CLASS_SERVICE   "service"
 
#define PCMK_RESOURCE_CLASS_LSB   "lsb"
 
#define PCMK_RESOURCE_CLASS_SYSTEMD   "systemd"
 
#define PCMK_RESOURCE_CLASS_UPSTART   "upstart"
 
#define PCMK_RESOURCE_CLASS_HB   "heartbeat"
 
#define PCMK_RESOURCE_CLASS_NAGIOS   "nagios"
 
#define PCMK_RESOURCE_CLASS_STONITH   "stonith"
 
#define PCMK_OCF_REASON_PREFIX   "ocf-exit-reason:"
 

Typedefs

typedef struct svc_action_private_s svc_action_private_t
 
typedef struct svc_action_s svc_action_t
 

Enumerations

enum  lsb_exitcode {
  PCMK_LSB_OK = 0, PCMK_LSB_UNKNOWN_ERROR = 1, PCMK_LSB_INVALID_PARAM = 2, PCMK_LSB_UNIMPLEMENT_FEATURE = 3,
  PCMK_LSB_INSUFFICIENT_PRIV = 4, PCMK_LSB_NOT_INSTALLED = 5, PCMK_LSB_NOT_CONFIGURED = 6, PCMK_LSB_NOT_RUNNING = 7
}
 
enum  lsb_status_exitcode {
  PCMK_LSB_STATUS_OK = 0, PCMK_LSB_STATUS_VAR_PID = 1, PCMK_LSB_STATUS_VAR_LOCK = 2, PCMK_LSB_STATUS_NOT_RUNNING = 3,
  PCMK_LSB_STATUS_UNKNOWN = 4, PCMK_LSB_STATUS_NOT_INSTALLED = 150, PCMK_LSB_STATUS_INSUFFICIENT_PRIV = 151
}
 
enum  ocf_exitcode {
  PCMK_OCF_OK = 0, PCMK_OCF_UNKNOWN_ERROR = 1, PCMK_OCF_INVALID_PARAM = 2, PCMK_OCF_UNIMPLEMENT_FEATURE = 3,
  PCMK_OCF_INSUFFICIENT_PRIV = 4, PCMK_OCF_NOT_INSTALLED = 5, PCMK_OCF_NOT_CONFIGURED = 6, PCMK_OCF_NOT_RUNNING = 7,
  PCMK_OCF_RUNNING_MASTER = 8, PCMK_OCF_FAILED_MASTER = 9, PCMK_OCF_CONNECTION_DIED = 189, PCMK_OCF_DEGRADED = 190,
  PCMK_OCF_DEGRADED_MASTER = 191, PCMK_OCF_EXEC_ERROR = 192, PCMK_OCF_UNKNOWN = 193, PCMK_OCF_SIGNAL = 194,
  PCMK_OCF_NOT_SUPPORTED = 195, PCMK_OCF_PENDING = 196, PCMK_OCF_CANCELLED = 197, PCMK_OCF_TIMEOUT = 198,
  PCMK_OCF_OTHER_ERROR = 199
}
 
enum  op_status {
  PCMK_LRM_OP_PENDING = -1, PCMK_LRM_OP_DONE, PCMK_LRM_OP_CANCELLED, PCMK_LRM_OP_TIMEOUT,
  PCMK_LRM_OP_NOTSUPPORTED, PCMK_LRM_OP_ERROR, PCMK_LRM_OP_ERROR_HARD, PCMK_LRM_OP_ERROR_FATAL,
  PCMK_LRM_OP_NOT_INSTALLED
}
 
enum  nagios_exitcode {
  NAGIOS_STATE_OK = 0, NAGIOS_STATE_WARNING = 1, NAGIOS_STATE_CRITICAL = 2, NAGIOS_STATE_UNKNOWN = 3,
  NAGIOS_STATE_DEPENDENT = 4, NAGIOS_INSUFFICIENT_PRIV = 100, NAGIOS_NOT_INSTALLED = 101
}
 
enum  svc_action_flags { SVC_ACTION_LEAVE_GROUP = 0x01 }
 

Functions

GList * get_directory_list (const char *root, gboolean files, gboolean executable)
 Get a list of files or directories in a given path. More...
 
GList * services_list (void)
 
GList * resources_list_providers (const char *standard)
 Get a list of providers. More...
 
GList * resources_list_agents (const char *standard, const char *provider)
 Get a list of resource agents. More...
 
GList * resources_list_standards (void)
 
svc_action_tservices_action_create (const char *name, const char *action, int interval, int timeout)
 
svc_action_tresources_action_create (const char *name, const char *standard, const char *provider, const char *agent, const char *action, int interval, int timeout, GHashTable *params, enum svc_action_flags flags)
 Create a new resource action. More...
 
gboolean services_action_kick (const char *name, const char *action, int interval)
 
const char * resources_find_service_class (const char *agent)
 
svc_action_tservices_action_create_generic (const char *exec, const char *args[])
 
void services_action_cleanup (svc_action_t *op)
 
void services_action_free (svc_action_t *op)
 
gboolean services_action_sync (svc_action_t *op)
 
gboolean services_action_async (svc_action_t *op, void(*action_callback)(svc_action_t *))
 
gboolean services_action_cancel (const char *name, const char *action, int interval)
 Cancel a recurring action. More...
 

Detailed Description

Services API.

Definition in file services.h.

Macro Definition Documentation

§ LSB_ROOT_DIR

#define LSB_ROOT_DIR   "/etc/init.d"

Definition at line 42 of file services.h.

§ OCF_ROOT_DIR

#define OCF_ROOT_DIR   "/usr/lib/ocf"

Definition at line 38 of file services.h.

§ PCMK_OCF_REASON_PREFIX

#define PCMK_OCF_REASON_PREFIX   "ocf-exit-reason:"

Definition at line 69 of file services.h.

§ PCMK_RESOURCE_CLASS_HB

#define PCMK_RESOURCE_CLASS_HB   "heartbeat"

Definition at line 61 of file services.h.

§ PCMK_RESOURCE_CLASS_LSB

#define PCMK_RESOURCE_CLASS_LSB   "lsb"

Definition at line 58 of file services.h.

§ PCMK_RESOURCE_CLASS_NAGIOS

#define PCMK_RESOURCE_CLASS_NAGIOS   "nagios"

Definition at line 62 of file services.h.

§ PCMK_RESOURCE_CLASS_OCF

#define PCMK_RESOURCE_CLASS_OCF   "ocf"

Definition at line 56 of file services.h.

§ PCMK_RESOURCE_CLASS_SERVICE

#define PCMK_RESOURCE_CLASS_SERVICE   "service"

Definition at line 57 of file services.h.

§ PCMK_RESOURCE_CLASS_STONITH

#define PCMK_RESOURCE_CLASS_STONITH   "stonith"

Definition at line 63 of file services.h.

§ PCMK_RESOURCE_CLASS_SYSTEMD

#define PCMK_RESOURCE_CLASS_SYSTEMD   "systemd"

Definition at line 59 of file services.h.

§ PCMK_RESOURCE_CLASS_UPSTART

#define PCMK_RESOURCE_CLASS_UPSTART   "upstart"

Definition at line 60 of file services.h.

§ SERVICE_SCRIPT

#define SERVICE_SCRIPT   "/sbin/service"

Definition at line 52 of file services.h.

§ SYSTEMCTL

#define SYSTEMCTL   "/bin/systemctl"

Definition at line 47 of file services.h.

Typedef Documentation

§ svc_action_private_t

Definition at line 160 of file services.h.

§ svc_action_t

typedef struct svc_action_s svc_action_t

Enumeration Type Documentation

§ lsb_exitcode

Enumerator
PCMK_LSB_OK 
PCMK_LSB_UNKNOWN_ERROR 
PCMK_LSB_INVALID_PARAM 
PCMK_LSB_UNIMPLEMENT_FEATURE 
PCMK_LSB_INSUFFICIENT_PRIV 
PCMK_LSB_NOT_INSTALLED 
PCMK_LSB_NOT_CONFIGURED 
PCMK_LSB_NOT_RUNNING 

Definition at line 72 of file services.h.

§ lsb_status_exitcode

Enumerator
PCMK_LSB_STATUS_OK 
PCMK_LSB_STATUS_VAR_PID 
PCMK_LSB_STATUS_VAR_LOCK 
PCMK_LSB_STATUS_NOT_RUNNING 
PCMK_LSB_STATUS_UNKNOWN 
PCMK_LSB_STATUS_NOT_INSTALLED 
PCMK_LSB_STATUS_INSUFFICIENT_PRIV 

Definition at line 86 of file services.h.

§ nagios_exitcode

Enumerator
NAGIOS_STATE_OK 
NAGIOS_STATE_WARNING 
NAGIOS_STATE_CRITICAL 
NAGIOS_STATE_UNKNOWN 
NAGIOS_STATE_DEPENDENT 
NAGIOS_INSUFFICIENT_PRIV 
NAGIOS_NOT_INSTALLED 

Definition at line 142 of file services.h.

§ ocf_exitcode

Enumerator
PCMK_OCF_OK 
PCMK_OCF_UNKNOWN_ERROR 
PCMK_OCF_INVALID_PARAM 
PCMK_OCF_UNIMPLEMENT_FEATURE 
PCMK_OCF_INSUFFICIENT_PRIV 
PCMK_OCF_NOT_INSTALLED 
PCMK_OCF_NOT_CONFIGURED 
PCMK_OCF_NOT_RUNNING 
PCMK_OCF_RUNNING_MASTER 
PCMK_OCF_FAILED_MASTER 
PCMK_OCF_CONNECTION_DIED 
PCMK_OCF_DEGRADED 
PCMK_OCF_DEGRADED_MASTER 
PCMK_OCF_EXEC_ERROR 
PCMK_OCF_UNKNOWN 
PCMK_OCF_SIGNAL 
PCMK_OCF_NOT_SUPPORTED 
PCMK_OCF_PENDING 
PCMK_OCF_CANCELLED 
PCMK_OCF_TIMEOUT 
PCMK_OCF_OTHER_ERROR 

Definition at line 101 of file services.h.

§ op_status

enum op_status
Enumerator
PCMK_LRM_OP_PENDING 
PCMK_LRM_OP_DONE 
PCMK_LRM_OP_CANCELLED 
PCMK_LRM_OP_TIMEOUT 
PCMK_LRM_OP_NOTSUPPORTED 
PCMK_LRM_OP_ERROR 
PCMK_LRM_OP_ERROR_HARD 
PCMK_LRM_OP_ERROR_FATAL 
PCMK_LRM_OP_NOT_INSTALLED 

Definition at line 130 of file services.h.

§ svc_action_flags

Enumerator
SVC_ACTION_LEAVE_GROUP 

Definition at line 153 of file services.h.

Function Documentation

§ get_directory_list()

GList* get_directory_list ( const char *  root,
gboolean  files,
gboolean  executable 
)

Get a list of files or directories in a given path.

Parameters
[in]rootfull path to a directory to read
[in]filesreturn list of files if TRUE or directories if FALSE
[in]executableif TRUE and files is TRUE, only return executable files
Returns
a list of what was found. The list items are char *.
Note
It is the caller's responsibility to free the result with g_list_free_full(list, free).

Definition at line 815 of file services.c.

§ resources_action_create()

svc_action_t* resources_action_create ( const char *  name,
const char *  standard,
const char *  provider,
const char *  agent,
const char *  action,
int  interval,
int  timeout,
GHashTable *  params,
enum svc_action_flags  flags 
)

Create a new resource action.

Parameters
[in]namename of resource
[in]standardresource agent standard (ocf, lsb, etc.)
[in]providerresource agent provider
[in]agentresource agent name
[in]actionaction (start, stop, monitor, etc.)
[in]intervalhow often to repeat this action, in milliseconds (if 0, execute only once)
[in]timeoutconsider action failed if it does not complete in this many milliseconds
[in]paramsaction parameters
Returns
newly allocated action instance
Postcondition
After the call, 'params' is owned, and later free'd by the svc_action_t result
Note
The caller is responsible for freeing the return value using services_action_free().

Definition at line 154 of file services.c.

§ resources_find_service_class()

const char* resources_find_service_class ( const char *  agent)

Find the first class that can provide service::${agent}

Parameters
[in]agentwhich agent to search for
Returns
NULL, or the first class that provides the named agent

Definition at line 59 of file services.c.

§ resources_list_agents()

GList* resources_list_agents ( const char *  standard,
const char *  provider 
)

Get a list of resource agents.

Parameters
[in]standardlist agents using this standard (e.g. ocf, lsb, etc.) (or NULL for all)
[in]providerlist agents from this provider (or NULL for all)
Returns
a list of resource agents. The list items are char *.
Note
The caller is responsible for freeing the result using g_list_free_full(list, free).

Definition at line 889 of file services.c.

§ resources_list_providers()

GList* resources_list_providers ( const char *  standard)

Get a list of providers.

Parameters
[in]standardlist providers of this standard (e.g. ocf, lsb, etc.)
Returns
a list of providers as char * list items (or NULL if standard does not support providers)
Note
The caller is responsible for freeing the result using g_list_free_full(list, free).

Definition at line 879 of file services.c.

§ resources_list_standards()

GList* resources_list_standards ( void  )

Get list of available standards

Returns
a list of resource standards. The list items are char *. This list must be destroyed using g_list_free_full(list, free).

Definition at line 835 of file services.c.

§ services_action_async()

gboolean services_action_async ( svc_action_t op,
void(*)(svc_action_t *)  action_callback 
)

Run an action asynchronously.

Parameters
[in]opservices action data
[in]action_callbackcallback for when the action completes
Return values
TRUEsuccesfully started execution
FALSEfailed to start execution, no callback will be received

Definition at line 707 of file services.c.

§ services_action_cancel()

gboolean services_action_cancel ( const char *  name,
const char *  action,
int  interval 
)

Cancel a recurring action.

Parameters
[in]nameName of resource that operation is for
[in]actionName of operation to cancel
[in]intervalInterval of operation to cancel
Returns
TRUE if action was successfully cancelled, FALSE otherwise

Definition at line 521 of file services.c.

§ services_action_cleanup()

void services_action_cleanup ( svc_action_t op)

Definition at line 407 of file services.c.

§ services_action_create()

svc_action_t* services_action_create ( const char *  name,
const char *  action,
int  interval,
int  timeout 
)

Definition at line 52 of file services.c.

§ services_action_create_generic()

svc_action_t* services_action_create_generic ( const char *  exec,
const char *  args[] 
)

Utilize services API to execute an arbitrary command.

This API has useful infrastructure in place to be able to run a command in the background and get notified via a callback when the command finishes.

Parameters
[in]execcommand to execute
[in]argsarguments to the command, NULL terminated
Returns
a svc_action_t object, used to pass to the execute function (services_action_sync() or services_action_async()) and is provided to the callback.

Definition at line 355 of file services.c.

§ services_action_free()

void services_action_free ( svc_action_t op)

Definition at line 443 of file services.c.

§ services_action_kick()

gboolean services_action_kick ( const char *  name,
const char *  action,
int  interval 
)

Kick a recurring action so it is scheduled immediately for re-execution

Definition at line 584 of file services.c.

§ services_action_sync()

gboolean services_action_sync ( svc_action_t op)

Definition at line 793 of file services.c.

§ services_list()

GList* services_list ( void  )

Get a list of services

Returns
a list of services. The list items are gchar *. This list must be destroyed using g_list_free_full(list, free).

Definition at line 821 of file services.c.