Add root-disable to OSC

This change adds database support for the python-openstackclient
project for the root-disable command.

The trove command root-disable is now:
    openstack database root disable

Change-Id: I51d351174d6bf36948eb7e48de0aa6509c563738
Partially-Implements: blueprint trove-support-in-python-openstackclient
Signed-off-by: Zhao Chao <zhaochao1984@gmail.com>
This commit is contained in:
Zhao Chao 2018-01-12 11:32:58 +08:00
parent 3653b49661
commit 21c9085c71
5 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,5 @@
---
features:
- |
The command ``trove root-disable`` is now available to use in
the python-openstackclient CLI as ``openstack database root disable``.

View File

@ -59,6 +59,7 @@ openstack.database.v1 =
database_instance_reset_status = troveclient.osc.v1.database_instances:ResetDatabaseInstanceStatus
database_instance_show = troveclient.osc.v1.database_instances:ShowDatabaseInstance
database_limit_list = troveclient.osc.v1.database_limits:ListDatabaseLimits
database_root_disable = troveclient.osc.v1.database_root:DisableDatabaseRoot
database_root_enable = troveclient.osc.v1.database_root:EnableDatabaseRoot
database_root_show = troveclient.osc.v1.database_root:ShowDatabaseRoot
database_user_create = troveclient.osc.v1.database_users:CreateDatabaseUser

View File

@ -83,6 +83,31 @@ class EnableDatabaseRoot(command.ShowOne):
return zip(*sorted(six.iteritems(result)))
class DisableDatabaseRoot(command.Command):
_description = _("Disables root for an instance.")
def get_parser(self, prog_name):
parser = super(DisableDatabaseRoot, self).get_parser(prog_name)
parser.add_argument(
'instance',
metavar='<instance>',
help=_('ID or name of the instance.'),
)
return parser
def take_action(self, parsed_args):
database_client_manager = self.app.client_manager.database
db_instances = database_client_manager.instances
instance = osc_utils.find_resource(db_instances,
parsed_args.instance)
db_root = database_client_manager.root
db_root.disable_instance_root(instance)
class ShowDatabaseRoot(command.ShowOne):
_description = _("Gets status if root was ever enabled for "

View File

@ -152,3 +152,6 @@ class FakeRoot(object):
def post_cls_1234_root(self):
root = fakes.FakeHTTPClient().post_instances_1234_root()[2]['user']
return root['name'], root['password']
def delete_instance_1234_root(self):
return fakes.FakeHTTPClient().delete_instances_1234_root()[2]

View File

@ -78,6 +78,24 @@ class TestRootEnable(TestRoot):
root_password='secret')
class TestRootDisable(TestRoot):
def setUp(self):
super(TestRootDisable, self).setUp()
self.cmd = database_root.DisableDatabaseRoot(self.app, None)
self.data = self.fake_root.delete_instance_1234_root()
@mock.patch.object(utils, 'find_resource')
def test_disable_instance_1234_root(self, mock_find):
self.root_client.disable_instance_root.return_value = self.data
args = ['1234']
mock_find.return_value = args[0]
parsed_args = self.check_parser(self.cmd, args, [])
result = self.cmd.take_action(parsed_args)
self.root_client.disable_instance_root.assert_called_with('1234')
self.assertIsNone(result)
class TestRootShow(TestRoot):
def setUp(self):