Allow long error messages for nodes
Change type of error message attribute for nodes from a 255 character long string, i.e., sa.String(255) to a text of variable lenght -- sa.Text. Change-Id: I5d1d83458d961302d4696ee5089197eacc420688 Closes-bug: #1578245
This commit is contained in:
parent
b36d190765
commit
78e45f1c03
|
@ -37,6 +37,7 @@ def upgrade():
|
|||
upgrade_transaction_names()
|
||||
upgrade_clusters_replaced_info_wrong_default()
|
||||
upgrade_tasks_snapshot()
|
||||
upgrade_node_error_msg_to_allow_long_error_msg()
|
||||
|
||||
|
||||
def downgrade():
|
||||
|
@ -44,6 +45,7 @@ def downgrade():
|
|||
downgrade_clusters_replaced_info_wrong_default()
|
||||
downgrade_transaction_names()
|
||||
downgrade_deployment_history()
|
||||
downgrade_node_error_msg_to_allow_long_error_msg()
|
||||
|
||||
|
||||
def upgrade_deployment_history():
|
||||
|
@ -143,6 +145,12 @@ def upgrade_transaction_names():
|
|||
)
|
||||
|
||||
|
||||
def upgrade_node_error_msg_to_allow_long_error_msg():
|
||||
op.alter_column(table_name='nodes',
|
||||
column_name='error_msg',
|
||||
type_=sa.Text)
|
||||
|
||||
|
||||
def downgrade_transaction_names():
|
||||
upgrade_enum(
|
||||
'tasks',
|
||||
|
@ -151,3 +159,13 @@ def downgrade_transaction_names():
|
|||
transaction_names_new,
|
||||
transaction_names_old
|
||||
)
|
||||
|
||||
|
||||
def downgrade_node_error_msg_to_allow_long_error_msg():
|
||||
connection = op.get_bind()
|
||||
connection.execute(sa.text('''
|
||||
UPDATE nodes SET error_msg = substring(error_msg for 255);
|
||||
'''))
|
||||
op.alter_column(table_name='nodes',
|
||||
column_name='error_msg',
|
||||
type_=sa.String(255))
|
||||
|
|
|
@ -90,7 +90,7 @@ class Node(Base):
|
|||
pending_deletion = Column(Boolean, default=False)
|
||||
changes = relationship("ClusterChanges", backref="node")
|
||||
error_type = Column(Enum(*consts.NODE_ERRORS, name='node_error_type'))
|
||||
error_msg = Column(String(255))
|
||||
error_msg = Column(Text)
|
||||
timestamp = Column(DateTime, nullable=False)
|
||||
online = Column(Boolean, default=True)
|
||||
labels = Column(
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import datetime
|
||||
|
||||
import alembic
|
||||
|
||||
from nailgun.db import db
|
||||
|
@ -117,3 +119,30 @@ class TestTransactionsNames(base.BaseAlembicMigrationTest):
|
|||
}
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class TestNodeErrorMessage(base.BaseAlembicMigrationTest):
|
||||
|
||||
def test_upgrade_node_error_msg_to_allow_long_error_msg(self):
|
||||
nodes = self.meta.tables['nodes']
|
||||
self.assertIsInstance(nodes.columns['error_msg'].type, sa.Text)
|
||||
|
||||
node_uuid = '26b508d0-0d76-4159-bce9-f67ec2765480'
|
||||
long_error_msg = ''.join('a' for i in range(500))
|
||||
|
||||
db.execute(
|
||||
nodes.insert(),
|
||||
[{
|
||||
'uuid': node_uuid,
|
||||
'cluster_id': None,
|
||||
'group_id': None,
|
||||
'status': 'discover',
|
||||
'meta': '{}',
|
||||
'mac': 'aa:aa:aa:aa:aa:aa',
|
||||
'error_msg': long_error_msg,
|
||||
'timestamp': datetime.datetime.utcnow(),
|
||||
}]
|
||||
)
|
||||
|
||||
node = db.query(nodes).filter_by(uuid=node_uuid).first()
|
||||
self.assertEqual(long_error_msg, node.error_msg)
|
||||
|
|
Loading…
Reference in New Issue