Skip to content

Commit

Permalink
Fix tables metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
Kukant committed May 30, 2024
1 parent 2b04f70 commit d5150d0
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
11 changes: 7 additions & 4 deletions kbcstorage/tables_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def delete(self, table_id, metadata_id):

self._delete(url)

def create(self, table_id, provider, metadata, columns_metadata):
def create(self, table_id, provider, metadata, columns_metadata=None):
"""
Post metadata to a table.
Expand All @@ -86,13 +86,15 @@ def create(self, table_id, provider, metadata, columns_metadata):
ValueError: If the metadata is not a list.
ValueError: If the columns_metadata is not a list
"""
if columns_metadata is None:
columns_metadata = []
if not isinstance(table_id, str) or table_id == '':
raise ValueError("Invalid table_id '{}'.".format(table_id))
if not isinstance(provider, str) or provider == '':
raise ValueError("Invalid provider '{}'.".format(provider))
if not isinstance(metadata, list):
raise ValueError("Invalid metadata '{}'.".format(metadata))
if not isinstance(columns_metadata, list):
if columns_metadata is not None and not isinstance(columns_metadata, list):
raise ValueError("Invalid columns_metadata '{}'.".format(columns_metadata))

url = '{}/{}/metadata'.format(self.base_url, table_id)
Expand All @@ -101,7 +103,8 @@ def create(self, table_id, provider, metadata, columns_metadata):
}
data = {
"provider": provider,
"metadata": metadata,
"columnsMetadata": columns_metadata
"metadata": metadata
}
if columns_metadata:
data["columnsMetadata"] = columns_metadata
return self._post(url, data=json.dumps(data), headers=headers)
12 changes: 12 additions & 0 deletions tests/functional/test_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,18 @@ def test_table_with_metadata(self):
]
)

with self.subTest("Test empty columns metadata"):
# test that empty [] is not actually put in the request
self.tables.metadata.create(
table_id=table_id,
provider='test',
metadata=[{
'key': 'test_table_with_metadata',
'value': 'success'
}],
columns_metadata=[]
)

table_info = self.tables.detail(table_id)
with self.subTest("Test metadata key in response"):
self.assertIn('metadata', table_info)
Expand Down

0 comments on commit d5150d0

Please sign in to comment.