cl_log(LOG_ERR, "Cause: No such file or directory.");
execra( const char * rsc_id, const char * rsc_type, const char * provider,	const char * op_type, const int timeout, GHashTable * params){	RA_ARGV params_argv;	char ra_pathname[RA_MAX_NAME_LENGTH];	uniform_ret_execra_t exit_value;	GString * debug_info;	char * inherit_debuglevel = NULL;	char * optype_tmp = NULL;	int index_tmp = 0;	/* How to generate the meta-data? There is nearly no value	 * information in meta-data build up in current way. 	 * Should directly add meta-data to the script itself?	 */	if ( 0 == STRNCMP_CONST(op_type, "meta-data") ) {		printf("%s", get_resource_meta(rsc_type, provider));		exit(0);	}	/* To simulate the 'monitor' operation with 'status'.	 * Now suppose there is no 'monitor' operation for heartbeat scripts.	 */	if ( 0 == STRNCMP_CONST(op_type, "monitor") ) {		optype_tmp = g_strdup("status");	} else {		optype_tmp = g_strdup(op_type);	}	/* Prepare the call parameter */	if (0 > prepare_cmd_parameters(rsc_type, optype_tmp, params, params_argv)) {		cl_log(LOG_ERR, "HB RA: Error of preparing parameters");		g_free(optype_tmp);		return -1;	}	g_free(optype_tmp);	get_ra_pathname(RA_PATH, rsc_type, NULL, ra_pathname);	/* let this log show only high loglevel. */	inherit_debuglevel = getenv(HADEBUGVAL);	if ((inherit_debuglevel != NULL) && (atoi(inherit_debuglevel) > 1)) {		debug_info = g_string_new("");		do {			g_string_append(debug_info, params_argv[index_tmp]);			g_string_append(debug_info, " ");		} while (params_argv[++index_tmp] != NULL);		debug_info->str[debug_info->len-1] = '\0';		cl_log(LOG_DEBUG, "RA instance %s executing: heartbeat::%s"			, rsc_id, debug_info->str);		g_string_free(debug_info, TRUE);	} 		execv(ra_pathname, params_argv);	cl_log(LOG_ERR, "execv error when to execute a heartbeat RA %s.", rsc_type);	switch (errno) {		case ENOENT:   /* No such file or directory */		case EISDIR:   /* Is a directory */			exit_value = EXECRA_NO_RA;			cl_log(LOG_ERR, "Cause: No such file or directory.");			break;		default:			exit_value = EXECRA_EXEC_UNKNOWN_ERROR;			cl_log(LOG_ERR, "Cause: execv unknow error.");        }        exit(exit_value);}