type -> ec_type updates for command line tools
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
Tushar Gohad
10 years ago
99 | 99 | |
100 | 100 | class ECScheme: |
101 | 101 | |
102 | def __init__(self, k, m, w, type): | |
102 | def __init__(self, k, m, w, ec_type): | |
103 | 103 | self.k = k |
104 | 104 | self.m = m |
105 | 105 | self.w = w |
106 | self.type = type | |
106 | self.ec_type = ec_type | |
107 | 107 | |
108 | 108 | def __str__(self): |
109 | return "k=%d m=%d w=%d type=%s" % (self.k, self.m, self.w, self.type) | |
109 | return "k=%d m=%d w=%d ec_type=%s" % (self.k, self.m, self.w, self.ec_type) | |
110 | 110 | |
111 | 111 | valid_flat_xor_3 = [(6, 6), (7, 6), (8, 6), (9, 6), |
112 | 112 | (10, 6), (11, 6), (12, 6), (13, 6), |
222 | 222 | |
223 | 223 | schemes = get_viable_schemes(args.n, args.r, args.s, args.f) |
224 | 224 | |
225 | # Results will be List[(type, throughput)] | |
225 | # Results will be List[(ec_type, throughput)] | |
226 | 226 | results = [] |
227 | 227 | |
228 | 228 | # Num iterations |
239 | 239 | try: |
240 | 240 | ec_driver = ECDriver( |
241 | 241 | "pyeclib.core.ECPyECLibDriver", |
242 | k=scheme.k, m=scheme.m, type=scheme.type) | |
242 | k=scheme.k, m=scheme.m, ec_type=scheme.ec_type) | |
243 | 243 | except Exception as e: |
244 | 244 | print("Scheme %s is not defined (%s)." % (scheme, e)) |
245 | 245 | continue |
265 | 265 | print(" ======== To Use this Policy, Copy and Paste Text (not including " |
266 | 266 | "this header and footer) to Swift Conf ========") |
267 | 267 | print(" type = erasure_coding") |
268 | print(" name = %s_%d_%d" % (results[i][0].type, | |
268 | print(" name = %s_%d_%d" % (results[i][0].ec_type, | |
269 | 269 | results[i][0].k, results[i][0].m)) |
270 | print(" ec_type = %s" % results[i][0].type) | |
270 | print(" ec_type = %s" % results[i][0].ec_type) | |
271 | 271 | print(" ec_k = %s" % results[i][0].k) |
272 | 272 | print(" ec_m = %s" % results[i][0].m) |
273 | 273 | print(" ================================================================" |
31 | 31 | parser = argparse.ArgumentParser(description='Decoder for PyECLib.') |
32 | 32 | parser.add_argument('k', type=int, help='number of data elements') |
33 | 33 | parser.add_argument('m', type=int, help='number of parity elements') |
34 | parser.add_argument('type', help='EC algorithm used') | |
34 | parser.add_argument('ec_type', help='EC algorithm used') | |
35 | 35 | parser.add_argument('fragments', metavar='fragment', nargs='+', |
36 | 36 | help='fragments to decode') |
37 | 37 | parser.add_argument('filename', help='output file') |
38 | 38 | |
39 | 39 | args = parser.parse_args() |
40 | 40 | |
41 | print args.k | |
42 | print args.m | |
43 | print args.type | |
44 | print args.fragments | |
45 | print args.filename | |
41 | print("k = %d, m = %d" % (args.k, args.m)) | |
42 | print("ec_type = %s" % args.ec_type) | |
43 | print("fragments = %s" % args.fragments) | |
44 | print("filename = %s" % args.filename) | |
46 | 45 | |
47 | 46 | ec_driver = ECDriver( |
48 | "pyeclib.core.ECPyECLibDriver", k=args.k, m=args.m, type=args.type) | |
47 | "pyeclib.core.ECPyECLibDriver", k=args.k, m=args.m, ec_type=args.ec_type) | |
49 | 48 | |
50 | 49 | fragment_list = [] |
51 | 50 |
31 | 31 | parser = argparse.ArgumentParser(description='Encoder for PyECLib.') |
32 | 32 | parser.add_argument('k', type=int, help='number of data elements') |
33 | 33 | parser.add_argument('m', type=int, help='number of parity elements') |
34 | parser.add_argument('type', help='EC algorithm used') | |
34 | parser.add_argument('ec_type', help='EC algorithm used') | |
35 | 35 | parser.add_argument('file_dir', help='directory with the file') |
36 | 36 | parser.add_argument('filename', help='file to encode') |
37 | 37 | parser.add_argument('fragment_dir', help='directory to drop encoded fragments') |
38 | 38 | |
39 | 39 | args = parser.parse_args() |
40 | 40 | |
41 | print args.k | |
42 | print args.m | |
43 | print args.type | |
44 | print args.filename | |
41 | print("k = %d, m = %d" % (args.k, args.m)) | |
42 | print("ec_type = %s" % args.ec_type) | |
43 | print("filename = %s" % args.filename) | |
45 | 44 | |
46 | 45 | ec_driver = ECDriver( |
47 | 46 | "pyeclib.core.ECPyECLibDriver", |
48 | k=args.k, m=args.m, type=args.type) | |
47 | k=args.k, m=args.m, ec_type=args.ec_type) | |
49 | 48 | |
50 | 49 | # read |
51 | 50 | with open(("%s/%s" % (args.file_dir, args.filename)), "rb") as fp: |
33 | 33 | 'recover missing fragments.') |
34 | 34 | parser.add_argument('k', type=int, help='number of data elements') |
35 | 35 | parser.add_argument('m', type=int, help='number of parity elements') |
36 | parser.add_argument('type', help='EC algorithm used') | |
36 | parser.add_argument('ec_type', help='EC algorithm used') | |
37 | 37 | parser.add_argument('missing_fragments', type=int, metavar='missing_fragment', |
38 | 38 | nargs='+', help='missing_fragments') |
39 | 39 | |
41 | 41 | |
42 | 42 | ec_driver = ECDriver( |
43 | 43 | "pyeclib.core.ECPyECLibDriver", |
44 | k=args.k, m=args.m, type=args.type) | |
44 | k=args.k, m=args.m, ec_type=args.ec_type) | |
45 | 45 | |
46 | 46 | fragments_needed = ec_driver.fragments_needed(args.missing_fragments) |
47 | 47 |