Add root-show to OSC
This change adds database support for the python-openstackclient project for the root-show command. The trove command root-show is now: openstack database root show Change-Id: I621f41d0c920306fed5502f30e1de3806b911929 Partially-Implements: blueprint trove-support-in-python-openstackclient Signed-off-by: Zhao Chao <zhaochao1984@gmail.com>
This commit is contained in:
parent
578cc98081
commit
3653b49661
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
The command ``trove root-show`` is now available to use in
|
||||
the python-openstackclient CLI as ``openstack database root show``.
|
|
@ -60,6 +60,7 @@ openstack.database.v1 =
|
|||
database_instance_show = troveclient.osc.v1.database_instances:ShowDatabaseInstance
|
||||
database_limit_list = troveclient.osc.v1.database_limits:ListDatabaseLimits
|
||||
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
|
||||
database_user_delete = troveclient.osc.v1.database_users:DeleteDatabaseUser
|
||||
database_user_grant_access = troveclient.osc.v1.database_users:GrantDatabaseUserAccess
|
||||
|
|
|
@ -81,3 +81,34 @@ class EnableDatabaseRoot(command.ShowOne):
|
|||
result = {'name': root[0],
|
||||
'password': root[1]}
|
||||
return zip(*sorted(six.iteritems(result)))
|
||||
|
||||
|
||||
class ShowDatabaseRoot(command.ShowOne):
|
||||
|
||||
_description = _("Gets status if root was ever enabled for "
|
||||
"an instance or cluster.")
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ShowDatabaseRoot, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'instance_or_cluster',
|
||||
metavar='<instance_or_cluster>',
|
||||
help=_('ID or name of the instance or cluster.'),
|
||||
)
|
||||
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
database_client_manager = self.app.client_manager.database
|
||||
instance_or_cluster, resource_type = find_instance_or_cluster(
|
||||
database_client_manager,
|
||||
parsed_args.instance_or_cluster)
|
||||
|
||||
db_root = database_client_manager.root
|
||||
if resource_type == 'instance':
|
||||
root = db_root.is_instance_root_enabled(instance_or_cluster)
|
||||
else:
|
||||
root = db_root.is_cluster_root_enabled(instance_or_cluster)
|
||||
|
||||
result = {'is_root_enabled': root.rootEnabled}
|
||||
return zip(*sorted(six.iteritems(result)))
|
||||
|
|
|
@ -132,6 +132,19 @@ class FakeDatastores(object):
|
|||
|
||||
|
||||
class FakeRoot(object):
|
||||
fake_instance_1234_root = (fakes.FakeHTTPClient()
|
||||
.get_instances_1234_root()[2])
|
||||
fake_cls_1234_root = (fakes.FakeHTTPClient()
|
||||
.get_clusters_cls_1234_root()[2])
|
||||
|
||||
def get_instance_1234_root(self):
|
||||
return users.User(None, self.fake_instance_1234_root,
|
||||
loaded=True)
|
||||
|
||||
def get_cls_1234_root(self):
|
||||
return users.User(None, self.fake_cls_1234_root,
|
||||
loaded=True)
|
||||
|
||||
def post_instance_1234_root(self):
|
||||
root = fakes.FakeHTTPClient().post_instances_1234_root()[2]['user']
|
||||
return root['name'], root['password']
|
||||
|
|
|
@ -76,3 +76,37 @@ class TestRootEnable(TestRoot):
|
|||
self.cmd.take_action(parsed_args)
|
||||
self.root_client.create_cluster_root(None,
|
||||
root_password='secret')
|
||||
|
||||
|
||||
class TestRootShow(TestRoot):
|
||||
|
||||
def setUp(self):
|
||||
super(TestRootShow, self).setUp()
|
||||
self.cmd = database_root.ShowDatabaseRoot(self.app, None)
|
||||
self.data = {
|
||||
'instance': self.fake_root.get_instance_1234_root(),
|
||||
'cluster': self.fake_root.get_cls_1234_root()
|
||||
}
|
||||
self.columns = ('is_root_enabled',)
|
||||
|
||||
@mock.patch.object(utils, 'find_resource')
|
||||
def test_show_instance_1234_root(self, mock_find):
|
||||
self.root_client.is_instance_root_enabled.return_value = (
|
||||
self.data['instance'])
|
||||
args = ['1234']
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(('True',), data)
|
||||
|
||||
@mock.patch.object(utils, 'find_resource')
|
||||
def test_show_cluster_1234_root(self, mock_find):
|
||||
mock_find.side_effect = [exceptions.CommandError(),
|
||||
(None, 'cluster')]
|
||||
self.root_client.is_cluster_root_enabled.return_value = (
|
||||
self.data['cluster'])
|
||||
args = ['1234']
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(('True',), data)
|
||||
|
|
Loading…
Reference in New Issue