summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-01-08 12:52:42 +0000
committerGerrit Code Review <review@openstack.org>2018-01-08 12:52:42 +0000
commit8faed19f1ca7172a03ac2d79bb12fae86c204eef (patch)
treef6c831769e58e367a427b06fcef2bac545509bfd
parent77ffc1f5c07a9f47d46b4ca30ead1ec539938f55 (diff)
parent03835a7023a27061217ce109f00b2929312b72b9 (diff)
downloadpython-troveclient-8faed19f1ca7172a03ac2d79bb12fae86c204eef.tar.gz
Merge "Add user-update-attributes to OSC"
-rw-r--r--releasenotes/notes/add-user-update-attributes-to-osc-5adfffe826a62f3b.yaml6
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/database_users.py61
-rw-r--r--troveclient/tests/osc/v1/test_database_users.py28
4 files changed, 96 insertions, 0 deletions
diff --git a/releasenotes/notes/add-user-update-attributes-to-osc-5adfffe826a62f3b.yaml b/releasenotes/notes/add-user-update-attributes-to-osc-5adfffe826a62f3b.yaml
new file mode 100644
index 0000000..69fb5dd
--- /dev/null
+++ b/releasenotes/notes/add-user-update-attributes-to-osc-5adfffe826a62f3b.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ The command ``trove user-update-attributes`` is now available to use in
+ the python-openstackclient CLI as
+ ``openstack database user update attributes``
diff --git a/setup.cfg b/setup.cfg
index d434393..6512cc2 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -66,6 +66,7 @@ openstack.database.v1 =
database_user_revoke_access = troveclient.osc.v1.database_users:RevokeDatabaseUserAccess
database_user_show = troveclient.osc.v1.database_users:ShowDatabaseUser
database_user_show_access = troveclient.osc.v1.database_users:ShowDatabaseUserAccess
+ database_user_update_attributes = troveclient.osc.v1.database_users:UpdateDatabaseUserAttributes
datastore_list = troveclient.osc.v1.datastores:ListDatastores
datastore_show = troveclient.osc.v1.datastores:ShowDatastore
datastore_version_list = troveclient.osc.v1.datastores:ListDatastoreVersions
diff --git a/troveclient/osc/v1/database_users.py b/troveclient/osc/v1/database_users.py
index e3df4e8..edfc275 100644
--- a/troveclient/osc/v1/database_users.py
+++ b/troveclient/osc/v1/database_users.py
@@ -280,3 +280,64 @@ class ShowDatabaseUserAccess(command.Lister):
hostname=parsed_args.host)
access = [utils.get_item_properties(n, self.columns) for n in names]
return self.columns, access
+
+
+class UpdateDatabaseUserAttributes(command.Command):
+
+ _description = _("Updates a user's attributes on an instance."
+ "At least one optional argument must be provided.")
+
+ def get_parser(self, prog_name):
+ parser = super(UpdateDatabaseUserAttributes,
+ self).get_parser(prog_name)
+ parser.add_argument(
+ 'instance',
+ metavar='<instance>',
+ help=_('ID or name of the instance.')
+ )
+ parser.add_argument(
+ 'name',
+ metavar='<name>',
+ help=_('Name of user.')
+ )
+ parser.add_argument(
+ '--host',
+ metavar='<host>',
+ default=None,
+ help=_('Optional host of user.')
+ )
+ parser.add_argument(
+ '--new_name',
+ metavar='<new_name>',
+ default=None,
+ help=_('Optional new name of user.')
+ )
+ parser.add_argument(
+ '--new_password',
+ metavar='<new_password>',
+ default=None,
+ help=_('Optional new password of user.')
+ )
+ parser.add_argument(
+ '--new_host',
+ metavar='<new_host>',
+ default=None,
+ help=_('Optional new host of user.')
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ manager = self.app.client_manager.database
+ users = manager.users
+ instance = utils.find_resource(manager.instances,
+ parsed_args.instance)
+ new_attrs = {}
+ if parsed_args.new_name:
+ new_attrs['name'] = parsed_args.new_name
+ if parsed_args.new_password:
+ new_attrs['password'] = parsed_args.new_password
+ if parsed_args.new_host:
+ new_attrs['host'] = parsed_args.new_host
+ users.update_attributes(instance, parsed_args.name,
+ newuserattr=new_attrs,
+ hostname=parsed_args.host)
diff --git a/troveclient/tests/osc/v1/test_database_users.py b/troveclient/tests/osc/v1/test_database_users.py
index 75fee14..a33c934 100644
--- a/troveclient/tests/osc/v1/test_database_users.py
+++ b/troveclient/tests/osc/v1/test_database_users.py
@@ -207,3 +207,31 @@ class TestDatabaseUserShowAccess(TestUsers):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
+
+
+class TestDatabaseUserUpdateAttributes(TestUsers):
+
+ def setUp(self):
+ super(TestDatabaseUserUpdateAttributes, self).setUp()
+ self.cmd = database_users.UpdateDatabaseUserAttributes(self.app, None)
+
+ @mock.patch.object(utils, 'find_resource')
+ def test_user__update_attributes(self, mock_find):
+ args = ['userinstance',
+ 'user1',
+ '--host', '1.1.1.1',
+ '--new_name', 'user2',
+ '--new_password', '111111',
+ '--new_host', '1.1.1.2']
+ verifylist = [
+ ('instance', 'userinstance'),
+ ('name', 'user1'),
+ ('host', '1.1.1.1'),
+ ('new_name', 'user2'),
+ ('new_password', '111111'),
+ ('new_host', '1.1.1.2'),
+ ]
+ mock_find.return_value = args[0]
+ parsed_args = self.check_parser(self.cmd, args, verifylist)
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)