diff --git a/neutronclient/neutron/v2_0/router.py b/neutronclient/neutron/v2_0/router.py index 3ed1d0f..414759d 100644 --- a/neutronclient/neutron/v2_0/router.py +++ b/neutronclient/neutron/v2_0/router.py @@ -92,6 +92,31 @@ class UpdateRouter(neutronV20.UpdateCommand): resource = 'router' + def add_known_arguments(self, parser): + parser.add_argument( + '--name', + help=_('Name of this router.')) + utils.add_boolean_argument( + parser, '--admin-state-up', dest='admin_state', + help=_('Specify the administrative state of the router' + ' (True meaning "Up")')) + utils.add_boolean_argument( + parser, '--admin_state_up', dest='admin_state', + help=argparse.SUPPRESS) + utils.add_boolean_argument( + parser, '--distributed', dest='distributed', + help=_('True means this router should operate in' + ' distributed mode.')) + + def args2body(self, parsed_args): + body = {self.resource: {}} + if hasattr(parsed_args, 'admin_state'): + body[self.resource].update( + {'admin_state_up': parsed_args.admin_state}) + neutronV20.update_dict(parsed_args, body[self.resource], + ['name', 'distributed']) + return body + class RouterInterfaceCommand(neutronV20.NeutronCommand): """Based class to Add/Remove router interface.""" diff --git a/neutronclient/tests/unit/test_cli20_router.py b/neutronclient/tests/unit/test_cli20_router.py index 5da3173..d83cb69 100644 --- a/neutronclient/tests/unit/test_cli20_router.py +++ b/neutronclient/tests/unit/test_cli20_router.py @@ -154,6 +154,48 @@ class CLITestV20RouterJSON(test_cli20.CLITestV20Base): {'name': 'myname'} ) + def test_update_router_admin_state(self): + """Update router: myid --admin-state-up .""" + resource = 'router' + cmd = router.UpdateRouter(test_cli20.MyApp(sys.stdout), None) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--admin-state-up', 'True'], + {'admin_state_up': 'True'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--admin-state-up', 'true'], + {'admin_state_up': 'true'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--admin-state-up', 'False'], + {'admin_state_up': 'False'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--admin-state-up', 'false'], + {'admin_state_up': 'false'} + ) + + def test_update_router_distributed(self): + """Update router: myid --distributed .""" + resource = 'router' + cmd = router.UpdateRouter(test_cli20.MyApp(sys.stdout), None) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--distributed', 'True'], + {'distributed': 'True'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--distributed', 'true'], + {'distributed': 'true'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--distributed', 'False'], + {'distributed': 'False'} + ) + self._test_update_resource(resource, cmd, 'myid', + ['myid', '--distributed', 'false'], + {'distributed': 'false'} + ) + def test_delete_router(self): """Delete router: myid.""" resource = 'router'