From 12636e2e1248ac3d6a2abf528d5e362499771c36 Mon Sep 17 00:00:00 2001 From: Alexander Tivelkov Date: Tue, 12 Apr 2016 16:48:53 +0300 Subject: [PATCH] Increased the size of TEXT columns to store large object models Object model is stored in database in the columns of type TEXT. In MySQL database this type of column is limited by default and cannot hold data structures which are large enough. This patch adds an extra migration which alters appropriate columns in database when the mysql is used. The column type is explicitly set to LONGTEXT. Change-Id: Ic04fb99469edc087cc12d4c78a983484ae49a6c1 Closes-bug: #1567863 --- .../013_increase_description_text_size.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 murano/db/migration/alembic_migrations/versions/013_increase_description_text_size.py diff --git a/murano/db/migration/alembic_migrations/versions/013_increase_description_text_size.py b/murano/db/migration/alembic_migrations/versions/013_increase_description_text_size.py new file mode 100644 index 00000000..5140d568 --- /dev/null +++ b/murano/db/migration/alembic_migrations/versions/013_increase_description_text_size.py @@ -0,0 +1,61 @@ +# Copyright 2016 OpenStack Foundation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Increase the size of the text columns storing object model + +Revision ID: 013 +Revises: 012 +Create Date: 2016-04-12 15:46:12.251155 + +""" + +# revision identifiers, used by Alembic. +revision = '013' +down_revision = '012' + +from alembic import op +import sqlalchemy as sa +import sqlalchemy.dialects.mysql as sa_mysql + +MYSQL_ENGINE = 'InnoDB' +MYSQL_CHARSET = 'utf8' + + +def upgrade(): + engine = op.get_bind() + if engine.dialect.dialect_description.startswith('mysql'): + with op.batch_alter_table('session') as batch_op: + batch_op.alter_column('description', + type_=sa_mysql.LONGTEXT()) + with op.batch_alter_table('environment') as batch_op: + batch_op.alter_column('description', + type_=sa_mysql.LONGTEXT()) + with op.batch_alter_table('environment-template') as batch_op: + batch_op.alter_column('description', + type_=sa_mysql.LONGTEXT()) + + +def downgrade(): + engine = op.get_bind() + if engine.dialect.dialect_description.startswith('mysql'): + with op.batch_alter_table('session') as batch_op: + batch_op.alter_column('description', + type_=sa.TEXT()) + with op.batch_alter_table('environment') as batch_op: + batch_op.alter_column('description', + type_=sa.TEXT()) + with op.batch_alter_table('environment-template') as batch_op: + batch_op.alter_column('description', + type_=sa.TEXT())