diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py index dfa798b85..b56eb0033 100644 --- a/novaclient/tests/unit/v2/test_shell.py +++ b/novaclient/tests/unit/v2/test_shell.py @@ -2243,6 +2243,13 @@ class ShellTest(utils.TestCase): self.assert_called('PUT', '/os-aggregates/1', body, pos=-2) self.assert_called('GET', '/os-aggregates/1', pos=-1) + def test_aggregate_update_without_availability_zone_and_name(self): + ex = self.assertRaises(exceptions.CommandError, self.run_command, + 'aggregate-update test') + self.assertIn("Either '--name ' or '--availability-zone " + "' must be specified.", + six.text_type(ex)) + def test_aggregate_set_metadata_add_by_id(self): out, err = self.run_command('aggregate-set-metadata 3 foo=bar') body = {"set_metadata": {"metadata": {"foo": "bar"}}} diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py index 6b21c4880..de5b52bbc 100644 --- a/novaclient/v2/shell.py +++ b/novaclient/v2/shell.py @@ -3175,6 +3175,11 @@ def do_aggregate_update(cs, args): if args.availability_zone: updates["availability_zone"] = args.availability_zone + if not updates: + raise exceptions.CommandError(_( + "Either '--name ' or '--availability-zone " + "' must be specified.")) + aggregate = cs.aggregates.update(aggregate.id, updates) print(_("Aggregate %s has been successfully updated.") % aggregate.id) _print_aggregate_details(cs, aggregate)