Merge "Add reset-status to OSC"

This commit is contained in:
Zuul 2018-01-03 16:48:31 +00:00 committed by Gerrit Code Review
commit 0ef4c4fc06
6 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,10 @@
---
features:
- |
The command ``trove reset-status`` is now available
to use in the python-openstackclient CLI as ``openstack database
instance reset status``
The command ``trove cluster-reset-status`` is now available
to use in the python-openstackclient CLI as ``openstack database
cluster reset status``

View File

@ -38,6 +38,7 @@ openstack.database.v1 =
database_cluster_create = troveclient.osc.v1.database_clusters:CreateDatabaseCluster
database_cluster_delete = troveclient.osc.v1.database_clusters:DeleteDatabaseCluster
database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters
database_cluster_reset_status = troveclient.osc.v1.database_clusters:ResetDatabaseClusterStatus
database_cluster_show = troveclient.osc.v1.database_clusters:ShowDatabaseCluster
database_configuration_create = troveclient.osc.v1.database_configurations:CreateDatabaseConfiguration
database_configuration_delete = troveclient.osc.v1.database_configurations:DeleteDatabaseConfiguration
@ -53,6 +54,7 @@ openstack.database.v1 =
database_instance_create = troveclient.osc.v1.database_instances:CreateDatabaseInstance
database_instance_delete = troveclient.osc.v1.database_instances:DeleteDatabaseInstance
database_instance_list = troveclient.osc.v1.database_instances:ListDatabaseInstances
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_user_create = troveclient.osc.v1.database_users:CreateDatabaseUser

View File

@ -185,3 +185,23 @@ class CreateDatabaseCluster(command.ShowOne):
locality=parsed_args.locality)
cluster = set_attributes_for_print_detail(cluster)
return zip(*sorted(six.iteritems(cluster)))
class ResetDatabaseClusterStatus(command.Command):
_description = _("Set the cluster task to NONE.")
def get_parser(self, prog_name):
parser = super(ResetDatabaseClusterStatus, self).get_parser(prog_name)
parser.add_argument(
'cluster',
metavar='<cluster>',
help=_('ID or name of the cluster.'),
)
return parser
def take_action(self, parsed_args):
database_clusters = self.app.client_manager.database.clusters
cluster = utils.find_resource(database_clusters,
parsed_args.cluster)
database_clusters.reset_status(cluster)

View File

@ -364,3 +364,26 @@ class CreateDatabaseInstance(command.ShowOne):
region_name=parsed_args.region)
instance = set_attributes_for_print_detail(instance)
return zip(*sorted(six.iteritems(instance)))
class ResetDatabaseInstanceStatus(command.Command):
_description = _("Set the task status of an instance to NONE if the "
"instance is in BUILD or ERROR state. Resetting task "
"status of an instance in BUILD state will allow "
"the instance to be deleted.")
def get_parser(self, prog_name):
parser = super(ResetDatabaseInstanceStatus, 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):
db_instances = self.app.client_manager.database.instances
instance = osc_utils.find_resource(db_instances,
parsed_args.instance)
db_instances.reset_status(instance)

View File

@ -150,3 +150,19 @@ class TestDatabaseClusterCreate(TestClusters):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
class TestDatabaseClusterResetStatus(TestClusters):
def setUp(self):
super(TestDatabaseClusterResetStatus, self).setUp()
self.cmd = database_clusters.ResetDatabaseClusterStatus(self.app, None)
@mock.patch.object(utils, 'find_resource')
def test_cluster_reset_status(self, mock_find):
args = ['cluster1']
mock_find.return_value = args[0]
parsed_args = self.check_parser(self.cmd, args, [])
result = self.cmd.take_action(parsed_args)
self.cluster_client.reset_status.assert_called_with('cluster1')
self.assertIsNone(result)

View File

@ -166,3 +166,20 @@ class TestDatabaseInstanceCreate(TestInstances):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
self.assertEqual(self.values, data)
class TestDatabaseInstanceResetStatus(TestInstances):
def setUp(self):
super(TestDatabaseInstanceResetStatus, self).setUp()
self.cmd = database_instances.ResetDatabaseInstanceStatus(self.app,
None)
@mock.patch.object(utils, 'find_resource')
def test_instance_reset_status(self, mock_find):
args = ['instance1']
mock_find.return_value = args[0]
parsed_args = self.check_parser(self.cmd, args, [])
result = self.cmd.take_action(parsed_args)
self.instance_client.reset_status.assert_called_with('instance1')
self.assertIsNone(result)