return FALSE;
} else if(action->type == action_type_pseudo){ crm_err("Failed on unsupported %s: " "%s (id=%s) on %s", action->xml->name, task, id, on_node);  action->complete = TRUE;
initiate_action(action_t *action) {	const char *on_node   = NULL;	const char *id        = NULL;	const char *runnable  = NULL;	const char *optional  = NULL;	const char *task      = NULL;	const char *discard   = NULL;	const char *timeout   = NULL;#ifndef TESTING	xmlNodePtr options = NULL;	xmlNodePtr data    = NULL;	xmlNodePtr rsc_op  = NULL;#endif	discard  = xmlGetProp(action->xml, XML_LRM_ATTR_DISCARD);	on_node  = xmlGetProp(action->xml, XML_LRM_ATTR_TARGET);	id       = xmlGetProp(action->xml, XML_ATTR_ID);	runnable = xmlGetProp(action->xml, XML_LRM_ATTR_RUNNABLE);	optional = xmlGetProp(action->xml, XML_LRM_ATTR_OPTIONAL);	task     = xmlGetProp(action->xml, XML_LRM_ATTR_TASK);	timeout  = xmlGetProp(action->xml, "timeout");	if(id == NULL || strlen(id) == 0		  || on_node == NULL || strlen(on_node) == 0		  || task == NULL || strlen(task) == 0) {		/* error */		crm_err("Failed on corrupted command: %s (id=%s) on %s",			crm_str(task), crm_str(id), crm_str(on_node));					return FALSE;				} else if(safe_str_eq(action->xml->name, "pseduo_event")){		if(safe_str_eq(task, "stonith")){			crm_info("Executing %s (%s) of node %s",				 task, id, on_node);/*  translate this into a stonith op by deisgnated node  may need the CIB to determine who is running the stonith resource  for this node  more liekly, have the pengine find and supply that info */		} else {			crm_err("Failed on unsupported %s: "				"%s (id=%s) on %s",				action->xml->name, task, id, on_node);							return FALSE;		}							} else if(safe_str_eq(action->xml->name, "crm_event")){		/*		  <crm_msg op=XML_LRM_ATTR_TASK to=XML_RES_ATTR_TARGET>		*/		crm_info("Executing crm-event (%s): %s on %s",			 id, task, on_node);#ifndef TESTING		options = create_xml_node(			NULL, XML_TAG_OPTIONS);		set_xml_property_copy(options, XML_ATTR_OP, task);		send_ipc_request(			crm_ch, options, NULL, on_node,			CRM_SYSTEM_CRMD,CRM_SYSTEM_TENGINE,NULL,NULL);		if(action->timeout > 0) {			crm_debug("Setting timer for action %d",action->id);			action->timer_id = Gmain_timeout_add(				action->timeout, timer_callback, action);		}				free_xml(options);#endif					return TRUE;	} else if(safe_str_eq(action->xml->name, "rsc_op")){		crm_info("Executing rsc-op (%s): %s %s on %s",			 id, task,			 xmlGetProp(action->xml->children, XML_ATTR_ID),			 on_node);		/* let everyone know this was invoked */		do_update_cib(action->xml, -1);#ifndef TESTING		/*		  <msg_data>		  <rsc_op id="operation number" on_node="" task="">		  <resource>...</resource>		*/		data    = create_xml_node(NULL, "msg_data");		rsc_op  = create_xml_node(data, "rsc_op");		options = create_xml_node(NULL, XML_TAG_OPTIONS);		set_xml_property_copy(options, XML_ATTR_OP, "rsc_op");					set_xml_property_copy(rsc_op, XML_ATTR_ID, id);		set_xml_property_copy(rsc_op, XML_LRM_ATTR_TASK, task);		set_xml_property_copy(rsc_op, XML_LRM_ATTR_TARGET, on_node);					add_node_copy(rsc_op, action->xml->children);		send_ipc_request(crm_ch, options, data,				 on_node, "lrmd", CRM_SYSTEM_TENGINE,				 NULL, NULL);		if(action->timeout > 0) {			crm_debug("Setting timer for action %d",action->id);			action->timer_id = Gmain_timeout_add(				action->timeout, timer_callback, action);		}					free_xml(options);		free_xml(data);#endif					return TRUE;				} else {		crm_err("Failed on unsupported command type: "			"%s, %s (id=%s) on %s",			action->xml->name, task, id, on_node);		return FALSE;	}		return FALSE;}