diff --git a/dracclient/resources/raid.py b/dracclient/resources/raid.py index 371dc5b..85496f3 100644 --- a/dracclient/resources/raid.py +++ b/dracclient/resources/raid.py @@ -226,7 +226,7 @@ class RAIDManagement(object): name=self._get_virtual_disk_attr(drac_disk, 'Name'), description=self._get_virtual_disk_attr(drac_disk, 'DeviceDescription'), - controller=fqdd.split(':')[1], + controller=fqdd.split(':')[-1], raid_level=REVERSE_RAID_LEVELS[drac_raid_level], size_mb=int(size_b) / 2 ** 20, status=constants.PRIMARY_STATUS[drac_status], @@ -277,7 +277,7 @@ class RAIDManagement(object): id=fqdd, description=self._get_physical_disk_attr(drac_disk, 'DeviceDescription'), - controller=fqdd.split(':')[2], + controller=fqdd.split(':')[-1], manufacturer=self._get_physical_disk_attr(drac_disk, 'Manufacturer'), model=self._get_physical_disk_attr(drac_disk, 'Model'), diff --git a/dracclient/tests/test_raid.py b/dracclient/tests/test_raid.py index 05cdd5d..f802db8 100644 --- a/dracclient/tests/test_raid.py +++ b/dracclient/tests/test_raid.py @@ -95,6 +95,30 @@ class ClientRAIDManagementTestCase(base.BaseTest): self.assertIn(expected_physical_disk, self.drac_client.list_physical_disks()) + def test_list_physical_disks_direct(self, mock_requests): + expected_physical_disk = raid.PhysicalDisk( + id='Disk.Direct.2:RAID.Integrated.1-1', + description=('Disk 2 on ' + 'Integrated RAID Controller 1'), + controller='RAID.Integrated.1-1', + manufacturer='ATA', + model='ST600MM0007', + media_type='ssd', + interface_type='sata', + size_mb=571776, + free_size_mb=571776, + serial_number='S0M3EY3Z', + firmware_version='LS0B', + status='ok', + raid_status='ready') + + mock_requests.post( + 'https://1.2.3.4:443/wsman', + text=test_utils.RAIDEnumerations[uris.DCIM_PhysicalDiskView]['ok']) + + self.assertIn(expected_physical_disk, + self.drac_client.list_physical_disks()) + # Verify that various client convert_physical_disks calls to dracclient # result in a WSMan.invoke with appropriate parameters def _random_term(self): diff --git a/dracclient/tests/wsman_mocks/physical_disk_view-enum-ok.xml b/dracclient/tests/wsman_mocks/physical_disk_view-enum-ok.xml index 7e0576d..bf3633b 100644 --- a/dracclient/tests/wsman_mocks/physical_disk_view-enum-ok.xml +++ b/dracclient/tests/wsman_mocks/physical_disk_view-enum-ok.xml @@ -86,9 +86,46 @@ 0 0 + + 512 + 5 + 0 + Disk 2 on Integrated RAID Controller 1 + 2 + Disk.Direct.2:RAID.Integrated.1-1 + 599550590976 + 0 + Disk.Direct.2:RAID.Integrated.1-1 + 20150226180025.000000+000 + 20150226180025.000000+000 + ATA + 2 + 33 + 2014 + 3 + 1 + ST600MM0007 + None + 0 + CN07YX587262248G01PZA02 + 0 + 1 + 1 + 255 + LS0B + 1 + 5000C5007764F409 + 0 + S0M3EY3Z + 599550590976 + 2 + None + 0 + 0 + - \ No newline at end of file +