diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2020-01-07 12:24:16 +1300 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2020-01-07 16:39:59 +1300 |
commit | c4b1e91cc7582ce0d51fdd40741e79ef4fbac8a2 (patch) | |
tree | b0c5fc4dc723dccab82b71748b2fc44a6c8d015e | |
parent | 68e3ae83c17aaa97309ba412dc5ef3885d6c2cc5 (diff) | |
download | python-troveclient-c4b1e91cc7582ce0d51fdd40741e79ef4fbac8a2.tar.gz |
Support to delete datastore version
usage: openstack datastore version delete <datastore_version_id>
Change-Id: I4b781e68b81a3888d15d002fcf488a1f765c9f6a
-rw-r--r-- | releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml | 8 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | troveclient/osc/v1/datastores.py | 24 | ||||
-rw-r--r-- | troveclient/tests/osc/v1/test_datastores.py | 18 | ||||
-rw-r--r-- | troveclient/v1/client.py | 15 |
5 files changed, 53 insertions, 13 deletions
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 0000000..649fc97 --- /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 <datastore_version_id> @@ -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 85983f0..1f2795e 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='<datastore_version>', + 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 c9e5806..205bd5b 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 9db46ba..685a5cd 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: |