31 create_attrd_op(
const char *user_name)
54 send_attrd_op(
crm_ipc_t *ipc, xmlNode *attrd_op)
59 static gboolean connected = TRUE;
63 if (ipc == NULL && local_ipc == NULL) {
74 if (connected == FALSE) {
75 crm_info(
"Connecting to cluster... %d retries remaining", max);
82 crm_perror(LOG_INFO,
"Connection to cluster attribute manager failed");
85 if (ipc != local_ipc) {
91 }
else if (
rc == -EAGAIN ||
rc == -EALREADY) {
136 const char *
name,
const char *value,
137 const char *section,
const char *set,
138 const char *dampen,
const char *user_name,
int options)
141 const char *task = NULL;
142 const char *name_as = NULL;
143 const char *display_host = (
host ?
host :
"localhost");
144 const char *display_command = NULL;
145 xmlNode *update = create_attrd_op(user_name);
155 if (
name == NULL && command ==
'U') {
172 display_command =
"refresh";
188 display_command =
"purge";
192 if (name_as != NULL) {
211 rc = send_attrd_op(ipc, update);
216 if (display_command) {
217 crm_debug(
"Asked pacemaker-attrd to %s %s: %s (%d)",
220 crm_debug(
"Asked pacemaker-attrd to update %s=%s for %s: %s (%d)",
242 const char *resource,
const char *operation,
243 const char *interval_spec,
const char *user_name,
247 xmlNode *clear_op = create_attrd_op(user_name);
248 const char *interval_desc = NULL;
249 const char *op_desc = NULL;
259 rc = send_attrd_op(ipc, clear_op);
263 interval_desc = interval_spec? interval_spec :
"nonrecurring";
266 interval_desc =
"all";
267 op_desc =
"operations";
269 crm_debug(
"Asked pacemaker-attrd to clear failure of %s %s for %s on %s: %s (%d)",
270 interval_desc, op_desc, (resource? resource :
"all resources"),
275 #define LRM_TARGET_ENV "OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET 293 const char *
target = getenv(target_var);
294 const char *host_physical = getenv(phys_var);
298 name = host_physical;
#define PCMK__XA_ATTR_DAMPENING
#define PCMK__ATTRD_CMD_UPDATE_DELAY
#define PCMK__XA_ATTR_NAME
bool crm_ipc_connect(crm_ipc_t *client)
Establish an IPC connection to a Pacemaker component.
#define PCMK__ATTRD_CMD_UPDATE_BOTH
#define PCMK__ATTRD_CMD_PEER_REMOVE
bool pcmk__strcase_any_of(const char *s,...) G_GNUC_NULL_TERMINATED
const char * crm_xml_add_int(xmlNode *node, const char *name, int value)
Create an XML attribute with specified name and integer value.
const char * crm_xml_add(xmlNode *node, const char *name, const char *value)
Create an XML attribute with specified name and value.
#define PCMK__XA_ATTR_VALUE
#define PCMK__XA_ATTR_RESOURCE
#define PCMK__ATTRD_CMD_CLEAR_FAILURE
const char * pcmk_rc_str(int rc)
Get a user-friendly description of a return code.
#define XML_CIB_TAG_NODES
#define XML_RSC_ATTR_TARGET
char * crm_meta_name(const char *field)
#define PCMK__XA_ATTR_SECTION
#define crm_debug(fmt, args...)
struct crm_ipc_s crm_ipc_t
#define PCMK__XA_ATTR_OPERATION
#define PCMK__ATTRD_CMD_REFRESH
int pcmk__node_attr_request_clear(crm_ipc_t *ipc, const char *host, const char *resource, const char *operation, const char *interval_spec, const char *user_name, int options)
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
#define PCMK__XA_ATTR_INTERVAL
#define PCMK__XA_ATTR_IS_PRIVATE
xmlNode * create_xml_node(xmlNode *parent, const char *name)
#define PCMK__XA_ATTR_USER
#define PCMK__ATTRD_CMD_QUERY
int pcmk_legacy2rc(int legacy_rc)
#define PCMK__ATTRD_CMD_UPDATE
void free_xml(xmlNode *child)
#define PCMK__ENV_PHYSICAL_HOST
int pcmk__node_attr_request(crm_ipc_t *ipc, char command, const char *host, const char *name, const char *value, const char *section, const char *set, const char *dampen, const char *user_name, int options)
#define PCMK__XA_ATTR_NODE_NAME
#define crm_perror(level, fmt, args...)
Send a system error message to both the log and stderr.
#define pcmk__set_ipc_flags(ipc_flags, ipc_name, flags_to_set)
int crm_ipc_send(crm_ipc_t *client, xmlNode *message, enum crm_ipc_flags flags, int32_t ms_timeout, xmlNode **reply)
Send an IPC XML message.
crm_ipc_t * crm_ipc_new(const char *name, size_t max_size)
Create a new (legacy) object for using Pacemaker daemon IPC.
#define PCMK__XA_ATTR_IS_REMOTE
#define XML_CIB_TAG_STATUS
#define PCMK__XA_ATTR_PATTERN
const char * pcmk__node_attr_target(const char *name)
#define PCMK__XA_ATTR_SET
void crm_ipc_close(crm_ipc_t *client)
#define crm_info(fmt, args...)