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