7 log = logging.getLogger(__name__)
9 @contextlib.contextmanager
10 def task(ctx, config):
12 Populate <num_pools> pools with prefix <pool_prefix> with <num_images>
13 rbd images at <num_snaps> snaps
15 The config could be as follows::
23 image_size: 10737418240
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)
37 (remote,) = ctx.cluster.only(client).remotes.iterkeys()
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,))
51 "--image-format", "1",
52 "--size", str(image_size),
53 "--pool", str(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,))
67 for snapid in range(num_snaps):
68 snapname = "snap-%s" % (str(snapid),)
69 log.info("imagename %s creating snap %s" % (imagename, snapname))
72 "rbd", "snap", "create",