summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-04-30 12:42:08 +0000
committerGerrit Code Review <review@openstack.org>2017-04-30 12:42:08 +0000
commitaec5258745e1e3c609ad6ee30949060b47f1d20d (patch)
tree59e449ed2e8d789ba1099dd1741611551b7e8e10
parentad22c586a4d04197a40454f75670b498a8194c8d (diff)
parentb535bbd6831a9747b0b71a9031b1149b48292a94 (diff)
downloadpython-novaclient-aec5258745e1e3c609ad6ee30949060b47f1d20d.tar.gz
Merge "Fix ValueError when incorrect metadata passed" into stable/ocata
-rw-r--r--novaclient/tests/unit/v2/test_shell.py22
-rw-r--r--novaclient/v2/shell.py6
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):