diff --git a/heat/engine/manager.py b/heat/engine/manager.py index e839b9e16c..41728c10c0 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -67,7 +67,7 @@ def _extract_args(params): kwargs = {} try: timeout_mins = int(params.get('TimeoutInMinutes', 0)) - except ValueError: + except (ValueError, TypeError): logger.exception('create timeout conversion') else: if timeout_mins > 0: diff --git a/heat/tests/test_manager.py b/heat/tests/test_manager.py index a9943c186a..9df0880be8 100644 --- a/heat/tests/test_manager.py +++ b/heat/tests/test_manager.py @@ -53,3 +53,27 @@ class managerTest(unittest.TestCase): 'Parameters.member.Foo.Bar.ParameterValue': 'bar'} params = manager._extract_user_params(p) self.assertFalse(params) + + def test_timeout_extract(self): + p = {'TimeoutInMinutes': '5'} + args = manager._extract_args(p) + self.assertEqual(args['timeout_in_minutes'], 5) + + def test_timeout_extract_zero(self): + p = {'TimeoutInMinutes': '0'} + args = manager._extract_args(p) + self.assertTrue('timeout_in_minutes' not in args) + + def test_timeout_extract_garbage(self): + p = {'TimeoutInMinutes': 'wibble'} + args = manager._extract_args(p) + self.assertTrue('timeout_in_minutes' not in args) + + def test_timeout_extract_none(self): + p = {'TimeoutInMinutes': None} + args = manager._extract_args(p) + self.assertTrue('timeout_in_minutes' not in args) + + def test_timeout_extract_not_present(self): + args = manager._extract_args({}) + self.assertTrue('timeout_in_minutes' not in args)