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