Add detach-replica to OSC
This change adds database support to the python-openstackclient
project for the detach-replica command.
The trove command detach-replica is now:
    openstack database instance detach replica
Change-Id: Ia6034eccbd3490696270d44d00966c3da94b3999
Partially-Implements: blueprint trove-support-in-python-openstackclient
			
			
This commit is contained in:
		| @@ -0,0 +1,6 @@ | |||||||
|  | --- | ||||||
|  | features: | ||||||
|  |   - | | ||||||
|  |     The command ``trove detach-replica`` is now available | ||||||
|  |     to use in the python-openstackclient CLI as ``openstack database | ||||||
|  |     instance detach replica`` | ||||||
| @@ -62,6 +62,7 @@ openstack.database.v1 = | |||||||
|     database_flavor_show = troveclient.osc.v1.database_flavors:ShowDatabaseFlavor |     database_flavor_show = troveclient.osc.v1.database_flavors:ShowDatabaseFlavor | ||||||
|     database_instance_create = troveclient.osc.v1.database_instances:CreateDatabaseInstance |     database_instance_create = troveclient.osc.v1.database_instances:CreateDatabaseInstance | ||||||
|     database_instance_delete = troveclient.osc.v1.database_instances:DeleteDatabaseInstance |     database_instance_delete = troveclient.osc.v1.database_instances:DeleteDatabaseInstance | ||||||
|  |     database_instance_detach_replica = troveclient.osc.v1.database_instances:DetachDatabaseInstanceReplica | ||||||
|     database_instance_eject_replica_source = troveclient.osc.v1.database_instances:EjectDatabaseInstanceReplicaSource |     database_instance_eject_replica_source = troveclient.osc.v1.database_instances:EjectDatabaseInstanceReplicaSource | ||||||
|     database_instance_force_delete = troveclient.osc.v1.database_instances:ForceDeleteDatabaseInstance |     database_instance_force_delete = troveclient.osc.v1.database_instances:ForceDeleteDatabaseInstance | ||||||
|     database_instance_list = troveclient.osc.v1.database_instances:ListDatabaseInstances |     database_instance_list = troveclient.osc.v1.database_instances:ListDatabaseInstances | ||||||
|   | |||||||
| @@ -632,3 +632,26 @@ class UpdateDatabaseInstance(command.Command): | |||||||
|                           parsed_args.name, |                           parsed_args.name, | ||||||
|                           parsed_args.detach_replica_source, |                           parsed_args.detach_replica_source, | ||||||
|                           parsed_args.remove_configuration) |                           parsed_args.remove_configuration) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class DetachDatabaseInstanceReplica(command.Command): | ||||||
|  |  | ||||||
|  |     _description = _("Detaches a replica instance " | ||||||
|  |                      "from its replication source.") | ||||||
|  |  | ||||||
|  |     def get_parser(self, prog_name): | ||||||
|  |         parser = super(DetachDatabaseInstanceReplica, 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.edit(instance, detach_replica_source=True) | ||||||
|   | |||||||
| @@ -339,3 +339,21 @@ class TestDatabaseInstanceUpdate(TestInstances): | |||||||
|                                                      'new_instance_name', |                                                      'new_instance_name', | ||||||
|                                                      True, True) |                                                      True, True) | ||||||
|         self.assertIsNone(result) |         self.assertIsNone(result) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestInstanceReplicaDetach(TestInstances): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(TestInstanceReplicaDetach, self).setUp() | ||||||
|  |         self.cmd = database_instances.DetachDatabaseInstanceReplica( | ||||||
|  |             self.app, None) | ||||||
|  |  | ||||||
|  |     @mock.patch.object(utils, 'find_resource') | ||||||
|  |     def test_instance_replica_detach(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.edit.assert_called_with( | ||||||
|  |             'instance', detach_replica_source=True) | ||||||
|  |         self.assertIsNone(result) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 wangyao
					wangyao