pacemaker
3.0.0-d8340737c4
Scalable High-Availability cluster resource manager
|
#include <crm_internal.h>
#include <crm/common/mainloop.h>
#include <crm/common/results.h>
#include <crm/common/output.h>
#include <crm/common/output_internal.h>
#include <crm/stonith-ng.h>
#include <crm/fencing/internal.h>
#include <glib.h>
#include <libxml/tree.h>
#include <pacemaker.h>
#include <pacemaker-internal.h>
#include "libpacemaker_private.h"
Go to the source code of this file.
Functions | |
int | pcmk__request_fencing (stonith_t *st, const char *target, const char *action, const char *name, unsigned int timeout, unsigned int tolerance, int delay, char **reason) |
Ask the cluster to perform fencing. More... | |
int | pcmk_request_fencing (xmlNodePtr *xml, const char *target, const char *action, const char *name, unsigned int timeout, unsigned int tolerance, int delay, char **reason) |
Ask the cluster to perform fencing. More... | |
int | pcmk__fence_history (pcmk__output_t *out, stonith_t *st, const char *target, unsigned int timeout, int verbose, bool broadcast, bool cleanup) |
List the fencing operations that have occurred for a specific node. More... | |
int | pcmk_fence_history (xmlNodePtr *xml, const char *target, unsigned int timeout, bool quiet, int verbose, bool broadcast, bool cleanup) |
List the fencing operations that have occurred for a specific node. More... | |
int | pcmk__fence_installed (pcmk__output_t *out, stonith_t *st, unsigned int timeout) |
List all installed fence agents. More... | |
int | pcmk_fence_installed (xmlNodePtr *xml, unsigned int timeout) |
List all installed fence agents. More... | |
int | pcmk__fence_last (pcmk__output_t *out, const char *target, bool as_nodeid) |
When was a device last fenced? More... | |
int | pcmk_fence_last (xmlNodePtr *xml, const char *target, bool as_nodeid) |
When was a device last fenced? More... | |
int | pcmk__fence_list_targets (pcmk__output_t *out, stonith_t *st, const char *device_id, unsigned int timeout) |
List nodes that can be fenced. More... | |
int | pcmk_fence_list_targets (xmlNodePtr *xml, const char *device_id, unsigned int timeout) |
List nodes that can be fenced. More... | |
int | pcmk__fence_metadata (pcmk__output_t *out, stonith_t *st, const char *agent, unsigned int timeout) |
Get metadata for a fence agent. More... | |
int | pcmk_fence_metadata (xmlNodePtr *xml, const char *agent, unsigned int timeout) |
Get metadata for a fence agent. More... | |
int | pcmk__fence_registered (pcmk__output_t *out, stonith_t *st, const char *target, unsigned int timeout) |
List registered fence devices. More... | |
int | pcmk_fence_registered (xmlNodePtr *xml, const char *target, unsigned int timeout) |
List registered fence devices. More... | |
int | pcmk__fence_register_level (stonith_t *st, const char *target, int fence_level, GList *devices) |
Register a fencing level for a specific node, node regex, or attribute. More... | |
int | pcmk_fence_register_level (xmlNodePtr *xml, const char *target, int fence_level, GList *devices) |
Register a fencing topology level. More... | |
int | pcmk__fence_unregister_level (stonith_t *st, const char *target, int fence_level) |
Unregister a fencing level for specific node, node regex, or attribute. More... | |
int | pcmk_fence_unregister_level (xmlNodePtr *xml, const char *target, int fence_level) |
Unregister a fencing topology level. More... | |
int | pcmk__fence_validate (pcmk__output_t *out, stonith_t *st, const char *agent, const char *id, GHashTable *params, unsigned int timeout) |
Validate a fence device configuration. More... | |
int | pcmk_fence_validate (xmlNodePtr *xml, const char *agent, const char *id, GHashTable *params, unsigned int timeout) |
Validate a fence device configuration. More... | |
int | pcmk__get_fencing_history (stonith_t *st, stonith_history_t **stonith_history, enum pcmk__fence_history fence_history) |
Fetch fencing history, optionally reducing it. More... | |
int pcmk__fence_history | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
const char * | target, | ||
unsigned int | timeout, | ||
int | verbose, | ||
bool | broadcast, | ||
bool | cleanup | ||
) |
List the fencing operations that have occurred for a specific node.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | target | The node to get history for |
[in] | timeout | How long to wait for operation to complete (in ms) |
[in] | verbose | Include additional output |
[in] | broadcast | Gather fencing history from all nodes |
[in] | cleanup | Clean up fencing history after listing |
Definition at line 254 of file pcmk_fence.c.
int pcmk__fence_installed | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
unsigned int | timeout | ||
) |
List all installed fence agents.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | timeout | How long to wait for the operation to complete (in ms) |
Definition at line 354 of file pcmk_fence.c.
int pcmk__fence_last | ( | pcmk__output_t * | out, |
const char * | target, | ||
bool | as_nodeid | ||
) |
When was a device last fenced?
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure. |
[in] | target | The node that was fenced. |
[in] | as_nodeid |
Definition at line 398 of file pcmk_fence.c.
int pcmk__fence_list_targets | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
const char * | device_id, | ||
unsigned int | timeout | ||
) |
List nodes that can be fenced.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | device_id | Resource ID of fence device to check |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 434 of file pcmk_fence.c.
int pcmk__fence_metadata | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
const char * | agent, | ||
unsigned int | timeout | ||
) |
Get metadata for a fence agent.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | agent | The fence agent to get metadata for |
[in] | timeout | How long to wait for the operation to complete (in ms) |
Definition at line 480 of file pcmk_fence.c.
int pcmk__fence_register_level | ( | stonith_t * | st, |
const char * | target, | ||
int | fence_level, | ||
GList * | devices | ||
) |
Register a fencing level for a specific node, node regex, or attribute.
target
can take three different forms:
target
is an attribute.target
is a node regex.target
is a node name.[in,out] | st | A connection to the fencer API |
[in] | target | The object to register a fencing level for |
[in] | fence_level | Index number of level to add |
[in] | devices | Devices to use in level as a list of char * |
Definition at line 565 of file pcmk_fence.c.
int pcmk__fence_registered | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
const char * | target, | ||
unsigned int | timeout | ||
) |
List registered fence devices.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | target | If not NULL, return only devices that can fence this |
[in] | timeout | How long to wait for the operation to complete (in ms) |
Definition at line 517 of file pcmk_fence.c.
int pcmk__fence_unregister_level | ( | stonith_t * | st, |
const char * | target, | ||
int | fence_level | ||
) |
Unregister a fencing level for specific node, node regex, or attribute.
target
can take three different forms:
target
is an attribute.target
is a node regex.target
is a node name.[in,out] | st | A connection to the fencer API |
[in] | target | The object to unregister a fencing level for |
[in] | fence_level | Index number of level to remove |
Definition at line 593 of file pcmk_fence.c.
int pcmk__fence_validate | ( | pcmk__output_t * | out, |
stonith_t * | st, | ||
const char * | agent, | ||
const char * | id, | ||
GHashTable * | params, | ||
unsigned int | timeout | ||
) |
Validate a fence device configuration.
out
should be initialized with pcmk__output_new() before calling this function and destroyed with out->finish and pcmk__output_free() before reusing it with any other functions in this library.[in,out] | out | The output functions structure |
[in,out] | st | A connection to the fencer API |
[in] | agent | The agent to validate (for example, "fence_xvm") |
[in] | id | Fence device ID (may be NULL) |
[in] | params | Fence device configuration parameters |
[in] | timeout | How long to wait for the operation to complete (in ms) |
Definition at line 619 of file pcmk_fence.c.
int pcmk__get_fencing_history | ( | stonith_t * | st, |
stonith_history_t ** | stonith_history, | ||
enum pcmk__fence_history | fence_history | ||
) |
Fetch fencing history, optionally reducing it.
[in,out] | st | A connection to the fencer API |
[out] | stonith_history | Destination for storing the history |
[in] | fence_history | How much of the fencing history to display |
Definition at line 654 of file pcmk_fence.c.
int pcmk__request_fencing | ( | stonith_t * | st, |
const char * | target, | ||
const char * | action, | ||
const char * | name, | ||
unsigned int | timeout, | ||
unsigned int | tolerance, | ||
int | delay, | ||
char ** | reason | ||
) |
Ask the cluster to perform fencing.
[in,out] | st | A connection to the fencer API |
[in] | target | The node that should be fenced |
[in] | action | The fencing action (on, off, reboot) to perform |
[in] | name | Who requested the fence action? |
[in] | timeout | How long to wait for operation to complete (in ms) |
[in] | tolerance | If a successful action for target happened within this many milliseconds, return success without performing the action again |
[in] | delay | Apply this delay (in milliseconds) before initiating fencing action (a value of -1 applies no delay and disables any fencing delay from pcmk_delay_base and pcmk_delay_max) |
[out] | reason | If not NULL, where to put descriptive failure reason |
reason
is not NULL, the caller is responsible for freeing its returned value. Definition at line 195 of file pcmk_fence.c.
int pcmk_fence_history | ( | xmlNodePtr * | xml, |
const char * | target, | ||
unsigned int | timeout, | ||
bool | quiet, | ||
int | verbose, | ||
bool | broadcast, | ||
bool | cleanup | ||
) |
List the fencing operations that have occurred for a specific node.
xml
is not NULL, it will be freed first and the previous contents lost.[in,out] | xml | The destination for the result, as an XML tree |
[in] | target | The node to get history for |
[in] | timeout | How long to wait for operation to complete (in ms) |
[in] | quiet | Suppress most output |
[in] | verbose | Include additional output |
[in] | broadcast | Gather fencing history from all nodes |
[in] | cleanup | Clean up fencing history after listing |
Definition at line 330 of file pcmk_fence.c.
int pcmk_fence_installed | ( | xmlNodePtr * | xml, |
unsigned int | timeout | ||
) |
List all installed fence agents.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 378 of file pcmk_fence.c.
int pcmk_fence_last | ( | xmlNodePtr * | xml, |
const char * | target, | ||
bool | as_nodeid | ||
) |
When was a device last fenced?
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | target | The node that was fenced |
[in] | as_nodeid | If true, target has node ID rather than name |
Definition at line 416 of file pcmk_fence.c.
int pcmk_fence_list_targets | ( | xmlNodePtr * | xml, |
const char * | device_id, | ||
unsigned int | timeout | ||
) |
List nodes that can be fenced.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | device_id | Resource ID of fence device to check |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 460 of file pcmk_fence.c.
int pcmk_fence_metadata | ( | xmlNodePtr * | xml, |
const char * | agent, | ||
unsigned int | timeout | ||
) |
Get metadata for a fence agent.
xml
is not NULL, it will be freed first and the previous contents lost.[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | agent | The fence agent to get metadata for |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 497 of file pcmk_fence.c.
int pcmk_fence_register_level | ( | xmlNodePtr * | xml, |
const char * | target, | ||
int | fence_level, | ||
GList * | devices | ||
) |
Register a fencing topology level.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | target | What fencing level targets (as "name=value" to target by given node attribute, or "@pattern" to target by node name pattern, or a node name) |
[in] | fence_level | Index number of level to add |
[in] | devices | Devices to use in level as a list of char * |
Definition at line 572 of file pcmk_fence.c.
int pcmk_fence_registered | ( | xmlNodePtr * | xml, |
const char * | target, | ||
unsigned int | timeout | ||
) |
List registered fence devices.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | target | If not NULL, return only devices that can fence this |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 545 of file pcmk_fence.c.
int pcmk_fence_unregister_level | ( | xmlNodePtr * | xml, |
const char * | target, | ||
int | fence_level | ||
) |
Unregister a fencing topology level.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | target | What fencing level targets (as "name=value" to target by given node attribute, or "@pattern" to target by node name pattern, or a node name) |
[in] | fence_level | Index number of level to remove |
Definition at line 599 of file pcmk_fence.c.
int pcmk_fence_validate | ( | xmlNodePtr * | xml, |
const char * | agent, | ||
const char * | id, | ||
GHashTable * | params, | ||
unsigned int | timeout | ||
) |
Validate a fence device configuration.
[in,out] | xml | The destination for the result, as an XML tree (if not NULL, previous contents will be freed and lost) |
[in] | agent | The agent to validate (for example, "fence_xvm") |
[in] | id | Fence device ID (may be NULL) |
[in] | params | Fence device configuration parameters |
[in] | timeout | How long to wait for operation to complete (in ms) |
Definition at line 633 of file pcmk_fence.c.
int pcmk_request_fencing | ( | xmlNodePtr * | xml, |
const char * | target, | ||
const char * | action, | ||
const char * | name, | ||
unsigned int | timeout, | ||
unsigned int | tolerance, | ||
int | delay, | ||
char ** | reason | ||
) |
Ask the cluster to perform fencing.
[in,out] | xml | The destination for the result, as an XML tree |
[in] | target | The node that should be fenced |
[in] | action | The fencing action (on, off, reboot) to perform |
[in] | name | Who requested the fence action? |
[in] | timeout | How long to wait for operation to complete (in ms) |
[in] | tolerance | If a successful action for target happened within this many ms, return 0 without performing the action again |
[in] | delay | Apply this delay (in milliseconds) before initiating fencing action (-1 applies no delay and also disables any fencing delay from pcmk_delay_base and pcmk_delay_max) |
[out] | reason | If not NULL, where to put descriptive failure reason |
reason
is not NULL, the caller is responsible for freeing its returned value. Definition at line 231 of file pcmk_fence.c.
const char* action |
Definition at line 32 of file pcmk_fence.c.
int delay |
Definition at line 36 of file pcmk_fence.c.
char* name |
Definition at line 33 of file pcmk_fence.c.
pcmk__action_result_t result |
Definition at line 37 of file pcmk_fence.c.
stonith_t* st |
Definition at line 30 of file pcmk_fence.c.
const char* target |
Definition at line 31 of file pcmk_fence.c.
unsigned int timeout |
Definition at line 34 of file pcmk_fence.c.
unsigned int tolerance |
Definition at line 35 of file pcmk_fence.c.