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