239ec8
From 9853f4d05a376062d60f2e4c90938e587992237b Mon Sep 17 00:00:00 2001
239ec8
From: Chris Lumens <clumens@redhat.com>
239ec8
Date: Mon, 27 Jun 2022 12:06:24 -0400
239ec8
Subject: [PATCH 1/2] Fix: tools: Don't output "(null)" in crm_attribute's
239ec8
 quiet mode.
239ec8
239ec8
If the attribute queried for has no value, simply do not output
239ec8
anything.
239ec8
239ec8
Regression in 2.1.3 introduced by 8c03553bbf
239ec8
239ec8
Fixes T502
239ec8
See: rhbz#2099331
239ec8
---
239ec8
 tools/crm_attribute.c | 4 +++-
239ec8
 1 file changed, 3 insertions(+), 1 deletion(-)
239ec8
239ec8
diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c
239ec8
index 0bd9dee81..b1463f906 100644
239ec8
--- a/tools/crm_attribute.c
239ec8
+++ b/tools/crm_attribute.c
239ec8
@@ -56,7 +56,9 @@ attribute_text(pcmk__output_t *out, va_list args)
239ec8
     char *host G_GNUC_UNUSED = va_arg(args, char *);
239ec8
 
239ec8
     if (out->quiet) {
239ec8
-        pcmk__formatted_printf(out, "%s\n", value);
239ec8
+        if (value != NULL) {
239ec8
+            pcmk__formatted_printf(out, "%s\n", value);
239ec8
+        }
239ec8
     } else {
239ec8
         out->info(out, "%s%s %s%s %s%s value=%s",
239ec8
                   scope ? "scope=" : "", scope ? scope : "",
239ec8
-- 
239ec8
2.31.1
239ec8
239ec8
239ec8
From 16d00a9b3ef27afd09f5c046ea1be50fc664ed84 Mon Sep 17 00:00:00 2001
239ec8
From: Chris Lumens <clumens@redhat.com>
239ec8
Date: Mon, 27 Jun 2022 12:18:06 -0400
239ec8
Subject: [PATCH 2/2] Test: cts: Add a test for querying an attribute that does
239ec8
 not exist.
239ec8
239ec8
---
239ec8
 cts/cli/regression.tools.exp | 4 ++++
239ec8
 cts/cts-cli.in               | 5 +++++
239ec8
 2 files changed, 9 insertions(+)
239ec8
239ec8
diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp
239ec8
index 0d1cfa2ab..464472d42 100644
239ec8
--- a/cts/cli/regression.tools.exp
239ec8
+++ b/cts/cli/regression.tools.exp
239ec8
@@ -24,6 +24,10 @@ A new shadow instance was created.  To begin using it paste the following into y
239ec8
 </cib>
239ec8
 =#=#=#= End test: Validate CIB - OK (0) =#=#=#=
239ec8
 * Passed: cibadmin       - Validate CIB
239ec8
+=#=#=#= Begin test: Query the value of an attribute that does not exist =#=#=#=
239ec8
+crm_attribute: Error performing operation: No such device or address
239ec8
+=#=#=#= End test: Query the value of an attribute that does not exist - No such object (105) =#=#=#=
239ec8
+* Passed: crm_attribute  - Query the value of an attribute that does not exist
239ec8
 =#=#=#= Begin test: Configure something before erasing =#=#=#=
239ec8
 =#=#=#= Current cib after: Configure something before erasing =#=#=#=
239ec8
 <cib epoch="2" num_updates="0" admin_epoch="0">
239ec8
diff --git a/cts/cts-cli.in b/cts/cts-cli.in
239ec8
index 8565c485a..b895d36ec 100755
239ec8
--- a/cts/cts-cli.in
239ec8
+++ b/cts/cts-cli.in
239ec8
@@ -511,6 +511,10 @@ function test_tools() {
239ec8
     cmd="cibadmin -Q"
239ec8
     test_assert $CRM_EX_OK
239ec8
 
239ec8
+    desc="Query the value of an attribute that does not exist"
239ec8
+    cmd="crm_attribute -n ABCD --query --quiet"
239ec8
+    test_assert $CRM_EX_NOSUCH 0
239ec8
+
239ec8
     desc="Configure something before erasing"
239ec8
     cmd="crm_attribute -n cluster-delay -v 60s"
239ec8
     test_assert $CRM_EX_OK
239ec8
@@ -1980,6 +1984,7 @@ for t in $tests; do
239ec8
         -e 's/ end=\"[0-9][-+: 0-9]*Z*\"/ end=\"\"/' \
239ec8
         -e 's/ start=\"[0-9][-+: 0-9]*Z*\"/ start=\"\"/' \
239ec8
         -e 's/^Error checking rule: Device not configured/Error checking rule: No such device or address/' \
239ec8
+        -e 's/Error performing operation: Device not configured/Error performing operation: No such device or address/' \
239ec8
         -e 's/\(Injecting attribute last-failure-ping#monitor_10000=\)[0-9]*/\1/' \
239ec8
         -e 's/^lt-//' \
239ec8
         -e 's/ocf::/ocf:/' \
239ec8
-- 
239ec8
2.31.1
239ec8