summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-01-07 12:24:16 +1300
committerLingxian Kong <anlin.kong@gmail.com>2020-01-07 16:39:59 +1300
commitc4b1e91cc7582ce0d51fdd40741e79ef4fbac8a2 (patch)
treeb0c5fc4dc723dccab82b71748b2fc44a6c8d015e
parent68e3ae83c17aaa97309ba412dc5ef3885d6c2cc5 (diff)
downloadpython-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.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: