From 0d30d108783d3ab01d9b97bac262ffe00e25267e Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Tue, 19 Mar 2013 13:32:48 +1100 Subject: [PATCH] Fix: Pass errors from lsb metadata generation back to the caller --- crmd/lrm.c | 5 +++-- lib/lrmd/lrmd_client.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crmd/lrm.c b/crmd/lrm.c index d71d86cace5..0d10ba2d972 100644 --- a/crmd/lrm.c +++ b/crmd/lrm.c @@ -418,6 +418,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, static char * get_rsc_metadata(const char *type, const char *class, const char *provider) { + int rc = 0; char *metadata = NULL; /* Always use a local connection for this operation */ @@ -432,7 +433,7 @@ get_rsc_metadata(const char *type, const char *class, const char *provider) } crm_trace("Retreiving metadata for %s::%s:%s", type, class, provider); - lrm_state_get_metadata(lrm_state, class, provider, type, &metadata, 0); + rc = lrm_state_get_metadata(lrm_state, class, provider, type, &metadata, 0); if (metadata) { /* copy the metadata because the LRM likes using @@ -444,7 +445,7 @@ get_rsc_metadata(const char *type, const char *class, const char *provider) metadata = m_copy; } else { - crm_warn("No metadata found for %s::%s:%s", type, class, provider); + crm_warn("No metadata found for %s::%s:%s: %s (%d)", type, class, provider, pcmk_strerror(rc), rc); } return metadata; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 8426e497d76..25e778bb2ed 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1555,11 +1555,15 @@ lsb_get_metadata(const char *type, char **output) char *xml_l_dscrpt = NULL; GString *l_dscrpt = NULL; - snprintf(ra_pathname, sizeof(ra_pathname), "%s%s%s", - type[0] == '/' ? "" : LSB_ROOT_DIR, type[0] == '/' ? "" : "/", type); + if(type[0] == '/') { + snprintf(ra_pathname, sizeof(ra_pathname), "%s", type); + } else { + snprintf(ra_pathname, sizeof(ra_pathname), "%s/%s", LSB_ROOT_DIR, type); + } + crm_trace("Looking into %s", ra_pathname); if (!(fp = fopen(ra_pathname, "r"))) { - return -EIO; + return -errno; } /* Enter into the lsb-compliant comment block */ @@ -1628,6 +1632,7 @@ lsb_get_metadata(const char *type, char **output) *output = strdup(meta_data->str); g_string_free(meta_data, TRUE); + crm_trace("Created fake metadata: %d", strlen(*output)); return pcmk_ok; }