summaryrefslogtreecommitdiff
path: root/trove/db
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-11-18 23:27:41 +1300
committerLingxian Kong <anlin.kong@gmail.com>2020-11-19 09:28:56 +1300
commitd51b163e991f16acf2d542d99cbb2f2358feb9bc (patch)
tree49eb577a677a023c926c410aeba1cb07f9fe6dd6 /trove/db
parentbf1ee5e8f29f286d2dee853db19912ea01ea4c78 (diff)
downloadtrove-d51b163e991f16acf2d542d99cbb2f2358feb9bc.tar.gz
Support datastore version number for creating configuration
* Support "version_number" for creating configuration. * Fixed a bug for deleting datastore version, the config parameters should be deleted first. * Support "--version" for trove-manage datastore_config_parameters sub-commands. Change-Id: Ieb0def81f2347c06a05eb354ad36b4fa807f7621 Story: 2008358 Task: 41264
Diffstat (limited to 'trove/db')
-rw-r--r--trove/db/sqlalchemy/migrate_repo/versions/044_remove_datastore_configuration_parameters_deleted.py42
1 files changed, 36 insertions, 6 deletions
diff --git a/trove/db/sqlalchemy/migrate_repo/versions/044_remove_datastore_configuration_parameters_deleted.py b/trove/db/sqlalchemy/migrate_repo/versions/044_remove_datastore_configuration_parameters_deleted.py
index 7ce81d6a..7b34b000 100644
--- a/trove/db/sqlalchemy/migrate_repo/versions/044_remove_datastore_configuration_parameters_deleted.py
+++ b/trove/db/sqlalchemy/migrate_repo/versions/044_remove_datastore_configuration_parameters_deleted.py
@@ -11,19 +11,20 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+import sqlalchemy
+from sqlalchemy import schema
-from sqlalchemy.schema import MetaData
+from trove.db.sqlalchemy.migrate_repo import schema as trove_schema
-from trove.db.sqlalchemy.migrate_repo.schema import Table
-
-meta = MetaData()
+meta = schema.MetaData()
def upgrade(migrate_engine):
meta.bind = migrate_engine
- ds_config_param = Table('datastore_configuration_parameters', meta,
- autoload=True)
+ ds_config_param = trove_schema.Table('datastore_configuration_parameters',
+ meta,
+ autoload=True)
# Remove records with deleted=1
if 'deleted' in ds_config_param.c:
@@ -35,3 +36,32 @@ def upgrade(migrate_engine):
if migrate_engine.name != "sqlite":
ds_config_param.drop_column('deleted')
ds_config_param.drop_column('deleted_at')
+ else:
+ # It is not possible to remove a column from a table in SQLite.
+ # SQLite is just for testing, so we re-create the table.
+ ds_config_param.drop()
+ meta.clear()
+ trove_schema.Table('datastore_versions', meta, autoload=True)
+ new_table = trove_schema.Table(
+ 'datastore_configuration_parameters',
+ meta,
+ schema.Column('id', trove_schema.String(36),
+ primary_key=True, nullable=False),
+ schema.Column('name', trove_schema.String(128),
+ primary_key=True, nullable=False),
+ schema.Column('datastore_version_id', trove_schema.String(36),
+ sqlalchemy.ForeignKey("datastore_versions.id"),
+ primary_key=True, nullable=False),
+ schema.Column('restart_required', trove_schema.Boolean(),
+ nullable=False, default=False),
+ schema.Column('max_size', trove_schema.String(40)),
+ schema.Column('min_size', trove_schema.String(40)),
+ schema.Column('data_type', trove_schema.String(128),
+ nullable=False),
+ schema.UniqueConstraint(
+ 'datastore_version_id', 'name',
+ name=('UQ_datastore_configuration_parameters_datastore_'
+ 'version_id_name')
+ )
+ )
+ trove_schema.create_tables([new_table])