diff --git a/ceph/utils.py b/ceph/utils.py index 33703f0..6331f9c 100644 --- a/ceph/utils.py +++ b/ceph/utils.py @@ -944,15 +944,27 @@ def get_partition_list(dev): # For each line of output for partition in partitions: parts = partition.split() - partitions_list.append( - Partition(number=parts[0], - start=parts[1], - end=parts[2], - sectors=parts[3], - size=parts[4], - name=parts[5], - uuid=parts[6]) - ) + try: + partitions_list.append( + Partition(number=parts[0], + start=parts[1], + end=parts[2], + sectors=parts[3], + size=parts[4], + name=parts[5], + uuid=parts[6]) + ) + except IndexError: + partitions_list.append( + Partition(number=parts[0], + start=parts[1], + end=parts[2], + sectors=parts[3], + size=parts[4], + name="", + uuid=parts[5]) + ) + return partitions_list except subprocess.CalledProcessError: raise diff --git a/unit_tests/partx_output b/unit_tests/partx_output index 9964245..12e910f 100644 --- a/unit_tests/partx_output +++ b/unit_tests/partx_output @@ -1,2 +1,4 @@ 1 2099200 8377310 6278111 3G ceph\x20data 6e99ac59-1aa3-4812-abd7-9c886a151dd4 2 2048 2099199 2097152 1G ceph\x20journal 0333f202-256c-4867-a85c-3e3c92abd461 +3 1050624 273680383 272629760 130G 21a38dc5-bc0d-4b9e-9151-2e480c081cca +4 273680384 500118158 226437775 108G b351d068-08b5-4d1c-a90c-e72f6b742cc8 diff --git a/unit_tests/test_utils.py b/unit_tests/test_utils.py index 9e98be9..627dc3b 100644 --- a/unit_tests/test_utils.py +++ b/unit_tests/test_utils.py @@ -227,7 +227,7 @@ class CephTestCase(unittest.TestCase): with open('unit_tests/partx_output', 'r') as partx_out: output.return_value = partx_out.read().encode('UTF-8') partition_list = utils.get_partition_list('/dev/xvdb') - self.assertEqual(len(partition_list), 2) + self.assertEqual(len(partition_list), 4) @patch.object(utils.subprocess, 'check_output') def test_get_ceph_pg_stat(self, output):