blob: 929c747a3f6d224819f2b372dd12b61fd15a05d7 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import json
import subprocess
import sys
def main():
parser = argparse.ArgumentParser(description='Format FVM size')
parser.add_argument('--fvm-blk', help='Path to fvm.sparse.blk file')
parser.add_argument('--blob-blk', help='Path to blob.blk file')
parser.add_argument('--data-blk', help='Path to data.blk file')
parser.add_argument('--fvm-tool', help='Path to fvm tool')
parser.add_argument('--blobfs-tool', help='Path to blobfs tool')
parser.add_argument('--minfs-tool', help='Path to minfs tool')
parser.add_argument('--max-fvm-contents-size',
help='Total size limit for FVM')
parser.add_argument('--max-blob-contents-size', default='0',
help='Maximum size for blob contents')
parser.add_argument('--max-blob-image-size', default='0',
help='Maximum size for blob image')
parser.add_argument('--max-data-contents-size', default='0',
help='Maximum size for data contents')
parser.add_argument('--max-data-image-size', default='0',
help='Maximum size for data contents')
parser.add_argument('--output', help='Path to output file')
args = parser.parse_args()
blob_tool_prefix = [args.blobfs_tool, args.blob_blk]
minfs_tool_prefix = [args.minfs_tool, args.data_blk]
# 'name', 'tool invocation', 'limit'
data_points = [
['fvm/contents_size', [args.fvm_tool, args.fvm_blk, 'size'],
args.max_fvm_contents_size],
['blob/contents_size', blob_tool_prefix + ['used-data-size'],
args.max_blob_contents_size],
['blob/image_size', blob_tool_prefix + ['used-size'],
args.max_blob_image_size],
['data/contents_size', minfs_tool_prefix + ['used-data-size'],
args.max_data_contents_size],
['data/image_size', minfs_tool_prefix + ['used-size'],
args.max_data_image_size]]
data = []
for d in data_points:
value = subprocess.check_output(d[1]).strip()
data.append({
'name': d[0],
'value': int(value),
'limit': int(d[2])})
with open(args.output, 'w') as f:
json.dump(data, f, indent=2)
if __name__ == '__main__':
sys.exit(main())