Blob Blame History Raw
From d00a6abde7e6a41f8bc6085c875cb8072aff499b Mon Sep 17 00:00:00 2001
From: Chris Lumens <clumens@redhat.com>
Date: Thu, 30 Jun 2022 09:25:05 -0400
Subject: [PATCH 1/2] Fix: libstonithd: Add the "Agent not found..." message to
 formatted output.

---
 lib/fencing/st_client.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c
index 137642af7..971bbe9a5 100644
--- a/lib/fencing/st_client.c
+++ b/lib/fencing/st_client.c
@@ -1763,9 +1763,14 @@ stonith_api_validate(stonith_t *st, int call_options, const char *rsc_id,
         default:
             rc = -EINVAL;
             errno = EINVAL;
-            crm_perror(LOG_ERR,
-                       "Agent %s not found or does not support validation",
-                       agent);
+
+            if (error_output) {
+                *error_output = crm_strdup_printf("Agent %s not found or does not support validation",
+                                                  agent);
+            } else {
+                crm_err("Agent %s not found or does not support validation", agent);
+            }
+
             break;
     }
     g_hash_table_destroy(params_table);
-- 
2.31.1


From f3a5fc961c30556b975011773e4cebf323bec38e Mon Sep 17 00:00:00 2001
From: Chris Lumens <clumens@redhat.com>
Date: Fri, 1 Jul 2022 10:38:45 -0400
Subject: [PATCH 2/2] Refactor: libstonithd: Split apart error conditions when
 validating.

The "not found" and "can't validate" cases were previously jumbled
together.  Now, return ENOENT if the agent is not found and EOPNOTSUPP
if it can't validate.  The only caller appears to be handling both cases
correctly already, so no changes are needed there.
---
 lib/fencing/st_client.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c
index 971bbe9a5..192334812 100644
--- a/lib/fencing/st_client.c
+++ b/lib/fencing/st_client.c
@@ -1760,19 +1760,32 @@ stonith_api_validate(stonith_t *st, int call_options, const char *rsc_id,
             break;
 #endif
 
+        case st_namespace_invalid:
+            errno = ENOENT;
+            rc = -errno;
+
+            if (error_output) {
+                *error_output = crm_strdup_printf("Agent %s not found", agent);
+            } else {
+                crm_err("Agent %s not found", agent);
+            }
+
+            break;
+
         default:
-            rc = -EINVAL;
-            errno = EINVAL;
+            errno = EOPNOTSUPP;
+            rc = -errno;
 
             if (error_output) {
-                *error_output = crm_strdup_printf("Agent %s not found or does not support validation",
+                *error_output = crm_strdup_printf("Agent %s does not support validation",
                                                   agent);
             } else {
-                crm_err("Agent %s not found or does not support validation", agent);
+                crm_err("Agent %s does not support validation", agent);
             }
 
             break;
     }
+
     g_hash_table_destroy(params_table);
     return rc;
 }
-- 
2.31.1