From e62f186613a1de64a155a852b21ec9033c6e73ea Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Tue, 31 Oct 2017 10:41:36 -0400 Subject: [PATCH] mgr/dashboard: include A/O start relative timestamp for iSCSI Signed-off-by: Jason Dillaman --- src/pybind/mgr/dashboard/rbd_iscsi.html | 9 +++++++++ src/pybind/mgr/dashboard/rbd_iscsi.py | 21 +++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/pybind/mgr/dashboard/rbd_iscsi.html b/src/pybind/mgr/dashboard/rbd_iscsi.html index b8e47fdb234..d49796cff79 100644 --- a/src/pybind/mgr/dashboard/rbd_iscsi.html +++ b/src/pybind/mgr/dashboard/rbd_iscsi.html @@ -16,6 +16,13 @@ console.log(content_data); + rivets.formatters.relative_date = function(date_str) { + if (!date_str) { + return "unknown"; + } + return moment(date_str * 1000).fromNow(); + } + rivets.bind($("div#content"), content_data); setTimeout(refresh, 30000); @@ -85,6 +92,7 @@ Image Active/Optimized Active/Non-Optimized + A/O Since @@ -93,6 +101,7 @@ {image.name} {image.optimized_paths} {image.non_optimized_paths} + {image.optimized_since | relative_date} diff --git a/src/pybind/mgr/dashboard/rbd_iscsi.py b/src/pybind/mgr/dashboard/rbd_iscsi.py index d0de918dab1..007abd11044 100644 --- a/src/pybind/mgr/dashboard/rbd_iscsi.py +++ b/src/pybind/mgr/dashboard/rbd_iscsi.py @@ -27,20 +27,33 @@ class DaemonsAndImages(RemoteViewCache): } daemons[server['hostname']] = daemon - image_id = service['id'].split(':')[-1] - image = images.get(image_id) + service_id = service['id'] + device_id = service_id.split(':')[-1] + image = images.get(device_id) if image is None: image = { - 'id': image_id, + 'device_id': device_id, 'pool_name': metadata['pool_name'], 'name': metadata['image_name'], + 'id': metadata.get('image_id', None), 'optimized_paths': [], 'non_optimized_paths': [] } - images[image_id] = image + images[device_id] = image if status.get('lock_owner', 'false') == 'true': daemon['optimized_paths'] += 1 image['optimized_paths'].append(server['hostname']) + + perf_key_prefix = "librbd-{id}-{pool}-{name}.".format( + id=metadata.get('image_id', ''), + pool=metadata['pool_name'], + name=metadata['image_name']) + perf_key = "{}lock_acquired_time".format(perf_key_prefix) + lock_acquired_time = (self._module.get_counter( + 'tcmu-runner', service_id, perf_key)[perf_key] or + [[0,0]])[-1][1] / 1000000000 + if lock_acquired_time > image.get('optimized_since', None): + image['optimized_since'] = lock_acquired_time else: daemon['non_optimized_paths'] += 1 image['non_optimized_paths'].append(server['hostname']) -- 2.39.5