diff options
| -rw-r--r-- | doc/source/command-objects/router.rst | 9 | ||||
| -rw-r--r-- | openstackclient/network/v2/router.py | 22 | ||||
| -rw-r--r-- | openstackclient/tests/unit/network/v2/test_router.py | 6 | ||||
| -rw-r--r-- | releasenotes/notes/add-ha-to-router-update-6a38a73cc112b2fc.yaml | 7 |
4 files changed, 39 insertions, 5 deletions
diff --git a/doc/source/command-objects/router.rst b/doc/source/command-objects/router.rst index 15163980..0eaae655 100644 --- a/doc/source/command-objects/router.rst +++ b/doc/source/command-objects/router.rst @@ -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> diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py index 64bb8819..193bf6e9 100644 --- a/openstackclient/network/v2/router.py +++ b/openstackclient/network/v2/router.py @@ -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: diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py index d85561bc..bc448d13 100644 --- a/openstackclient/tests/unit/network/v2/test_router.py +++ b/openstackclient/tests/unit/network/v2/test_router.py @@ -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) diff --git a/releasenotes/notes/add-ha-to-router-update-6a38a73cc112b2fc.yaml b/releasenotes/notes/add-ha-to-router-update-6a38a73cc112b2fc.yaml new file mode 100644 index 00000000..905a1fdd --- /dev/null +++ b/releasenotes/notes/add-ha-to-router-update-6a38a73cc112b2fc.yaml @@ -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>`_] |
