Support to delete datastore version

usage: openstack datastore version delete <datastore_version_id>

Change-Id: I4b781e68b81a3888d15d002fcf488a1f765c9f6a
This commit is contained in:
Lingxian Kong
2020-01-07 12:24:16 +13:00
parent 68e3ae83c1
commit c4b1e91cc7
5 changed files with 53 additions and 13 deletions

View File

@@ -0,0 +1,8 @@
---
features:
- |
Support to delete datastore version by ID.
.. code-block:: console
openstack datastore version delete <datastore_version_id>

View File

@@ -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]

View File

@@ -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)

View File

@@ -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)

View File

@@ -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: