mirror of https://gitee.com/openkylin/qemu.git
qcow2.py: Introduce '-j' key to dump in JSON format
Add the command key to the qcow2.py arguments list to dump QCOW2 metadata in JSON format. Here is the suggested way to do that. The implementation of the dump in JSON format is in the patch that follows. Signed-off-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <1596742557-320265-9-git-send-email-andrey.shinkevich@virtuozzo.com> Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
9427784124
commit
2c6d9ca48c
|
@ -26,16 +26,19 @@
|
|||
)
|
||||
|
||||
|
||||
is_json = False
|
||||
|
||||
|
||||
def cmd_dump_header(fd):
|
||||
h = QcowHeader(fd)
|
||||
h.dump()
|
||||
h.dump(is_json)
|
||||
print()
|
||||
h.dump_extensions()
|
||||
h.dump_extensions(is_json)
|
||||
|
||||
|
||||
def cmd_dump_header_exts(fd):
|
||||
h = QcowHeader(fd)
|
||||
h.dump_extensions()
|
||||
h.dump_extensions(is_json)
|
||||
|
||||
|
||||
def cmd_set_header(fd, name, value):
|
||||
|
@ -151,11 +154,14 @@ def main(filename, cmd, args):
|
|||
|
||||
|
||||
def usage():
|
||||
print("Usage: %s <file> <cmd> [<arg>, ...]" % sys.argv[0])
|
||||
print("Usage: %s <file> <cmd> [<arg>, ...] [<key>, ...]" % sys.argv[0])
|
||||
print("")
|
||||
print("Supported commands:")
|
||||
for name, handler, num_args, desc in cmds:
|
||||
print(" %-20s - %s" % (name, desc))
|
||||
print("")
|
||||
print("Supported keys:")
|
||||
print(" %-20s - %s" % ('-j', 'Dump in JSON format'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -163,4 +169,8 @@ def usage():
|
|||
usage()
|
||||
sys.exit(1)
|
||||
|
||||
is_json = '-j' in sys.argv
|
||||
if is_json:
|
||||
sys.argv.remove('-j')
|
||||
|
||||
main(sys.argv[1], sys.argv[2], sys.argv[3:])
|
||||
|
|
|
@ -109,7 +109,7 @@ def __init__(self, fd=None, offset=None, data=None):
|
|||
self.__dict__ = dict((field[2], values[i])
|
||||
for i, field in enumerate(self.fields))
|
||||
|
||||
def dump(self):
|
||||
def dump(self, is_json=False):
|
||||
for f in self.fields:
|
||||
value = self.__dict__[f[2]]
|
||||
if isinstance(f[1], str):
|
||||
|
@ -408,7 +408,7 @@ def update(self, fd):
|
|||
buf = buf[0:header_bytes-1]
|
||||
fd.write(buf)
|
||||
|
||||
def dump_extensions(self):
|
||||
def dump_extensions(self, is_json=False):
|
||||
for ex in self.extensions:
|
||||
print('Header extension:')
|
||||
ex.dump()
|
||||
|
|
Loading…
Reference in New Issue