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
+