Add eject-replica-source to OSC

This change adds database support to the python-openstackclient
project for the eject-replica-source command.

The trove command eject-replica-source is now:
    openstack database instance eject replica source

Change-Id: I674e78e310b2953b28d0829cbe6fda62c00b6ea8
Partially-Implements: blueprint trove-support-in-python-openstackclient
This commit is contained in:
wangyao 2018-07-13 16:59:01 +08:00
parent 77f9647644
commit a199d90aa1
4 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,6 @@
---
features:
- |
The command ``trove eject-replica-source`` is now available to use in
the python-openstackclient CLI as ``
openstack database instance eject replica source``

View File

@ -61,6 +61,7 @@ openstack.database.v1 =
database_flavor_show = troveclient.osc.v1.database_flavors:ShowDatabaseFlavor
database_instance_create = troveclient.osc.v1.database_instances:CreateDatabaseInstance
database_instance_delete = troveclient.osc.v1.database_instances:DeleteDatabaseInstance
database_instance_eject_replica_source = troveclient.osc.v1.database_instances:EjectDatabaseInstanceReplicaSource
database_instance_force_delete = troveclient.osc.v1.database_instances:ForceDeleteDatabaseInstance
database_instance_list = troveclient.osc.v1.database_instances:ListDatabaseInstances
database_instance_reset_status = troveclient.osc.v1.database_instances:ResetDatabaseInstanceStatus

View File

@ -556,6 +556,28 @@ class RestartDatabaseInstance(command.Command):
db_instances.restart(instance)
class EjectDatabaseInstanceReplicaSource(command.Command):
_description = _("Ejects a replica source from its set.")
def get_parser(self, prog_name):
parser = super(EjectDatabaseInstanceReplicaSource, self).get_parser(
prog_name)
parser.add_argument(
'instance',
metavar='<instance>',
type=str,
help=_('ID or name of the instance.'),
)
return parser
def take_action(self, parsed_args):
db_instances = self.app.client_manager.database.instances
instance = osc_utils.find_resource(db_instances,
parsed_args.instance)
db_instances.eject_replica_source(instance)
class UpdateDatabaseInstance(command.Command):
_description = _("Updates an instance: Edits name, "

View File

@ -301,6 +301,24 @@ class TestDatabaseInstanceRestart(TestInstances):
self.assertIsNone(result)
class TestDatabaseInstanceEjectReplicaSource(TestInstances):
def setUp(self):
super(TestDatabaseInstanceEjectReplicaSource, self).setUp()
self.cmd = database_instances.EjectDatabaseInstanceReplicaSource(
self.app, None)
@mock.patch.object(utils, 'find_resource')
def test_eject_replica_source(self, mock_find):
args = ['instance']
mock_find.return_value = args[0]
parsed_args = self.check_parser(self.cmd, args, [])
result = self.cmd.take_action(parsed_args)
self.instance_client.eject_replica_source.assert_called_with(
'instance')
self.assertIsNone(result)
class TestDatabaseInstanceUpdate(TestInstances):
def setUp(self):