Skip to content

Commit 5b724fc

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Implement "network agent set" command"
2 parents b3248fb + 722be75 commit 5b724fc

6 files changed

Lines changed: 158 additions & 2 deletions

File tree

doc/source/command-objects/network-agent.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,36 @@ List network agents
3636
3737
os network agent list
3838
39+
network agent set
40+
-----------------
41+
42+
Set network agent properties
43+
44+
.. program:: network agent set
45+
.. code:: bash
46+
47+
os network agent set
48+
[--description <description>]
49+
[--enable | --disable]
50+
<network-agent>
51+
52+
.. option:: --description <discription>
53+
54+
Set network agent description
55+
56+
.. option:: --enable
57+
58+
Enable network agent
59+
60+
.. option:: --disable
61+
62+
Disable network agent
63+
64+
.. _network_agent_set-network-agent:
65+
.. describe:: <network-agent>
66+
67+
Network agent to modify (ID only)
68+
3969
network agent show
4070
------------------
4171

functional/tests/network/v2/test_network_agent.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,12 @@ def test_network_agent_show(self):
3030
opts = self.get_opts(self.FIELDS)
3131
raw_output = self.openstack('network agent show ' + self.IDs[0] + opts)
3232
self.assertEqual(self.IDs[0] + "\n", raw_output)
33+
34+
def test_network_agent_set(self):
35+
opts = self.get_opts(['admin_state_up'])
36+
self.openstack('network agent set --disable ' + self.IDs[0])
37+
raw_output = self.openstack('network agent show ' + self.IDs[0] + opts)
38+
self.assertEqual("DOWN\n", raw_output)
39+
self.openstack('network agent set --enable ' + self.IDs[0])
40+
raw_output = self.openstack('network agent show ' + self.IDs[0] + opts)
41+
self.assertEqual("UP\n", raw_output)

openstackclient/network/v2/network_agent.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,47 @@ def take_action(self, parsed_args):
9999
) for s in data))
100100

101101

102+
class SetNetworkAgent(command.Command):
103+
"""Set network agent properties"""
104+
105+
def get_parser(self, prog_name):
106+
parser = super(SetNetworkAgent, self).get_parser(prog_name)
107+
parser.add_argument(
108+
'network_agent',
109+
metavar="<network-agent>",
110+
help=(_("Network agent to modify (ID only)"))
111+
)
112+
parser.add_argument(
113+
'--description',
114+
metavar='<description>',
115+
help=_("Set network agent description")
116+
)
117+
admin_group = parser.add_mutually_exclusive_group()
118+
admin_group.add_argument(
119+
'--enable',
120+
action='store_true',
121+
help=_("Enable network agent")
122+
)
123+
admin_group.add_argument(
124+
'--disable',
125+
action='store_true',
126+
help=_("Disable network agent")
127+
)
128+
return parser
129+
130+
def take_action(self, parsed_args):
131+
client = self.app.client_manager.network
132+
obj = client.get_agent(parsed_args.network_agent, ignore_missing=False)
133+
attrs = {}
134+
if parsed_args.description is not None:
135+
attrs['description'] = str(parsed_args.description)
136+
if parsed_args.enable:
137+
attrs['admin_state_up'] = True
138+
if parsed_args.disable:
139+
attrs['admin_state_up'] = False
140+
client.update_agent(obj, **attrs)
141+
142+
102143
class ShowNetworkAgent(command.ShowOne):
103144
"""Display network agent details"""
104145

openstackclient/tests/network/v2/test_network_agent.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,81 @@ def test_network_agents_list(self):
160160
self.assertEqual(self.data, list(data))
161161

162162

163+
class TestSetNetworkAgent(TestNetworkAgent):
164+
165+
_network_agent = (
166+
network_fakes.FakeNetworkAgent.create_one_network_agent())
167+
168+
def setUp(self):
169+
super(TestSetNetworkAgent, self).setUp()
170+
self.network.update_agent = mock.Mock(return_value=None)
171+
self.network.get_agent = mock.Mock(return_value=self._network_agent)
172+
173+
# Get the command object to test
174+
self.cmd = network_agent.SetNetworkAgent(self.app, self.namespace)
175+
176+
def test_set_nothing(self):
177+
arglist = [
178+
self._network_agent.id,
179+
]
180+
verifylist = [
181+
('network_agent', self._network_agent.id),
182+
]
183+
184+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
185+
result = self.cmd.take_action(parsed_args)
186+
187+
attrs = {}
188+
self.network.update_agent.assert_called_once_with(
189+
self._network_agent, **attrs)
190+
self.assertIsNone(result)
191+
192+
def test_set_all(self):
193+
arglist = [
194+
'--description', 'new_description',
195+
'--enable',
196+
self._network_agent.id,
197+
]
198+
verifylist = [
199+
('description', 'new_description'),
200+
('enable', True),
201+
('disable', False),
202+
('network_agent', self._network_agent.id),
203+
]
204+
205+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
206+
result = self.cmd.take_action(parsed_args)
207+
208+
attrs = {
209+
'description': 'new_description',
210+
'admin_state_up': True,
211+
}
212+
self.network.update_agent.assert_called_once_with(
213+
self._network_agent, **attrs)
214+
self.assertIsNone(result)
215+
216+
def test_set_with_disable(self):
217+
arglist = [
218+
'--disable',
219+
self._network_agent.id,
220+
]
221+
verifylist = [
222+
('enable', False),
223+
('disable', True),
224+
('network_agent', self._network_agent.id),
225+
]
226+
227+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
228+
result = self.cmd.take_action(parsed_args)
229+
230+
attrs = {
231+
'admin_state_up': False,
232+
}
233+
self.network.update_agent.assert_called_once_with(
234+
self._network_agent, **attrs)
235+
self.assertIsNone(result)
236+
237+
163238
class TestShowNetworkAgent(TestNetworkAgent):
164239

165240
_network_agent = (
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
22
features:
3-
- Add ``network agent delete``, ``network agent list`` and
4-
``network agent show`` commands.
3+
- Add ``network agent delete``, ``network agent list``, ``network agent show``
4+
and ``network agent set`` commands.
55
[Blueprint `implement-network-agents <https://blueprints.launchpad.net/python-openstackclient/+spec/implement-network-agents>`_]

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@ openstack.network.v2 =
357357

358358
network_agent_delete = openstackclient.network.v2.network_agent:DeleteNetworkAgent
359359
network_agent_list = openstackclient.network.v2.network_agent:ListNetworkAgent
360+
network_agent_set = openstackclient.network.v2.network_agent:SetNetworkAgent
360361
network_agent_show = openstackclient.network.v2.network_agent:ShowNetworkAgent
361362

362363
network_create = openstackclient.network.v2.network:CreateNetwork

0 commit comments

Comments
 (0)