summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/drivers/modules/ipmitool.py2
-rw-r--r--ironic/tests/drivers/test_ipmitool.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/ironic/drivers/modules/ipmitool.py b/ironic/drivers/modules/ipmitool.py
index 2bf7f844e..0ad34fa89 100644
--- a/ironic/drivers/modules/ipmitool.py
+++ b/ironic/drivers/modules/ipmitool.py
@@ -254,7 +254,7 @@ def _parse_driver_info(node):
address = info.get('ipmi_address')
username = info.get('ipmi_username')
- password = info.get('ipmi_password')
+ password = six.text_type(info.get('ipmi_password', ''))
port = info.get('ipmi_terminal_port')
priv_level = info.get('ipmi_priv_level', 'ADMINISTRATOR')
bridging_type = info.get('ipmi_bridging', 'no')
diff --git a/ironic/tests/drivers/test_ipmitool.py b/ironic/tests/drivers/test_ipmitool.py
index 284ceb958..21e478a7c 100644
--- a/ironic/tests/drivers/test_ipmitool.py
+++ b/ironic/tests/drivers/test_ipmitool.py
@@ -578,6 +578,17 @@ class IPMIToolPrivateMethodTestCase(db_base.DbTestCase):
self.assertEqual(mock.call('single_bridge'),
mock_support.call_args)
+ def test__parse_driver_info_numeric_password(
+ self, mock_sleep):
+ # ipmi_password must not be converted to int / float
+ # even if it includes just numbers.
+ info = dict(INFO_DICT)
+ info['ipmi_password'] = 12345678
+ node = obj_utils.get_test_node(self.context, driver_info=info)
+ ret = ipmi._parse_driver_info(node)
+ self.assertEqual(six.u('12345678'), ret['password'])
+ self.assertIsInstance(ret['password'], six.text_type)
+
def test__parse_driver_info_ipmi_prot_version_1_5(self, mock_sleep):
info = dict(INFO_DICT)
info['ipmi_protocol_version'] = '1.5'