From e0214a263b610f21d59d16cf84b5a3eee8485b28 Mon Sep 17 00:00:00 2001
From: "Paul \"LeoNerd\" Evans" <paul@matrix.org>
Date: Thu, 12 Mar 2015 15:33:53 +0000
Subject: [PATCH] Build MetricsResource as a specific HomeServer dependency

---
 synapse/app/homeserver.py | 16 ++++++++++------
 synapse/server.py         |  1 +
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index 9747f7a015..3801302c60 100755
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -47,6 +47,7 @@ from synapse.crypto import context_factory
 from synapse.util.logcontext import LoggingContext
 from synapse.rest.client.v1 import ClientV1RestResource
 from synapse.rest.client.v2_alpha import ClientV2AlphaRestResource
+from synapse.metrics.resource import MetricsResource, METRICS_PREFIX
 
 from daemonize import Daemonize
 import twisted.manhole.telnet
@@ -100,6 +101,12 @@ class SynapseHomeServer(HomeServer):
     def build_resource_for_server_key(self):
         return LocalKey(self)
 
+    def build_resource_for_metrics(self):
+        if self.get_config().enable_metrics:
+            return MetricsResource(self)
+        else:
+            return None
+
     def build_db_pool(self):
         return adbapi.ConnectionPool(
             "sqlite3", self.get_db_name(),
@@ -147,12 +154,9 @@ class SynapseHomeServer(HomeServer):
         else:
             self.root_resource = Resource()
 
-        if self.get_config().enable_metrics:
-            from synapse.metrics.resource import (
-                MetricsResource, METRICS_PREFIX
-            )
-
-            desired_tree.append((METRICS_PREFIX, MetricsResource(self)))
+        metrics_resource = self.get_resource_for_metrics()
+        if metrics_resource is not None:
+            desired_tree.append((METRICS_PREFIX, metrics_resource))
 
         # ideally we'd just use getChild and putChild but getChild doesn't work
         # unless you give it a Request object IN ADDITION to the name :/ So
diff --git a/synapse/server.py b/synapse/server.py
index e3eefda4fc..c7772244ba 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -80,6 +80,7 @@ class BaseHomeServer(object):
         'resource_for_server_key',
         'resource_for_media_repository',
         'resource_for_app_services',
+        'resource_for_metrics',
         'event_sources',
         'ratelimiter',
         'keyring',
-- 
GitLab