Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/crit
diff options
context:
space:
mode:
authorRuslan Kuprieiev <kupruser@gmail.com>2014-12-31 15:06:49 +0300
committerPavel Emelyanov <xemul@parallels.com>2015-01-14 19:44:47 +0300
commitd36994c4c32dcf22f0f4bbe08e82adbec15890bc (patch)
treecac1c341335c46c0cf8ccad79b0123f32212b20c /crit
parentdfe8f838cfd8f80ab20febc80cd46726a6187156 (diff)
crit: add crit
crit is a python script that helps user to manipulate criu images. For now, it can only convert criu images to\from human-readable format using pycriu.images module. Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Diffstat (limited to 'crit')
-rwxr-xr-xcrit76
1 files changed, 76 insertions, 0 deletions
diff --git a/crit b/crit
new file mode 100755
index 000000000..bd16db06a
--- /dev/null
+++ b/crit
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+import argparse
+import sys
+import json
+
+import pycriu
+
+def handle_cmdline_opts():
+ desc = 'CRiu Image Tool'
+ parser = argparse.ArgumentParser(description=desc)
+ parser.add_argument('command',
+ choices = ['convert'],
+ help = 'use \"covert\" to convert CRIU image to/from human-readable format')
+ parser.add_argument('-i',
+ '--in',
+ help = 'input file (stdin by default)')
+ parser.add_argument('-o',
+ '--out',
+ help = 'output file (stdout by default')
+ parser.add_argument('-f',
+ '--format',
+ choices = ['raw', 'nice'],
+ help = 'well-formated output (by default: raw for files and nice for stdout)')
+
+ opts = vars(parser.parse_args())
+
+ return opts
+
+def convert_img(opts):
+ orig_type = None
+ indent = None
+
+ # If no input file is set -- stdin is used.
+ if opts['in']:
+ with open(opts['in'], 'r') as f:
+ in_str = f.read()
+ else:
+ in_str = sys.stdin.read()
+
+ # Detect what is the type we are dealing with.
+ if in_str[len(in_str) - len(in_str.lstrip())] == '{':
+ img = json.loads(in_str)
+ orig_type = 'json'
+ else:
+ img = pycriu.images.loads(in_str)
+ orig_type = 'bin'
+
+ # For stdout --format nice is set by default.
+ if opts['format'] == 'nice' or (opts['format'] == None and opts['out'] == None):
+ indent = 4
+
+ # Just convert image to the opposite format
+ if orig_type == 'json':
+ out_str = pycriu.images.dumps(img)
+ else:
+ out_str = json.dumps(img, indent=indent)
+
+ # If no output file is set -- stdout is used.
+ if opts['out']:
+ with open(opts['out'], 'w+') as f:
+ f.write(out_str)
+ else:
+ sys.stdout.write(out_str)
+
+def main():
+ #Handle cmdline options
+ opts = handle_cmdline_opts()
+
+ cmds = {
+ 'convert' : convert_img
+ }
+
+ cmds[opts['command']](opts)
+
+if __name__ == '__main__':
+ main()