HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
testDataConvertor.py
Go to the documentation of this file.
1 #!/usr/bin/python
2 # coding: utf-8
3 
4 import argparse
5 import json
6 import pickle
7 import os
8 import sys
9 sys.path.append(os.path.dirname(__file__) + "/../../hce")
10 
11 from dcc.DCCObjectsSerializator import DCCObjectsSerializator
12 
13 FORMAT_PICKLE = 'PICKLE'
14 FORMAT_JSON = 'JSON'
15 DEFAULT_FORMAT = FORMAT_PICKLE
16 
17 OPERATION_PACK = 'PACK'
18 OPERATION_UNPACK = 'UNPACK'
19 DEFAULT_OPERATION = OPERATION_PACK
20 
22  pr = argparse.ArgumentParser()
23  pr.add_argument('-f', '--format', choices=[FORMAT_PICKLE, FORMAT_JSON], default=DEFAULT_FORMAT)
24  pr.add_argument('-o', '--operation', choices=[OPERATION_PACK, OPERATION_UNPACK], default=DEFAULT_OPERATION)
25 
26  return pr
27 
28 
29 if __name__ == '__main__':
30  try:
31  parser = createParser()
32  namespace = parser.parse_args(sys.argv[1:])
33 
34  if namespace.format == FORMAT_PICKLE and namespace.operation == OPERATION_PACK:
35  sys.stdout.write(pickle.dumps(DCCObjectsSerializator().BatchDeserialize(json.loads(sys.stdin.read()))))
36  elif namespace.format == FORMAT_PICKLE and namespace.operation == OPERATION_UNPACK:
37  sys.stdout.write(json.dumps(pickle.loads(sys.stdin.read()).toJSON()))
38  elif namespace.format == FORMAT_JSON and namespace.operation == OPERATION_PACK:
39  sys.stdout.write(json.dumps(json.loads(sys.stdin.read())))
40  elif namespace.format == FORMAT_JSON and namespace.operation == OPERATION_UNPACK:
41  sys.stdout.write(json.dumps(json.loads(sys.stdin.read())))
42  else:
43  raise Exception("Unsupport command line parameter.")
44 
45  except Exception, err:
46  sys.stderr.write(str(err) + '\n')