From c4b1e91cc7582ce0d51fdd40741e79ef4fbac8a2 Mon Sep 17 00:00:00 2001 From: Lingxian Kong Date: Tue, 7 Jan 2020 12:24:16 +1300 Subject: [PATCH] Support to delete datastore version usage: openstack datastore version delete Change-Id: I4b781e68b81a3888d15d002fcf488a1f765c9f6a --- ...te-datastore-version-6e03d20430e611ea.yaml | 8 +++++++ setup.cfg | 1 + troveclient/osc/v1/datastores.py | 24 ++++++++++++++++++- troveclient/tests/osc/v1/test_datastores.py | 18 ++++++++++++++ troveclient/v1/client.py | 15 +++--------- 5 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml diff --git a/releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml b/releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml new file mode 100644 index 00000000..649fc978 --- /dev/null +++ b/releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + Support to delete datastore version by ID. + + .. code-block:: console + + openstack datastore version delete diff --git a/setup.cfg b/setup.cfg index d58918be..66b5ef19 100644 --- a/setup.cfg +++ b/setup.cfg @@ -99,6 +99,7 @@ openstack.database.v1 = datastore_show = troveclient.osc.v1.datastores:ShowDatastore datastore_version_list = troveclient.osc.v1.datastores:ListDatastoreVersions datastore_version_show = troveclient.osc.v1.datastores:ShowDatastoreVersion + datastore_version_delete = troveclient.osc.v1.datastores:DeleteDatastoreVersion [wheel] diff --git a/troveclient/osc/v1/datastores.py b/troveclient/osc/v1/datastores.py index 85983f0a..1f2795ee 100644 --- a/troveclient/osc/v1/datastores.py +++ b/troveclient/osc/v1/datastores.py @@ -123,5 +123,27 @@ class ShowDatastoreVersion(command.ShowOne): ' required to retrieve a' ' datastore version by name.')) if datastore_version._info.get('links'): - del(datastore_version._info['links']) + del (datastore_version._info['links']) return zip(*sorted(six.iteritems(datastore_version._info))) + + +class DeleteDatastoreVersion(command.Command): + _description = _("Deletes a datastore version.") + + def get_parser(self, prog_name): + parser = super(DeleteDatastoreVersion, self).get_parser(prog_name) + parser.add_argument( + 'datastore_version', + metavar='', + help=_('ID of the datastore version.'), + ) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.database.mgmt_ds_versions + try: + client.delete(parsed_args.datastore_version) + except Exception as e: + msg = (_("Failed to delete datastore version %(version)s: %(e)s") + % {'database': parsed_args.datastore_version, 'e': e}) + raise exceptions.CommandError(msg) diff --git a/troveclient/tests/osc/v1/test_datastores.py b/troveclient/tests/osc/v1/test_datastores.py index c9e58068..205bd5bc 100644 --- a/troveclient/tests/osc/v1/test_datastores.py +++ b/troveclient/tests/osc/v1/test_datastores.py @@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +from oslo_utils import uuidutils from troveclient import common from troveclient import exceptions @@ -24,6 +25,8 @@ class TestDatastores(fakes.TestDatabasev1): self.datastore_client = self.app.client_manager.database.datastores self.datastore_version_client =\ self.app.client_manager.database.datastore_versions + self.dsversion_mgmt_client =\ + self.app.client_manager.database.mgmt_ds_versions class TestDatastoreList(TestDatastores): @@ -123,3 +126,18 @@ class TestDatastoreVersionShow(TestDatastores): self.assertRaises(exceptions.NoUniqueMatch, self.cmd.take_action, parsed_args) + + +class TestDeleteDatastoreVersion(TestDatastores): + def setUp(self): + super(TestDeleteDatastoreVersion, self).setUp() + self.cmd = datastores.DeleteDatastoreVersion(self.app, None) + + def test_delete_datastore_version(self): + dsversion_id = uuidutils.generate_uuid() + args = [dsversion_id] + parsed_args = self.check_parser(self.cmd, args, []) + + self.cmd.take_action(parsed_args) + + self.dsversion_mgmt_client.delete.assert_called_once_with(dsversion_id) diff --git a/troveclient/v1/client.py b/troveclient/v1/client.py index 9db46ba6..685a5cdd 100644 --- a/troveclient/v1/client.py +++ b/troveclient/v1/client.py @@ -78,22 +78,13 @@ class Client(object): self.datastores = datastores.Datastores(self) self.datastore_versions = datastores.DatastoreVersions(self) self.configurations = configurations.Configurations(self) - config_parameters = configurations.ConfigurationParameters(self) - self.configuration_parameters = config_parameters + self.configuration_parameters = configurations.ConfigurationParameters( + self) self.metadata = metadata.Metadata(self) self.modules = modules.Modules(self) self.quota = quota.Quotas(self) self.mgmt_instances = management.Management(self) - - # self.hosts = Hosts(self) - # self.storage = StorageInfo(self) - # self.management = MgmtClusters(self) - # self.mgmt_flavor = MgmtFlavors(self) - # self.accounts = Accounts(self) - # self.diagnostics = DiagnosticsInterrogator(self) - # self.hwinfo = HwInfoInterrogator(self) - # self.mgmt_config_params = - # management.MgmtConfigurationParameters(self) + self.mgmt_ds_versions = management.MgmtDatastoreVersions(self) # Add in any extensions... if extensions: