30 create_attrd_op(
const char *user_name)
53 send_attrd_op(
crm_ipc_t *ipc, xmlNode *attrd_op)
58 static gboolean connected = TRUE;
62 if (ipc == NULL && local_ipc == NULL) {
73 if (connected == FALSE) {
74 crm_info(
"Connecting to cluster... %d retries remaining", max);
81 crm_perror(LOG_INFO,
"Connection to cluster attribute manager failed");
84 if (ipc != local_ipc) {
90 }
else if (rc == -EAGAIN || rc == -EALREADY) {
136 const char *name,
const char *value,
const char *section,
137 const char *set,
const char *dampen,
138 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) {
209 rc = send_attrd_op(ipc, update);
214 if (display_command) {
215 crm_debug(
"Asked pacemaker-attrd to %s %s: %s (%d)",
218 crm_debug(
"Asked pacemaker-attrd to update %s=%s for %s: %s (%d)",
239 const char *operation,
const char *interval_spec,
240 const char *user_name,
int options)
243 xmlNode *clear_op = create_attrd_op(user_name);
244 const char *interval_desc = NULL;
245 const char *op_desc = NULL;
254 rc = send_attrd_op(ipc, clear_op);
258 interval_desc = interval_spec? interval_spec :
"nonrecurring";
261 interval_desc =
"all";
262 op_desc =
"operations";
264 crm_debug(
"Asked pacemaker-attrd to clear failure of %s %s for %s on %s: %s (%d)",
265 interval_desc, op_desc, (resource? resource :
"all resources"),
270 #define LRM_TARGET_ENV "OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET
285 const char *target = getenv(target_var);
286 const char *host_physical = getenv(phys_var);
289 if (host_physical &&
safe_str_eq(target,
"host")) {
290 name = host_physical;
bool crm_ipc_connect(crm_ipc_t *client)
Establish an IPC connection to a Pacemaker component.
const char * pcmk_strerror(int rc)
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 XML_CIB_TAG_NODES
#define XML_RSC_ATTR_TARGET
#define attrd_opt_private
char * crm_meta_name(const char *field)
#define ATTRD_OP_PEER_REMOVE
#define F_ATTRD_OPERATION
#define PCMK_ENV_PHYSICAL_HOST
const char * attrd_get_target(const char *name)
#define F_ATTRD_ATTRIBUTE
#define ATTRD_OP_UPDATE_BOTH
#define crm_debug(fmt, args...)
struct crm_ipc_s crm_ipc_t
#define F_ATTRD_IS_PRIVATE
xmlNode * create_xml_node(xmlNode *parent, const char *name)
#define F_ATTRD_IS_REMOTE
void free_xml(xmlNode *child)
#define ATTRD_OP_CLEAR_FAILURE
int attrd_update_delegate(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)
Send a request to pacemaker-attrd.
int attrd_clear_delegate(crm_ipc_t *ipc, const char *host, const char *resource, const char *operation, const char *interval_spec, const char *user_name, int options)
Send a request to pacemaker-attrd to clear resource failure.
#define crm_perror(level, fmt, args...)
Log a system error message.
int crm_ipc_send(crm_ipc_t *client, xmlNode *message, enum crm_ipc_flags flags, int32_t ms_timeout, xmlNode **reply)
crm_ipc_t * crm_ipc_new(const char *name, size_t max_size)
#define XML_CIB_TAG_STATUS
#define safe_str_eq(a, b)
void crm_ipc_close(crm_ipc_t *client)
#define ATTRD_OP_UPDATE_DELAY
#define crm_info(fmt, args...)