From 30ce7e84f4d14657d9447081f7f4c05471f8737c Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Mon, 19 Nov 2018 21:49:45 +0100 Subject: [PATCH] Discover rbd facts. Signed-off-by: Valentin Lorentz --- library/ceph_facts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/library/ceph_facts b/library/ceph_facts index 257ab8ee0..06b23da4c 100644 --- a/library/ceph_facts +++ b/library/ceph_facts @@ -127,6 +127,34 @@ def run_ceph_facts(module): for (k,v) in rados_df_ds.items(): setup_options["rados_df_%s" % k] = v + setup_options['rbd_images'] = {} + for pool in setup_options.get('osd_status_pools', []): + if 'rbd' in pool['application_metadata']: + pool_name = pool['pool_name'] + setup_options['rbd_images'][pool_name] = {} + cmd = ["/usr/bin/env", "rbd", "list", pool_name, "--format=json"] + rc, out, err = module.run_command(cmd, check_rc=True) + try: + images = json.loads(out) + except json.JsonDecodeError: + continue + for image in images: + setup_options['rbd_images'][pool_name][image] = {} + + cmd = ["/usr/bin/env", "rbd", "status", pool_name+'/'+image, "--format=json"] + rc, out, err = module.run_command(cmd, check_rc=True) + try: + setup_options['rbd_images'][pool_name][image]['status'] = json.loads(out) + except json.JsonDecodeError: + continue + + cmd = ["/usr/bin/env", "rbd", "info", pool_name+'/'+image, "--format=json"] + rc, out, err = module.run_command(cmd, check_rc=True) + try: + setup_options['rbd_images'][pool_name][image]['info'] = json.loads(out) + except json.JsonDecodeError: + continue + # business as usual for (k, v) in facts.items(): setup_options["ansible_%s" % k.replace('-', '_')] = v -- 2.39.5