From 81e4da55b983f1b0bc60751b61b03086dadb3851 Mon Sep 17 00:00:00 2001 From: Pradip Kadam Date: Tue, 6 Aug 2019 04:46:59 -0400 Subject: [PATCH] DRAC : Fix issue for RAID-0 creation for multiple disks for PERC H740P Story: 2006375 Task: 36164 Fix a bug which was introduced when executing ``create_configuration`` cleaning step for multiple disks of PERC H740P controller, first disks gets created and then controller doesn't allow to create next couple of disks because controller is getting busy at one time. Change-Id: I02ec595e639c04dd65ce788851c5dde074cc1095 --- ironic/drivers/modules/drac/raid.py | 3 ++- ironic/tests/unit/drivers/modules/drac/test_raid.py | 10 +++++----- ...0_creation_for_multiple_disks-f47957754fca0312.yaml | 7 +++++++ 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/fix_raid0_creation_for_multiple_disks-f47957754fca0312.yaml diff --git a/ironic/drivers/modules/drac/raid.py b/ironic/drivers/modules/drac/raid.py index 42d86d3845..751f9d950d 100644 --- a/ironic/drivers/modules/drac/raid.py +++ b/ironic/drivers/modules/drac/raid.py @@ -885,7 +885,8 @@ class DracRAID(base.RAIDInterface): controller['raid_controller'] = logical_disk['controller'] controller['is_reboot_required'] = controller_cap[ 'is_reboot_required'] - controllers.append(controller) + if controller not in controllers: + controllers.append(controller) return _commit_to_controllers(node, controllers) diff --git a/ironic/tests/unit/drivers/modules/drac/test_raid.py b/ironic/tests/unit/drivers/modules/drac/test_raid.py index eb0cab3640..387e3c0c74 100644 --- a/ironic/tests/unit/drivers/modules/drac/test_raid.py +++ b/ironic/tests/unit/drivers/modules/drac/test_raid.py @@ -968,7 +968,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest): reboot=False, realtime=True) self.node.refresh() - self.assertEqual(['42', '12', '13'], + self.assertEqual(['42'], self.node.driver_internal_info['raid_config_job_ids']) @mock.patch.object(drac_common, 'get_drac_client', spec_set=True, @@ -1027,7 +1027,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest): reboot=False, realtime=True) self.node.refresh() - self.assertEqual(['42', '12'], + self.assertEqual(['42'], self.node.driver_internal_info['raid_config_job_ids']) @mock.patch.object(drac_common, 'get_drac_client', spec_set=True, @@ -1097,7 +1097,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest): realtime=True) self.node.refresh() - self.assertEqual(['42', '12', '13'], + self.assertEqual(['42'], self.node.driver_internal_info['raid_config_job_ids']) @mock.patch.object(drac_common, 'get_drac_client', spec_set=True, @@ -1184,7 +1184,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest): realtime=True) self.node.refresh() - self.assertEqual(['42', '12'], + self.assertEqual(['42'], self.node.driver_internal_info['raid_config_job_ids']) @mock.patch.object(drac_common, 'get_drac_client', spec_set=True, @@ -1285,7 +1285,7 @@ class DracRaidInterfaceTestCase(test_utils.BaseDracTest): realtime=True) self.node.refresh() - self.assertEqual(['42', '42'], + self.assertEqual(['42'], self.node.driver_internal_info['raid_config_job_ids']) @mock.patch.object(drac_common, 'get_drac_client', spec_set=True, diff --git a/releasenotes/notes/fix_raid0_creation_for_multiple_disks-f47957754fca0312.yaml b/releasenotes/notes/fix_raid0_creation_for_multiple_disks-f47957754fca0312.yaml new file mode 100644 index 0000000000..cdb7dd1daf --- /dev/null +++ b/releasenotes/notes/fix_raid0_creation_for_multiple_disks-f47957754fca0312.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Fixed a bug when executing ``create_configuration`` cleaning step for disks + of PERC H740P controller, first disks get created and then controller + doesn't allow to create next couple disks because controller is getting + busy.