]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/rbd_iscsi.py
update sources to v12.2.3
[ceph.git] / ceph / src / pybind / mgr / dashboard / rbd_iscsi.py
index d0de918dab1130f11404b6dd209054dd69994b83..6f5e75ed1804a80110069a99d077a05ffc9bdcc7 100644 (file)
@@ -27,20 +27,41 @@ 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
+                            image['stats'] = {}
+                            image['stats_history'] = {}
+                            for s in ['rd', 'wr', 'rd_bytes', 'wr_bytes']:
+                                perf_key = "{}{}".format(perf_key_prefix, s)
+                                image['stats'][s] = self._module.get_rate(
+                                    'tcmu-runner', service_id, perf_key)
+                                image['stats_history'][s] = self._module.get_counter(
+                                    'tcmu-runner', service_id, perf_key)[perf_key]
                     else:
                         daemon['non_optimized_paths'] += 1
                         image['non_optimized_paths'].append(server['hostname'])