]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | """ |
2 | Populate rbd pools | |
3 | """ | |
4 | import contextlib | |
5 | import logging | |
6 | ||
7 | log = logging.getLogger(__name__) | |
8 | ||
9 | @contextlib.contextmanager | |
10 | def task(ctx, config): | |
11 | """ | |
12 | Populate <num_pools> pools with prefix <pool_prefix> with <num_images> | |
13 | rbd images at <num_snaps> snaps | |
14 | ||
15 | The config could be as follows:: | |
16 | ||
17 | populate_rbd_pool: | |
18 | client: <client> | |
19 | pool_prefix: foo | |
20 | num_pools: 5 | |
21 | num_images: 10 | |
22 | num_snaps: 3 | |
23 | image_size: 10737418240 | |
24 | """ | |
25 | if config is None: | |
26 | config = {} | |
27 | client = config.get("client", "client.0") | |
28 | pool_prefix = config.get("pool_prefix", "foo") | |
29 | num_pools = config.get("num_pools", 2) | |
30 | num_images = config.get("num_images", 20) | |
31 | num_snaps = config.get("num_snaps", 4) | |
32 | image_size = config.get("image_size", 100) | |
33 | write_size = config.get("write_size", 1024*1024) | |
34 | write_threads = config.get("write_threads", 10) | |
35 | write_total_per_snap = config.get("write_total_per_snap", 1024*1024*30) | |
36 | ||
9f95a23c | 37 | (remote,) = ctx.cluster.only(client).remotes.keys() |
7c673cae FG |
38 | |
39 | for poolid in range(num_pools): | |
40 | poolname = "%s-%s" % (pool_prefix, str(poolid)) | |
41 | log.info("Creating pool %s" % (poolname,)) | |
42 | ctx.managers['ceph'].create_pool(poolname) | |
43 | for imageid in range(num_images): | |
44 | imagename = "rbd-%s" % (str(imageid),) | |
45 | log.info("Creating imagename %s" % (imagename,)) | |
46 | remote.run( | |
47 | args = [ | |
48 | "rbd", | |
49 | "create", | |
50 | imagename, | |
51 | "--image-format", "1", | |
52 | "--size", str(image_size), | |
53 | "--pool", str(poolname)]) | |
54 | def bench_run(): | |
55 | remote.run( | |
56 | args = [ | |
57 | "rbd", | |
58 | "bench-write", | |
59 | imagename, | |
60 | "--pool", poolname, | |
61 | "--io-size", str(write_size), | |
62 | "--io-threads", str(write_threads), | |
63 | "--io-total", str(write_total_per_snap), | |
64 | "--io-pattern", "rand"]) | |
65 | log.info("imagename %s first bench" % (imagename,)) | |
66 | bench_run() | |
67 | for snapid in range(num_snaps): | |
68 | snapname = "snap-%s" % (str(snapid),) | |
69 | log.info("imagename %s creating snap %s" % (imagename, snapname)) | |
70 | remote.run( | |
71 | args = [ | |
72 | "rbd", "snap", "create", | |
73 | "--pool", poolname, | |
74 | "--snap", snapname, | |
75 | imagename | |
76 | ]) | |
77 | bench_run() | |
78 | ||
79 | try: | |
80 | yield | |
81 | finally: | |
82 | log.info('done') |