From a7af0e4df95066c07f4743eee2ec9c43f301c5ae Mon Sep 17 00:00:00 2001 From: Lingxian Kong Date: Fri, 29 May 2020 23:31:11 +1200 Subject: [PATCH] Support to remove datastore config parameters CLI: trove-manage db_remove_datastore_config_parameters mysql 5.7.29 Change-Id: Ia8b5828dfabd595d0ac33a2fdf1d9959f2d1d9ba --- ...ria-trove-manager-remove-config-params.yaml | 5 +++++ trove/cmd/manage.py | 18 ++++++++++++++++++ trove/configuration/models.py | 11 ++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/victoria-trove-manager-remove-config-params.yaml diff --git a/releasenotes/notes/victoria-trove-manager-remove-config-params.yaml b/releasenotes/notes/victoria-trove-manager-remove-config-params.yaml new file mode 100644 index 0000000000..89ad673772 --- /dev/null +++ b/releasenotes/notes/victoria-trove-manager-remove-config-params.yaml @@ -0,0 +1,5 @@ +--- +features: + - Trove admin user is able to remove the default configuration parameters for + datastore version, e.g. + ``trove-manage db_remove_datastore_config_parameters mysql 5.7.29`` diff --git a/trove/cmd/manage.py b/trove/cmd/manage.py index 9154b59860..75e16fbafc 100644 --- a/trove/cmd/manage.py +++ b/trove/cmd/manage.py @@ -87,6 +87,13 @@ class Commands(object): config_models.load_datastore_configuration_parameters( datastore, datastore_version, config_file_location) + def db_remove_datastore_config_parameters(self, datastore, + datastore_version): + print("Removing config parameters for datastore (%s) version (%s)" + % (datastore, datastore_version)) + config_models.remove_datastore_configuration_parameters( + datastore, datastore_version) + def datastore_version_flavor_add(self, datastore_name, datastore_version_name, flavor_ids): """Adds flavors for a given datastore version id.""" @@ -230,6 +237,17 @@ def main(): help='Fully qualified file path to the configuration group ' 'parameter validation rules.') + parser = subparser.add_parser( + 'db_remove_datastore_config_parameters', + description='Remove configuration group parameter validation ' + 'rules for a datastore version from the database.') + parser.add_argument( + 'datastore', + help='Name of the datastore.') + parser.add_argument( + 'datastore_version', + help='Name of the datastore version.') + parser = subparser.add_parser( 'datastore_version_flavor_add', help='Adds flavor association to ' 'a given datastore and datastore version.') diff --git a/trove/configuration/models.py b/trove/configuration/models.py index bd303e8b80..294ef42c60 100644 --- a/trove/configuration/models.py +++ b/trove/configuration/models.py @@ -378,10 +378,19 @@ def load_datastore_configuration_parameters(datastore, ) +def remove_datastore_configuration_parameters(datastore, datastore_version): + get_db_api().configure_db(CONF) + (ds, ds_version) = dstore_models.get_datastore_version( + type=datastore, version=datastore_version, return_inactive=True) + db_params = DatastoreConfigurationParameters.load_parameters(ds_version.id) + for db_param in db_params: + db_param.delete() + + def persisted_models(): return { 'configurations': DBConfiguration, 'configuration_parameters': DBConfigurationParameter, 'datastore_configuration_parameters': - DBDatastoreConfigurationParameters, + DBDatastoreConfigurationParameters, }