Skip to content

Commit ef5a02f

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Add "network agent router set" command"
2 parents a8ca4a2 + a95aad0 commit ef5a02f

4 files changed

Lines changed: 106 additions & 0 deletions

File tree

openstackclient/network/v2/network_agent.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,45 @@ def take_action(self, parsed_args: argparse.Namespace) -> None:
389389
client.remove_router_from_agent(agent, router)
390390

391391

392+
class SetNetworkAgentRouter(command.Command):
393+
_description = _("Set properties of a router associated to an agent")
394+
395+
def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
396+
parser = super().get_parser(prog_name)
397+
parser.add_argument(
398+
'--ha-chassis-priority',
399+
metavar='<ha-chassis-priority>',
400+
type=int,
401+
required=True,
402+
help=_(
403+
"HA Chassis priority, ranging from [0, 32767]. "
404+
"Only used with --l3 and for ML2/OVN L3 agents"
405+
),
406+
)
407+
parser.add_argument(
408+
'agent_id',
409+
metavar='<agent-id>',
410+
help=_("L3 agent to modify (ID only)"),
411+
)
412+
parser.add_argument(
413+
'router',
414+
metavar='<router>',
415+
help=_("Router to update (name or ID)"),
416+
)
417+
418+
return parser
419+
420+
def take_action(self, parsed_args: argparse.Namespace) -> None:
421+
client = self.app.client_manager.network
422+
agent = client.get_agent(parsed_args.agent_id)
423+
router = client.find_router(parsed_args.router, ignore_missing=False)
424+
client.update_router_in_agent(
425+
agent,
426+
router,
427+
ha_chassis_priority=parsed_args.ha_chassis_priority,
428+
)
429+
430+
392431
class SetNetworkAgent(command.Command):
393432
_description = _("Set network agent properties")
394433

openstackclient/tests/unit/network/v2/test_network_agent.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,66 @@ def test_remove_router_required_options(self):
498498
self.assertIsNone(result)
499499

500500

501+
class TestSetNetworkAgentRouter(TestNetworkAgent):
502+
def setUp(self):
503+
super().setUp()
504+
self._router = network_fakes.create_one_router()
505+
self._agent = network_fakes.create_one_network_agent()
506+
self.network_client.get_agent.return_value = self._agent
507+
self.network_client.find_router.return_value = self._router
508+
self.cmd = network_agent.SetNetworkAgentRouter(self.app, None)
509+
510+
def test_set_no_options(self):
511+
arglist = []
512+
verifylist = []
513+
514+
self.assertRaises(
515+
tests_utils.ParserException,
516+
self.check_parser,
517+
self.cmd,
518+
arglist,
519+
verifylist,
520+
)
521+
522+
def test_set_router_missing_ha_chassis_priority(self):
523+
arglist = [
524+
self._agent.id,
525+
self._router.id,
526+
]
527+
verifylist = []
528+
529+
self.assertRaises(
530+
tests_utils.ParserException,
531+
self.check_parser,
532+
self.cmd,
533+
arglist,
534+
verifylist,
535+
)
536+
537+
def test_set_router_with_ha_chassis_priority(self):
538+
arglist = [
539+
'--ha-chassis-priority',
540+
'200',
541+
self._agent.id,
542+
self._router.id,
543+
]
544+
verifylist = [
545+
('agent_id', self._agent.id),
546+
('router', self._router.id),
547+
('ha_chassis_priority', 200),
548+
]
549+
550+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
551+
result = self.cmd.take_action(parsed_args)
552+
553+
self.network_client.update_router_in_agent.assert_called_with(
554+
self._agent,
555+
self._router,
556+
ha_chassis_priority=200,
557+
)
558+
self.assertIsNone(result)
559+
560+
501561
class TestSetNetworkAgent(TestNetworkAgent):
502562
_network_agent = network_fakes.create_one_network_agent()
503563

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@ network_agent_list = "openstackclient.network.v2.network_agent:ListNetworkAgent"
418418
network_agent_remove_network = "openstackclient.network.v2.network_agent:RemoveNetworkFromAgent"
419419
network_agent_remove_router = "openstackclient.network.v2.network_agent:RemoveRouterFromAgent"
420420
network_agent_set = "openstackclient.network.v2.network_agent:SetNetworkAgent"
421+
network_agent_router_set = "openstackclient.network.v2.network_agent:SetNetworkAgentRouter"
421422
network_agent_show = "openstackclient.network.v2.network_agent:ShowNetworkAgent"
422423
network_auto_allocated_topology_create = "openstackclient.network.v2.network_auto_allocated_topology:CreateAutoAllocatedTopology"
423424
network_auto_allocated_topology_delete = "openstackclient.network.v2.network_auto_allocated_topology:DeleteAutoAllocatedTopology"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add a new ``network agent router set`` command that allows updating
5+
properties of a router associated to an ML2/OVN L3 agent. Currently
6+
supports setting ``--ha-chassis-priority``.

0 commit comments

Comments
 (0)