diff --git a/proliantutils/hpssa/manager.py b/proliantutils/hpssa/manager.py index 3d1b881..95157b3 100644 --- a/proliantutils/hpssa/manager.py +++ b/proliantutils/hpssa/manager.py @@ -134,7 +134,11 @@ def create_configuration(raid_config): controller = server.get_controller_by_id(controller_id) if not controller: - msg = ("Unable to find controller named '%s'" % controller_id) + msg = ("Unable to find controller named '%(controller)s'." + " The available controllers are '%(ctrl_list)s'." % + {'controller': controller_id, + 'ctrl_list': ', '.join( + [c.id for c in server.controllers])}) raise exception.InvalidInputError(reason=msg) if 'physical_disks' in logical_disk: diff --git a/proliantutils/tests/hpssa/test_manager.py b/proliantutils/tests/hpssa/test_manager.py index e0eed57..9baa728 100644 --- a/proliantutils/tests/hpssa/test_manager.py +++ b/proliantutils/tests/hpssa/test_manager.py @@ -114,6 +114,21 @@ class ManagerTestCases(testtools.TestCase): manager.create_configuration, raid_info) + no_drives = raid_constants.HPSSA_NO_DRIVES + get_all_details_mock.return_value = no_drives + raid_info = {'logical_disks': [ + {'size_gb': 50, + 'raid_level': '1', + 'controller': 'Smart Array P822 in Slot 0', + 'physical_disks': ["6I:1:5", "6I:1:6"]}]} + msg = ("Invalid Input: Unable to find controller named 'Smart Array " + "P822 in Slot 0'. The available controllers are " + "'Smart Array P822 in Slot 2'.") + ex = self.assertRaises(exception.InvalidInputError, + manager.create_configuration, + raid_info) + self.assertEqual(msg, str(ex)) + @mock.patch.object(objects.Controller, 'execute_cmd') def test_create_configuration_without_disk_input_succeeds( self, controller_exec_cmd_mock, get_all_details_mock):