summaryrefslogtreecommitdiff
path: root/trove/extensions
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-04-17 15:14:54 +1200
committerLingxian Kong <anlin.kong@gmail.com>2020-04-23 10:18:03 +1200
commita4057b10af44e7f21243e539dd2daad2ad61657b (patch)
treee8bf82b9d92ea38a5a0a030102d28af655b5a556 /trove/extensions
parent8c3df10aa53ca78f764c2580dc99793af03f88b9 (diff)
downloadtrove-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.py6
-rw-r--r--trove/extensions/mgmt/configuration/views.py2
-rw-r--r--trove/extensions/mgmt/datastores/service.py18
-rw-r--r--trove/extensions/mgmt/instances/models.py1
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,