Merge "Allow override of distributed router flag"

This commit is contained in:
Jenkins 2017-04-17 15:18:20 +00:00 committed by Gerrit Code Review
commit 62d71aa243
4 changed files with 60 additions and 6 deletions

View File

@ -63,7 +63,7 @@ Create new router
openstack router create
[--project <project> [--project-domain <project-domain>]]
[--enable | --disable]
[--distributed]
[--distributed | --centralized]
[--ha | --no-ha]
[--description <description>]
[--availability-zone-hint <availability-zone>]
@ -90,6 +90,19 @@ Create new router
Create a distributed router
The default router type (distributed vs centralized) is determined by a
configuration setting in the OpenStack deployment. Since we are unable
to know that default wihtout attempting to actually create a router it
is suggested to use either :option:`--distributed` or :option:`--centralized`
in situations where multiple cloud deployments may be used.
.. option:: --centralized
Create a centralized router
See the note in :option:`--distributed` regarding the default used when
creating a new router.
.. option:: --ha
Create a highly available router

View File

@ -78,8 +78,7 @@ def _get_attrs(client_manager, parsed_args):
attrs['admin_state_up'] = True
if parsed_args.disable:
attrs['admin_state_up'] = False
# centralized is available only for SetRouter and not for CreateRouter
if 'centralized' in parsed_args and parsed_args.centralized:
if parsed_args.centralized:
attrs['distributed'] = False
if parsed_args.distributed:
attrs['distributed'] = True
@ -176,13 +175,17 @@ class CreateRouter(command.ShowOne):
action='store_true',
help=_("Disable router")
)
parser.add_argument(
distribute_group = parser.add_mutually_exclusive_group()
distribute_group.add_argument(
'--distributed',
dest='distributed',
action='store_true',
default=False,
help=_("Create a distributed router")
)
distribute_group.add_argument(
'--centralized',
action='store_true',
help=_("Create a centralized router")
)
ha_group = parser.add_mutually_exclusive_group()
ha_group.add_argument(
'--ha',

View File

@ -211,6 +211,35 @@ class TestCreateRouter(TestRouter):
def test_create_with_no_ha_option(self):
self._test_create_with_ha_options('--no-ha', False)
def _test_create_with_distributed_options(self, option, distributed):
arglist = [
option,
self.new_router.name,
]
verifylist = [
('name', self.new_router.name),
('enable', True),
('distributed', distributed),
('centralized', not distributed),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = (self.cmd.take_action(parsed_args))
self.network.create_router.assert_called_once_with(**{
'admin_state_up': True,
'name': self.new_router.name,
'distributed': distributed,
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_create_with_distributed_option(self):
self._test_create_with_distributed_options('--distributed', True)
def test_create_with_centralized_option(self):
self._test_create_with_distributed_options('--centralized', False)
def test_create_with_AZ_hints(self):
arglist = [
self.new_router.name,

View File

@ -0,0 +1,9 @@
---
fixes:
- |
Allow users to create centralized (distributed=False)
routers using the ``--centralized`` option in ``router create``.
Without this, routers are created based on the default
neutron configuration of the deployment, which, for example,
could be 'distributed'.
[Bug `1664255 <https://bugs.launchpad.net/bugs/1664255>`_]