Add support make a router HA

Currently router set CLI does not provide the
support make a router highly available. The following
patch enables the same.
Checking for setting a router as HA is left on the
neutron server itself.
Partially-Implements: blueprint network-commands-options
Change-Id: I0d0548cf037a14e5ccb2f732918ee9d1f63f43b4
Closes-Bug:#1631492
This commit is contained in:
Reedip 2016-10-08 13:39:36 +05:30
parent a58bacc619
commit bae09c3c3f
4 changed files with 39 additions and 5 deletions

View File

@ -198,6 +198,7 @@ Set router properties
[--distributed | --centralized]
[--description <description>]
[--route destination=<subnet>,gateway=<ip-address> | --no-route]
[--ha | --no-ha]
<router>
.. option:: --name <name>
@ -235,6 +236,14 @@ Set router properties
Clear routes associated with the router
.. option:: --ha
Set the router as highly available (disabled router only)
.. option:: --no-ha
Clear high availablability attribute of the router (disabled router only)
.. _router_set-router:
.. describe:: <router>

View File

@ -433,11 +433,19 @@ class SetRouter(command.Command):
action='store_true',
help=argparse.SUPPRESS,
)
# TODO(tangchen): Support setting 'ha' property in 'router set'
# command. It appears that changing the ha state is supported by
# neutron under certain conditions.
routes_ha = parser.add_mutually_exclusive_group()
routes_ha.add_argument(
'--ha',
action='store_true',
help=_("Set the router as highly available "
"(disabled router only)")
)
routes_ha.add_argument(
'--no-ha',
action='store_true',
help=_("Clear high availablability attribute of the router "
"(disabled router only)")
)
# TODO(tangchen): Support setting 'external_gateway_info' property in
# 'router set' command.
@ -451,6 +459,10 @@ class SetRouter(command.Command):
attrs = _get_attrs(self.app.client_manager, parsed_args)
# Get the route attributes.
if parsed_args.ha:
attrs['ha'] = True
elif parsed_args.no_ha:
attrs['ha'] = False
if parsed_args.no_route:
attrs['routes'] = []
elif parsed_args.clear_routes:

View File

@ -529,6 +529,7 @@ class TestSetRouter(TestRouter):
'--enable',
'--distributed',
'--name', 'noob',
'--no-ha',
'--description', 'router',
]
verifylist = [
@ -537,6 +538,7 @@ class TestSetRouter(TestRouter):
('distributed', True),
('name', 'noob'),
('description', 'router'),
('no_ha', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -546,6 +548,7 @@ class TestSetRouter(TestRouter):
'admin_state_up': True,
'distributed': True,
'name': 'noob',
'ha': False,
'description': 'router',
}
self.network.update_router.assert_called_once_with(
@ -557,11 +560,13 @@ class TestSetRouter(TestRouter):
self._router.name,
'--disable',
'--centralized',
'--ha',
]
verifylist = [
('router', self._router.name),
('disable', True),
('centralized', True),
('ha', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -570,6 +575,7 @@ class TestSetRouter(TestRouter):
attrs = {
'admin_state_up': False,
'distributed': False,
'ha': True,
}
self.network.update_router.assert_called_once_with(
self._router, **attrs)

View File

@ -0,0 +1,7 @@
---
features:
- |
Add support to update high-availability property of
a router by adding ``--ha`` and ``--no-ha`` option
to ``router set`` CLI.
[Bug `1631492 <https://bugs.launchpad.net/bugs/1631492>`_]