diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-08-11 04:07:03 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-08-11 04:07:03 +0000 |
| commit | 5b724fc88b92eda6c801a6a561b2cf034e471a03 (patch) | |
| tree | ac4147d3004b23a074b66da574863f2d5546f4d8 /openstackclient | |
| parent | b3248fb0bdf52905b4c241d561f9e8738fc56eba (diff) | |
| parent | 722be75f9cffec7242d893cac20d40c570af32d6 (diff) | |
| download | python-openstackclient-5b724fc88b92eda6c801a6a561b2cf034e471a03.tar.gz | |
Merge "Implement "network agent set" command"
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/network/v2/network_agent.py | 41 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/test_network_agent.py | 75 |
2 files changed, 116 insertions, 0 deletions
diff --git a/openstackclient/network/v2/network_agent.py b/openstackclient/network/v2/network_agent.py index 1fb70a50..fdb34bb7 100644 --- a/openstackclient/network/v2/network_agent.py +++ b/openstackclient/network/v2/network_agent.py @@ -99,6 +99,47 @@ class ListNetworkAgent(command.Lister): ) for s in data)) +class SetNetworkAgent(command.Command): + """Set network agent properties""" + + def get_parser(self, prog_name): + parser = super(SetNetworkAgent, self).get_parser(prog_name) + parser.add_argument( + 'network_agent', + metavar="<network-agent>", + help=(_("Network agent to modify (ID only)")) + ) + parser.add_argument( + '--description', + metavar='<description>', + help=_("Set network agent description") + ) + admin_group = parser.add_mutually_exclusive_group() + admin_group.add_argument( + '--enable', + action='store_true', + help=_("Enable network agent") + ) + admin_group.add_argument( + '--disable', + action='store_true', + help=_("Disable network agent") + ) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.network + obj = client.get_agent(parsed_args.network_agent, ignore_missing=False) + attrs = {} + if parsed_args.description is not None: + attrs['description'] = str(parsed_args.description) + if parsed_args.enable: + attrs['admin_state_up'] = True + if parsed_args.disable: + attrs['admin_state_up'] = False + client.update_agent(obj, **attrs) + + class ShowNetworkAgent(command.ShowOne): """Display network agent details""" diff --git a/openstackclient/tests/network/v2/test_network_agent.py b/openstackclient/tests/network/v2/test_network_agent.py index 3cf9a530..269d4e1d 100644 --- a/openstackclient/tests/network/v2/test_network_agent.py +++ b/openstackclient/tests/network/v2/test_network_agent.py @@ -160,6 +160,81 @@ class TestListNetworkAgent(TestNetworkAgent): self.assertEqual(self.data, list(data)) +class TestSetNetworkAgent(TestNetworkAgent): + + _network_agent = ( + network_fakes.FakeNetworkAgent.create_one_network_agent()) + + def setUp(self): + super(TestSetNetworkAgent, self).setUp() + self.network.update_agent = mock.Mock(return_value=None) + self.network.get_agent = mock.Mock(return_value=self._network_agent) + + # Get the command object to test + self.cmd = network_agent.SetNetworkAgent(self.app, self.namespace) + + def test_set_nothing(self): + arglist = [ + self._network_agent.id, + ] + verifylist = [ + ('network_agent', self._network_agent.id), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + attrs = {} + self.network.update_agent.assert_called_once_with( + self._network_agent, **attrs) + self.assertIsNone(result) + + def test_set_all(self): + arglist = [ + '--description', 'new_description', + '--enable', + self._network_agent.id, + ] + verifylist = [ + ('description', 'new_description'), + ('enable', True), + ('disable', False), + ('network_agent', self._network_agent.id), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + attrs = { + 'description': 'new_description', + 'admin_state_up': True, + } + self.network.update_agent.assert_called_once_with( + self._network_agent, **attrs) + self.assertIsNone(result) + + def test_set_with_disable(self): + arglist = [ + '--disable', + self._network_agent.id, + ] + verifylist = [ + ('enable', False), + ('disable', True), + ('network_agent', self._network_agent.id), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + attrs = { + 'admin_state_up': False, + } + self.network.update_agent.assert_called_once_with( + self._network_agent, **attrs) + self.assertIsNone(result) + + class TestShowNetworkAgent(TestNetworkAgent): _network_agent = ( |
