From 621434451f561e7ef7c549a134f3bfadcf10520f Mon Sep 17 00:00:00 2001 From: Marek Aufart Date: Tue, 17 Mar 2015 15:38:24 +0100 Subject: Add the ability to set and unset flavor properties Added flavor set and unset command which allow manage flavor properties called extra_specs. Command flavor show output was extended with these properties. Closes-Bug: 1434137 Change-Id: Ie469bade802de18aab9d58eda3fff46064008163 --- openstackclient/tests/compute/v2/test_flavor.py | 77 ++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) (limited to 'openstackclient/tests') diff --git a/openstackclient/tests/compute/v2/test_flavor.py b/openstackclient/tests/compute/v2/test_flavor.py index 8f33ccfe..19be8124 100644 --- a/openstackclient/tests/compute/v2/test_flavor.py +++ b/openstackclient/tests/compute/v2/test_flavor.py @@ -22,8 +22,17 @@ from openstackclient.tests import fakes class FakeFlavorResource(fakes.FakeResource): + _keys = {'property': 'value'} + + def set_keys(self, args): + self._keys.update(args) + + def unset_keys(self, keys): + for key in keys: + self._keys.pop(key, None) + def get_keys(self): - return {'property': 'value'} + return self._keys class TestFlavor(compute_fakes.TestComputev2): @@ -272,3 +281,69 @@ class TestFlavorList(TestFlavor): 'property=\'value\'' ), ) self.assertEqual(datalist, tuple(data)) + + +class TestFlavorSet(TestFlavor): + + def setUp(self): + super(TestFlavorSet, self).setUp() + + self.flavors_mock.find.return_value = FakeFlavorResource( + None, + copy.deepcopy(compute_fakes.FLAVOR), + loaded=True, + ) + + self.cmd = flavor.SetFlavor(self.app, None) + + def test_flavor_set(self): + arglist = [ + '--property', 'FOO="B A R"', + 'baremetal' + ] + verifylist = [ + ('property', {'FOO': '"B A R"'}), + ('flavor', 'baremetal') + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.flavors_mock.find.assert_called_with(name='baremetal') + + self.assertEqual('properties', columns[2]) + self.assertIn('FOO=\'"B A R"\'', data[2]) + + +class TestFlavorUnset(TestFlavor): + + def setUp(self): + super(TestFlavorUnset, self).setUp() + + self.flavors_mock.find.return_value = FakeFlavorResource( + None, + copy.deepcopy(compute_fakes.FLAVOR), + loaded=True, + ) + + self.cmd = flavor.UnsetFlavor(self.app, None) + + def test_flavor_unset(self): + arglist = [ + '--property', 'property', + 'baremetal' + ] + verifylist = [ + ('property', ['property']), + ('flavor', 'baremetal'), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.flavors_mock.find.assert_called_with(name='baremetal') + + self.assertEqual('properties', columns[2]) + self.assertNotIn('property', data[2]) -- cgit v1.2.1