in index-tool/migrationtools/documentdb_index_tool.py [0:0]
def _get_metadata_from_file(self, filepath):
"""
Given a path to a metadata file, return the JSON data structure parsed
from the contents, formatted.
"""
with open(filepath, 'rt') as metadata_file:
logging.debug("Getting metadata from file: %s", filepath)
file_metadata = json.load(metadata_file)
collection_metadata = AutovivifyDict()
indexes = file_metadata.get(self.INDEXES, None)
# every collection should have at least the _id_ index. If no indexes are listed, the
# metadata document is malformed and we should error out
if indexes is None:
raise Exception(
"Malformed metadata document {} has no indexes.".format(
filepath))
if (len(indexes) == 0):
# no indexes for this collection
db_name = os.path.basename(os.path.dirname(filepath))
thisFileName = os.path.basename(filepath)
collection_name = thisFileName[0:(len(thisFileName)-len(self.METADATA_FILE_SUFFIX_PATTERN)-1)]
else:
first_index = indexes[0]
if self.NAMESPACE in first_index:
first_index_namespace = first_index[self.NAMESPACE]
(db_name, collection_name) = first_index_namespace.split('.', 1)
else:
db_name = os.path.basename(os.path.dirname(filepath))
thisFileName = os.path.basename(filepath)
collection_name = thisFileName[0:(len(thisFileName)-len(self.METADATA_FILE_SUFFIX_PATTERN)-1)]
collection_metadata[self.FILE_PATH] = filepath
for index in indexes:
index_name = index.pop(self.INDEX_NAME)
collection_metadata[self.INDEXES][index_name] = index
if self.OPTIONS in file_metadata:
collection_metadata[self.OPTIONS] = file_metadata[
self.OPTIONS]
return db_name, collection_name, collection_metadata