summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Sergeyev <vsergeyev@mirantis.com>2015-04-07 16:50:19 +0300
committerVictor Sergeyev <vsergeyev@mirantis.com>2015-04-07 16:50:19 +0300
commit4c879c9bc7ec307dd158af4dd4b0f41e0e2d0531 (patch)
tree94759ca75729ddf3964e937201503e189c7ee5b8
parent3550b473a715aec80d2e1c70784b362f27deb0ea (diff)
downloadkeystone-4c879c9bc7ec307dd158af4dd4b0f41e0e2d0531.tar.gz
Handle NULL value for service.extra in migration 066
Added a check for service.extra column before jsonutils.loads() call Change-Id: I5a652101d986672ba6094f0b3e107e2710154c68 Closes-Bug: #1441164
-rw-r--r--keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py6
-rw-r--r--keystone/tests/unit/test_sql_upgrade.py4
2 files changed, 9 insertions, 1 deletions
diff --git a/keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py b/keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py
index ea56a22e2..fe0cee882 100644
--- a/keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py
+++ b/keystone/common/sql/migrate_repo/versions/066_fixup_service_name_value.py
@@ -22,7 +22,11 @@ def upgrade(migrate_engine):
services = list(service_table.select().execute())
for service in services:
- extra_dict = jsonutils.loads(service.extra)
+ if service.extra is not None:
+ extra_dict = jsonutils.loads(service.extra)
+ else:
+ extra_dict = {}
+
# Skip records where service is not null
if extra_dict.get('name') is not None:
continue
diff --git a/keystone/tests/unit/test_sql_upgrade.py b/keystone/tests/unit/test_sql_upgrade.py
index 25eeaff6b..35fd95388 100644
--- a/keystone/tests/unit/test_sql_upgrade.py
+++ b/keystone/tests/unit/test_sql_upgrade.py
@@ -512,6 +512,10 @@ class SqlUpgradeTests(SqlMigrateBase):
random_attr_name_empty, random_attr_name_none_str),
]
+ # NOTE(viktors): Add a service with empty extra field
+ self.insert_dict(session, 'service',
+ {'id': uuid.uuid4().hex, 'type': uuid.uuid4().hex})
+
session.close()
self.upgrade(66)
session = self.Session()