summary refs log tree commit diff
path: root/synapse/config/workers.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2020-05-14 14:00:58 +0100
committerGitHub <noreply@github.com>2020-05-14 14:00:58 +0100
commit1de36407d14d7517af8462b2608dff0ea657262e (patch)
tree4b747ddfa019aa53667d01bb421f4df9698fd539 /synapse/config/workers.py
parentMerge tag 'v1.13.0rc2' into develop (diff)
downloadsynapse-1de36407d14d7517af8462b2608dff0ea657262e.tar.xz
Add `instance_map` config and route replication calls (#7495)
Diffstat (limited to 'synapse/config/workers.py')
-rw-r--r--synapse/config/workers.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/synapse/config/workers.py b/synapse/config/workers.py
index fef72ed974..c80c338584 100644
--- a/synapse/config/workers.py
+++ b/synapse/config/workers.py
@@ -13,9 +13,20 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import attr
+
 from ._base import Config
 
 
+@attr.s
+class InstanceLocationConfig:
+    """The host and port to talk to an instance via HTTP replication.
+    """
+
+    host = attr.ib(type=str)
+    port = attr.ib(type=int)
+
+
 class WorkerConfig(Config):
     """The workers are processes run separately to the main synapse process.
     They have their own pid_file and listener configuration. They use the
@@ -71,6 +82,12 @@ class WorkerConfig(Config):
                 elif not bind_addresses:
                     bind_addresses.append("")
 
+        # A map from instance name to host/port of their HTTP replication endpoint.
+        instance_map = config.get("instance_map", {}) or {}
+        self.instance_map = {
+            name: InstanceLocationConfig(**c) for name, c in instance_map.items()
+        }
+
     def read_arguments(self, args):
         # We support a bunch of command line arguments that override options in
         # the config. A lot of these options have a worker_* prefix when running