diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2020-01-04 17:42:13 +1300 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2020-01-04 18:07:35 +1300 |
commit | 68e3ae83c17aaa97309ba412dc5ef3885d6c2cc5 (patch) | |
tree | 1383ea73d5ead8fcb05b18c36bf539cdb9a591ad | |
parent | a0324f41094acac26d8deb3c959a1242b090caaa (diff) | |
download | python-troveclient-68e3ae83c17aaa97309ba412dc5ef3885d6c2cc5.tar.gz |
Support to reboot instance
openstack database instance reboot <instance>
Change-Id: Id5ac985399797356165eaac68dd05bc46ee0124d
-rw-r--r-- | releasenotes/notes/ussuri-04-osc-reboot-instance-760190e02eac11ea.yaml | 8 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | troveclient/osc/v1/database_instances.py | 31 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_database_instances.py | 16 |
4 files changed, 52 insertions, 4 deletions
diff --git a/releasenotes/notes/ussuri-04-osc-reboot-instance-760190e02eac11ea.yaml b/releasenotes/notes/ussuri-04-osc-reboot-instance-760190e02eac11ea.yaml new file mode 100644 index 0000000..f4a3677 --- /dev/null +++ b/releasenotes/notes/ussuri-04-osc-reboot-instance-760190e02eac11ea.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + Support to reboot instance. + + .. code-block:: console + + openstack database instance reboot <instance> @@ -75,6 +75,7 @@ openstack.database.v1 = database_instance_show = troveclient.osc.v1.database_instances:ShowDatabaseInstance database_instance_update = troveclient.osc.v1.database_instances:UpdateDatabaseInstance database_instance_upgrade = troveclient.osc.v1.database_instances:UpgradeDatabaseInstance + database_instance_reboot = troveclient.osc.v1.database_instances:RebootDatabaseInstance database_limit_list = troveclient.osc.v1.database_limits:ListDatabaseLimits database_log_list = troveclient.osc.v1.database_logs:ListDatabaseLogs database_log_set = troveclient.osc.v1.database_logs:SetDatabaseInstanceLog diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py index 2c824ec..f5289cc 100644 --- a/troveclient/osc/v1/database_instances.py +++ b/troveclient/osc/v1/database_instances.py @@ -428,10 +428,9 @@ class CreateDatabaseInstance(command.ShowOne): 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.") + _description = _("Set instance service status to ERROR and clear the " + "current task status. Mark any running backup operations " + "as FAILED.") def get_parser(self, prog_name): parser = super(ResetDatabaseInstanceStatus, self).get_parser(prog_name) @@ -709,3 +708,27 @@ class DetachDatabaseInstanceReplica(command.Command): instance = osc_utils.find_resource(db_instances, parsed_args.instance) db_instances.edit(instance, detach_replica_source=True) + + +class RebootDatabaseInstance(command.Command): + _description = _("Reboots an instance(the Nova server).") + + def get_parser(self, prog_name): + parser = super(RebootDatabaseInstance, 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): + instance_id = parsed_args.instance + + if not uuidutils.is_uuid_like(instance_id): + instance_mgr = self.app.client_manager.database.instances + instance_id = osc_utils.find_resource(instance_mgr, instance_id) + + mgmt_instance_mgr = self.app.client_manager.database.mgmt_instances + mgmt_instance_mgr.reboot(instance_id) diff --git a/troveclient/tests/osc/v1/test_database_instances.py b/troveclient/tests/osc/v1/test_database_instances.py index 04e6a61..d31423a 100644 --- a/troveclient/tests/osc/v1/test_database_instances.py +++ b/troveclient/tests/osc/v1/test_database_instances.py @@ -422,3 +422,19 @@ class TestInstanceReplicaDetach(TestInstances): self.instance_client.edit.assert_called_with( 'instance', detach_replica_source=True) self.assertIsNone(result) + + +class TestDatabaseInstanceReboot(TestInstances): + def setUp(self): + super(TestDatabaseInstanceReboot, self).setUp() + self.cmd = database_instances.RebootDatabaseInstance(self.app, None) + + @mock.patch.object(utils, 'find_resource') + def test_instance_restart(self, mock_find): + args = ['instance1'] + mock_find.return_value = args[0] + parsed_args = self.check_parser(self.cmd, args, []) + + self.cmd.take_action(parsed_args) + + self.mgmt_client.reboot.assert_called_with('instance1') |