15061: Correctly filter out "*" from RemoteClusters
[arvados.git] / services / fuse / arvados_fuse / __init__.py
index 7c078858cacb9267ec103506d53e3117c88c119c..b37ef695bde6708cdb8fd2bc7d3117275920460e 100644 (file)
@@ -413,14 +413,26 @@ class Operations(llfuse.Operations):
         # initializing to continue
         self.initlock.set()
 
-    def fuse_ops_total_time(self):
-        ops_sum = 0.0
-        metrics = self.fuse_time.collect()
-        for metric in metrics:
-            for sample in metric.samples:
-                if sample.name == 'arvmount_fuse_operations_seconds_sum':
-                    ops_sum += sample.value      
-        return ops_sum
+    def metric_samples(self):
+        return self.fuse_time.collect()[0].samples 
+
+    def metric_op_names(self):
+        ops = []
+        for cur_op in [sample.labels['op'] for sample in self.metric_samples()]:
+            if cur_op not in ops:
+                ops.append(cur_op)
+        return ops
+
+    def metric_value(self, opname, metric):
+        op_value = [sample.value for sample in self.metric_samples()
+                    if sample.name == metric and sample.labels['op'] == opname]
+        return op_value[0] if len(op_value) == 1 else None
+
+    def metric_sum_func(self, opname):
+        return lambda: self.metric_value(opname, "arvmount_fuse_operations_seconds_sum")
+
+    def metric_count_func(self, opname):
+        return lambda: int(self.metric_value(opname, "arvmount_fuse_operations_seconds_count"))
 
     @destroy_time.time()
     @catch_exceptions