diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-04-30 12:42:08 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-04-30 12:42:08 +0000 |
commit | aec5258745e1e3c609ad6ee30949060b47f1d20d (patch) | |
tree | 59e449ed2e8d789ba1099dd1741611551b7e8e10 | |
parent | ad22c586a4d04197a40454f75670b498a8194c8d (diff) | |
parent | b535bbd6831a9747b0b71a9031b1149b48292a94 (diff) | |
download | python-novaclient-aec5258745e1e3c609ad6ee30949060b47f1d20d.tar.gz |
Merge "Fix ValueError when incorrect metadata passed" into stable/ocata
-rw-r--r-- | novaclient/tests/unit/v2/test_shell.py | 22 | ||||
-rw-r--r-- | novaclient/v2/shell.py | 6 |
2 files changed, 27 insertions, 1 deletions
diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py index 373ec0c4..719b694b 100644 --- a/novaclient/tests/unit/v2/test_shell.py +++ b/novaclient/tests/unit/v2/test_shell.py @@ -614,6 +614,14 @@ class ShellTest(utils.TestCase): }}, ) + def test_boot_with_incorrect_metadata(self): + cmd = ('boot --image %s --flavor 1 --meta foo ' + 'some-server ' % FAKE_UUID_1) + result = self.assertRaises(argparse.ArgumentTypeError, + self.run_command, cmd) + expected = "'['foo']' is not in the format of 'key=value'" + self.assertEqual(expected, result.args[0]) + def test_boot_hints(self): self.run_command('boot --image %s --flavor 1 ' '--hint a=b0=c0 --hint a=b1=c1 some-server ' % @@ -1235,6 +1243,13 @@ class ShellTest(utils.TestCase): {'createImage': {'name': 'mysnapshot', 'metadata': {}}}, ) + def test_create_image_with_incorrect_metadata(self): + cmd = 'image-create sample-server mysnapshot --metadata foo' + result = self.assertRaises(argparse.ArgumentTypeError, + self.run_command, cmd) + expected = "'['foo']' is not in the format of 'key=value'" + self.assertEqual(expected, result.args[0]) + def test_create_image_with_metadata(self): self.run_command( 'image-create sample-server mysnapshot --metadata mykey=123') @@ -1483,6 +1498,13 @@ class ShellTest(utils.TestCase): self.assert_called('GET', '/flavors/1', pos=4) self.assert_called('GET', '/v2/images/%s' % FAKE_UUID_2, pos=5) + def test_rebuild_with_incorrect_metadata(self): + cmd = 'rebuild sample-server %s --name asdf --meta foo' % FAKE_UUID_1 + result = self.assertRaises(argparse.ArgumentTypeError, + self.run_command, cmd) + expected = "'['foo']' is not in the format of 'key=value'" + self.assertEqual(expected, result.args[0]) + def test_start(self): self.run_command('start sample-server') self.assert_called('POST', '/servers/1234/action', {'os-start': None}) diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py index 28867501..cccde662 100644 --- a/novaclient/v2/shell.py +++ b/novaclient/v2/shell.py @@ -114,7 +114,11 @@ def _key_value_pairing(text): def _meta_parsing(metadata): - return dict(v.split('=', 1) for v in metadata) + try: + return dict(v.split('=', 1) for v in metadata) + except ValueError: + msg = _("'%s' is not in the format of 'key=value'") % metadata + raise argparse.ArgumentTypeError(msg) def _match_image(cs, wanted_properties): |