summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--releasenotes/notes/ussuri-05-osc-delete-datastore-version-6e03d20430e611ea.yaml8
-rw-r--r--setup.cfg1
-rw-r--r--troveclient/osc/v1/datastores.py24
-rw-r--r--troveclient/tests/osc/v1/test_datastores.py18
-rw-r--r--troveclient/v1/client.py15
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>
diff --git a/setup.cfg b/setup.cfg
index d58918b..66b5ef1 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 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: