From 35e574085dd1d9339e1bee770e12665a6b7228d8 Mon Sep 17 00:00:00 2001 From: Rohit Jaiswal Date: Tue, 28 Apr 2015 14:52:38 -0700 Subject: [PATCH] TraitText value restricted to max length 255 Trait_text has a sqlalchemy model definition with value column as Text type, but the migrate scripts defined the column type as String(255) leading to Sqlalchemy exception when indexing trait with large text. This fixes the TraitText model value as String(255) to match the migrate script definition and crops the text input to 255 characters. Change-Id: I55eee4e9fcdee8d05f3598a9bc0368bc92a9b238 Closes-Bug: 1447647 --- ceilometer/event/storage/models.py | 5 +++-- ceilometer/storage/sqlalchemy/models.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ceilometer/event/storage/models.py b/ceilometer/event/storage/models.py index 1bddda0a..7b4b3b9b 100644 --- a/ceilometer/event/storage/models.py +++ b/ceilometer/event/storage/models.py @@ -121,6 +121,7 @@ class Trait(base.Model): return float(value) if trait_type is cls.DATETIME_TYPE: return timeutils.normalize_time(timeutils.parse_isotime(value)) + # Cropping the text value to match the TraitText value size if isinstance(value, six.binary_type): - return value.decode('utf-8') - return six.text_type(value) + return value.decode('utf-8')[:255] + return six.text_type(value)[:255] diff --git a/ceilometer/storage/sqlalchemy/models.py b/ceilometer/storage/sqlalchemy/models.py index f251f97b..11022b27 100644 --- a/ceilometer/storage/sqlalchemy/models.py +++ b/ceilometer/storage/sqlalchemy/models.py @@ -344,7 +344,7 @@ class TraitText(Base): ) event_id = Column(Integer, ForeignKey('event.id'), primary_key=True) key = Column(String(255), primary_key=True) - value = Column(Text) + value = Column(String(255)) class TraitInt(Base):