Skip to content

Commit

Permalink
Tolerate null on Json db load
Browse files Browse the repository at this point in the history
A icehouse->juno migration issue has surfaced where
resource.properties_data is null for existing resource records.

This change fixes the Json db type to treat None the same as
the serialized JSON 'null'.

Change-Id: Ia0b9a23a7798c95fbbcba439ffb8203b50367e7c
Closes-Bug: #1383505
  • Loading branch information
steveb committed Oct 23, 2014
1 parent a27d371 commit 3f7d4bb
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
2 changes: 2 additions & 0 deletions heat/db/sqlalchemy/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ def process_bind_param(self, value, dialect):
return dumps(value)

def process_result_value(self, value, dialect):
if value is None:
return None
return loads(value)


Expand Down
12 changes: 12 additions & 0 deletions heat/tests/test_sqlalchemy_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,20 @@ def test_process_bind_param(self):
result = self.sqltype.process_bind_param(value, dialect)
self.assertEqual('{"foo": "bar"}', result)

def test_process_bind_param_null(self):
dialect = None
value = None
result = self.sqltype.process_bind_param(value, dialect)
self.assertEqual('null', result)

def test_process_result_value(self):
dialect = None
value = '{"foo": "bar"}'
result = self.sqltype.process_result_value(value, dialect)
self.assertEqual({'foo': 'bar'}, result)

def test_process_result_value_null(self):
dialect = None
value = None
result = self.sqltype.process_result_value(value, dialect)
self.assertIsNone(result)

0 comments on commit 3f7d4bb

Please sign in to comment.