diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2020-04-17 15:14:54 +1200 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2020-04-23 10:18:03 +1200 |
commit | a4057b10af44e7f21243e539dd2daad2ad61657b (patch) | |
tree | e8bf82b9d92ea38a5a0a030102d28af655b5a556 /trove/extensions | |
parent | 8c3df10aa53ca78f764c2580dc99793af03f88b9 (diff) | |
download | trove-a4057b10af44e7f21243e539dd2daad2ad61657b.tar.gz |
Added checks for deleting datastore version13.0.0.0rc113.0.0
* Hard delete the datastore_configuration_parameters table record.
* Make 'datastore_version_id' nullable for 'instances' table.
* Check if the datastore version is still being used before removal.
Story: 2007563
Task: 39451
Change-Id: I84e4a31f14f9327cc01ff2d699167d91112e1565
Diffstat (limited to 'trove/extensions')
-rw-r--r-- | trove/extensions/mgmt/configuration/service.py | 6 | ||||
-rw-r--r-- | trove/extensions/mgmt/configuration/views.py | 2 | ||||
-rw-r--r-- | trove/extensions/mgmt/datastores/service.py | 18 | ||||
-rw-r--r-- | trove/extensions/mgmt/instances/models.py | 1 |
4 files changed, 21 insertions, 6 deletions
diff --git a/trove/extensions/mgmt/configuration/service.py b/trove/extensions/mgmt/configuration/service.py index 85de2c8b..bcf6b75e 100644 --- a/trove/extensions/mgmt/configuration/service.py +++ b/trove/extensions/mgmt/configuration/service.py @@ -38,8 +38,7 @@ class ConfigurationsParameterController(wsgi.Controller): """List all configuration parameters.""" ds_version = ds_models.DatastoreVersion.load_by_uuid(version_id) config_params = config_models.DatastoreConfigurationParameters - rules = config_params.load_parameters( - ds_version.id, show_deleted=True) + rules = config_params.load_parameters(ds_version.id) return wsgi.Result(views.MgmtConfigurationParametersView(rules).data(), 200) @@ -48,8 +47,7 @@ class ConfigurationsParameterController(wsgi.Controller): """Show a configuration parameter.""" ds_models.DatastoreVersion.load_by_uuid(version_id) config_params = config_models.DatastoreConfigurationParameters - rule = config_params.load_parameter_by_name( - version_id, id, show_deleted=True) + rule = config_params.load_parameter_by_name(version_id, id) return wsgi.Result(views.MgmtConfigurationParameterView(rule).data(), 200) diff --git a/trove/extensions/mgmt/configuration/views.py b/trove/extensions/mgmt/configuration/views.py index c55616fb..2a664881 100644 --- a/trove/extensions/mgmt/configuration/views.py +++ b/trove/extensions/mgmt/configuration/views.py @@ -31,8 +31,6 @@ class MgmtConfigurationParameterView(object): "datastore_version_id": self.config.datastore_version_id, "restart_required": restart_required, "type": self.config.data_type, - "deleted": self.config.deleted, - "deleted_at": self.config.deleted_at, } if self.config.max_size: ret["max_size"] = int(self.config.max_size) diff --git a/trove/extensions/mgmt/datastores/service.py b/trove/extensions/mgmt/datastores/service.py index e0f70772..c8d350f1 100644 --- a/trove/extensions/mgmt/datastores/service.py +++ b/trove/extensions/mgmt/datastores/service.py @@ -16,14 +16,17 @@ from glanceclient import exc as glance_exceptions from oslo_log import log as logging +from trove.backup import models as backup_model from trove.common import apischema from trove.common.auth import admin_context from trove.common import clients from trove.common import exception from trove.common import utils from trove.common import wsgi +from trove.configuration import models as config_model from trove.datastore import models from trove.extensions.mgmt.datastores import views +from trove.instance import models as instance_model LOG = logging.getLogger(__name__) @@ -140,6 +143,21 @@ class DatastoreVersionController(wsgi.Controller): @admin_context def delete(self, req, tenant_id, id): """Remove an existing datastore version.""" + instances = instance_model.DBInstance.find_all( + datastore_version_id=id, deleted=0).all() + if len(instances) > 0: + raise exception.DatastoreVersionsInUse(resource='instance') + + backups = backup_model.DBBackup.find_all( + datastore_version_id=id, deleted=0).all() + if len(backups) > 0: + raise exception.DatastoreVersionsInUse(resource='backup') + + configs = config_model.DBConfiguration.find_all( + datastore_version_id=id, deleted=0).all() + if len(configs) > 0: + raise exception.DatastoreVersionsInUse(resource='configuration') + datastore_version = models.DatastoreVersion.load_by_uuid(id) datastore = models.Datastore.load(datastore_version.datastore_id) diff --git a/trove/extensions/mgmt/instances/models.py b/trove/extensions/mgmt/instances/models.py index 35102c44..7bb8cceb 100644 --- a/trove/extensions/mgmt/instances/models.py +++ b/trove/extensions/mgmt/instances/models.py @@ -42,6 +42,7 @@ def load_mgmt_instances(context, deleted=None, client=None, args['deleted'] = deleted if not include_clustered: args['cluster_id'] = None + db_infos = instance_models.DBInstance.find_all(**args) instances = MgmtInstances.load_status_from_existing(context, db_infos, |