summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Chao <zhaochao1984@gmail.com>2018-01-12 11:32:58 +0800
committerZhao Chao <zhaochao1984@gmail.com>2018-01-15 19:17:53 +0800
commit21c9085c712f34c7cdc80fc0f5f80518a07e64b6 (patch)
tree48f9590434585b5faaa5b93d89b26d1b3dbc8cd1
parent3653b49661a611c1195f40b4acc0ca7514c61815 (diff)
downloadpython-troveclient-21c9085c712f34c7cdc80fc0f5f80518a07e64b6.tar.gz
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>
-rw-r--r--releasenotes/notes/add-root-disable-to-osc-52d81d96ec7e4e54.yaml5
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/database_root.py25
-rw-r--r--troveclient/tests/osc/v1/fakes.py3
-rw-r--r--troveclient/tests/osc/v1/test_database_root.py18
5 files changed, 52 insertions, 0 deletions
diff --git a/releasenotes/notes/add-root-disable-to-osc-52d81d96ec7e4e54.yaml b/releasenotes/notes/add-root-disable-to-osc-52d81d96ec7e4e54.yaml
new file mode 100644
index 0000000..59a7fa3
--- /dev/null
+++ b/releasenotes/notes/add-root-disable-to-osc-52d81d96ec7e4e54.yaml
@@ -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``.
diff --git a/setup.cfg b/setup.cfg
index 398e559..bc0c80f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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
diff --git a/troveclient/osc/v1/database_root.py b/troveclient/osc/v1/database_root.py
index dcac9ec..cd6c533 100644
--- a/troveclient/osc/v1/database_root.py
+++ b/troveclient/osc/v1/database_root.py
@@ -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 "
diff --git a/troveclient/tests/osc/v1/fakes.py b/troveclient/tests/osc/v1/fakes.py
index 1e7f04b..e6f97f0 100644
--- a/troveclient/tests/osc/v1/fakes.py
+++ b/troveclient/tests/osc/v1/fakes.py
@@ -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]
diff --git a/troveclient/tests/osc/v1/test_database_root.py b/troveclient/tests/osc/v1/test_database_root.py
index c7c2dbe..a0e5663 100644
--- a/troveclient/tests/osc/v1/test_database_root.py
+++ b/troveclient/tests/osc/v1/test_database_root.py
@@ -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):