420d803
From 15d5cb5679d69bb016edd8659362bb4c23b3573d Mon Sep 17 00:00:00 2001
420d803
From: Vratislav Podzimek <vpodzime@redhat.com>
420d803
Date: Tue, 4 Oct 2016 21:12:06 +0200
420d803
Subject: [PATCH 2/3] Search for just "UUID" in mdadm --examine output
420d803
420d803
IMSM raid arrays don't have the "Array UUID" key reported, it's just "UUID". And
420d803
as a bonus, the volume UUID is reported as well as the container's UUID (we care
420d803
about), both using just "UUID".
420d803
420d803
Related: rhbz#1379865
420d803
420d803
(cherry-picked from commit 0fb4e778b8a30200ed6e4272e9427d109f993eb2)
420d803
420d803
Signed-off-by: Vratislav Podzimek <vpodzime@redhat.com>
420d803
---
420d803
 src/plugins/mdraid.c | 7 ++++++-
420d803
 tests/md_test.py     | 1 +
420d803
 2 files changed, 7 insertions(+), 1 deletion(-)
420d803
420d803
diff --git a/src/plugins/mdraid.c b/src/plugins/mdraid.c
420d803
index 7e6b2da..5bfbfb8 100644
420d803
--- a/src/plugins/mdraid.c
420d803
+++ b/src/plugins/mdraid.c
420d803
@@ -164,7 +164,9 @@ static GHashTable* parse_mdadm_vars (gchar *str, gchar *item_sep, gchar *key_val
420d803
         key_val = g_strsplit (*item_p, key_val_sep, 2);
420d803
         if (g_strv_length (key_val) == 2) {
420d803
             /* we only want to process valid lines (with the separator) */
420d803
-            g_hash_table_insert (table, g_strstrip (key_val[0]), g_strstrip (key_val[1]));
420d803
+            /* only use the first value for the given key */
420d803
+            if (!g_hash_table_contains (table, g_strstrip (key_val[0])))
420d803
+                g_hash_table_insert (table, g_strstrip (key_val[0]), g_strstrip (key_val[1]));
420d803
             (*num_items)++;
420d803
         } else
420d803
             /* invalid line, just free key_val */
420d803
@@ -211,6 +213,9 @@ static BDMDExamineData* get_examine_data_from_table (GHashTable *table, gboolean
420d803
         data->size = 0;
420d803
 
420d803
     data->uuid = g_strdup ((gchar*) g_hash_table_lookup (table, "Array UUID"));
420d803
+    if (!data->uuid)
420d803
+        /* also try just "UUID" which may be reported e.g for IMSM FW RAID */
420d803
+        data->uuid = g_strdup ((gchar*) g_hash_table_lookup (table, "UUID"));
420d803
 
420d803
     value = (gchar*) g_hash_table_lookup (table, "Update Time");
420d803
     if (value) {
420d803
diff --git a/tests/md_test.py b/tests/md_test.py
420d803
index 4b4d898..2fab378 100644
420d803
--- a/tests/md_test.py
420d803
+++ b/tests/md_test.py
420d803
@@ -412,6 +412,7 @@ class FakeMDADMutilTest(unittest.TestCase):
420d803
 
420d803
         self.assertEqual(ex_data.level, "container")
420d803
         self.assertEqual(ex_data.num_devices, 1)
420d803
+        self.assertEqual(ex_data.uuid, "b42756a2-37e4-3e47-674b-d1dd6e822145")
420d803
 
420d803
     def test_no_metadata_examine(self):
420d803
         """Verify that md_examine works as expected with no metadata spec"""
420d803
-- 
420d803
2.7.4
420d803