Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 634f6a6

Browse files
committed
Pass config_dir_path and data_dir_path into Config.read_config. (#5522)
2 parents c968e97 + c3c6b00 commit 634f6a6

35 files changed

+104
-67
lines changed

changelog.d/5522.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Pass config_dir_path and data_dir_path into Config.read_config.

synapse/config/_base.py

Lines changed: 70 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# -*- coding: utf-8 -*-
22
# Copyright 2014-2016 OpenMarket Ltd
3+
# Copyright 2017-2018 New Vector Ltd
4+
# Copyright 2019 The Matrix.org Foundation C.I.C.
35
#
46
# Licensed under the Apache License, Version 2.0 (the "License");
57
# you may not use this file except in compliance with the License.
@@ -217,7 +219,7 @@ def load_config(cls, description, argv):
217219
"--keys-directory",
218220
metavar="DIRECTORY",
219221
help="Where files such as certs and signing keys are stored when"
220-
" their location is given explicitly in the config."
222+
" their location is not given explicitly in the config."
221223
" Defaults to the directory containing the last config file",
222224
)
223225

@@ -229,10 +231,22 @@ def load_config(cls, description, argv):
229231

230232
config_files = find_config_files(search_paths=config_args.config_path)
231233

234+
if not config_files:
235+
config_parser.error("Must supply a config file.")
236+
237+
if config_args.keys_directory:
238+
config_dir_path = config_args.keys_directory
239+
else:
240+
config_dir_path = os.path.dirname(config_files[-1])
241+
config_dir_path = os.path.abspath(config_dir_path)
242+
data_dir_path = os.getcwd()
243+
232244
config_dict = obj.read_config_files(
233-
config_files, keys_directory=config_args.keys_directory
245+
config_files, config_dir_path=config_dir_path, data_dir_path=data_dir_path
246+
)
247+
obj.parse_config_dict(
248+
config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path
234249
)
235-
obj.parse_config_dict(config_dict)
236250

237251
obj.invoke_all("read_arguments", config_args)
238252

@@ -283,14 +297,28 @@ def load_or_generate_config(cls, description, argv):
283297
metavar="DIRECTORY",
284298
help=(
285299
"Specify where additional config files such as signing keys and log"
286-
" config should be stored. Defaults to the same directory as the main"
300+
" config should be stored. Defaults to the same directory as the last"
287301
" config file."
288302
),
289303
)
290304
config_args, remaining_args = config_parser.parse_known_args(argv)
291305

292306
config_files = find_config_files(search_paths=config_args.config_path)
293307

308+
if not config_files:
309+
config_parser.error(
310+
"Must supply a config file.\nA config file can be automatically"
311+
' generated using "--generate-config -H SERVER_NAME'
312+
' -c CONFIG-FILE"'
313+
)
314+
315+
if config_args.config_directory:
316+
config_dir_path = config_args.config_directory
317+
else:
318+
config_dir_path = os.path.dirname(config_files[-1])
319+
config_dir_path = os.path.abspath(config_dir_path)
320+
data_dir_path = os.getcwd()
321+
294322
generate_missing_configs = config_args.generate_missing_configs
295323

296324
obj = cls()
@@ -301,20 +329,10 @@ def load_or_generate_config(cls, description, argv):
301329
"Please specify either --report-stats=yes or --report-stats=no\n\n"
302330
+ MISSING_REPORT_STATS_SPIEL
303331
)
304-
if not config_files:
305-
config_parser.error(
306-
"Must supply a config file.\nA config file can be automatically"
307-
' generated using "--generate-config -H SERVER_NAME'
308-
' -c CONFIG-FILE"'
309-
)
332+
310333
(config_path,) = config_files
311334
if not cls.path_exists(config_path):
312335
print("Generating config file %s" % (config_path,))
313-
if config_args.config_directory:
314-
config_dir_path = config_args.config_directory
315-
else:
316-
config_dir_path = os.path.dirname(config_path)
317-
config_dir_path = os.path.abspath(config_dir_path)
318336

319337
server_name = config_args.server_name
320338
if not server_name:
@@ -325,7 +343,7 @@ def load_or_generate_config(cls, description, argv):
325343

326344
config_str = obj.generate_config(
327345
config_dir_path=config_dir_path,
328-
data_dir_path=os.getcwd(),
346+
data_dir_path=data_dir_path,
329347
server_name=server_name,
330348
report_stats=(config_args.report_stats == "yes"),
331349
generate_secrets=True,
@@ -368,35 +386,37 @@ def load_or_generate_config(cls, description, argv):
368386
obj.invoke_all("add_arguments", parser)
369387
args = parser.parse_args(remaining_args)
370388

371-
if not config_files:
372-
config_parser.error(
373-
"Must supply a config file.\nA config file can be automatically"
374-
' generated using "--generate-config -H SERVER_NAME'
375-
' -c CONFIG-FILE"'
376-
)
377-
378389
config_dict = obj.read_config_files(
379-
config_files, keys_directory=config_args.config_directory
390+
config_files, config_dir_path=config_dir_path, data_dir_path=data_dir_path
380391
)
381392

382393
if generate_missing_configs:
383394
obj.generate_missing_files(config_dict)
384395
return None
385396

386-
obj.parse_config_dict(config_dict)
397+
obj.parse_config_dict(
398+
config_dict, config_dir_path=config_dir_path, data_dir_path=data_dir_path
399+
)
387400
obj.invoke_all("read_arguments", args)
388401

389402
return obj
390403

391-
def read_config_files(self, config_files, keys_directory=None):
404+
def read_config_files(self, config_files, config_dir_path, data_dir_path):
392405
"""Read the config files into a dict
393406
407+
Args:
408+
config_files (iterable[str]): A list of the config files to read
409+
410+
config_dir_path (str): The path where the config files are kept. Used to
411+
create filenames for things like the log config and the signing key.
412+
413+
data_dir_path (str): The path where the data files are kept. Used to create
414+
filenames for things like the database and media store.
415+
394416
Returns: dict
395417
"""
396-
if not keys_directory:
397-
keys_directory = os.path.dirname(config_files[-1])
398-
399-
self.config_dir_path = os.path.abspath(keys_directory)
418+
# FIXME: get rid of this
419+
self.config_dir_path = config_dir_path
400420

401421
# first we read the config files into a dict
402422
specified_config = {}
@@ -410,8 +430,8 @@ def read_config_files(self, config_files, keys_directory=None):
410430
raise ConfigError(MISSING_SERVER_NAME)
411431
server_name = specified_config["server_name"]
412432
config_string = self.generate_config(
413-
config_dir_path=self.config_dir_path,
414-
data_dir_path=os.getcwd(),
433+
config_dir_path=config_dir_path,
434+
data_dir_path=data_dir_path,
415435
server_name=server_name,
416436
generate_secrets=False,
417437
)
@@ -431,8 +451,24 @@ def read_config_files(self, config_files, keys_directory=None):
431451
)
432452
return config
433453

434-
def parse_config_dict(self, config_dict):
435-
self.invoke_all("read_config", config_dict)
454+
def parse_config_dict(self, config_dict, config_dir_path, data_dir_path):
455+
"""Read the information from the config dict into this Config object.
456+
457+
Args:
458+
config_dict (dict): Configuration data, as read from the yaml
459+
460+
config_dir_path (str): The path where the config files are kept. Used to
461+
create filenames for things like the log config and the signing key.
462+
463+
data_dir_path (str): The path where the data files are kept. Used to create
464+
filenames for things like the database and media store.
465+
"""
466+
self.invoke_all(
467+
"read_config",
468+
config_dict,
469+
config_dir_path=config_dir_path,
470+
data_dir_path=data_dir_path,
471+
)
436472

437473
def generate_missing_files(self, config_dict):
438474
self.invoke_all("generate_files", config_dict)

synapse/config/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919

2020
class ApiConfig(Config):
21-
def read_config(self, config):
21+
def read_config(self, config, **kwargs):
2222
self.room_invite_state_types = config.get(
2323
"room_invite_state_types",
2424
[

synapse/config/appservice.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030

3131
class AppServiceConfig(Config):
32-
def read_config(self, config):
32+
def read_config(self, config, **kwargs):
3333
self.app_service_config_files = config.get("app_service_config_files", [])
3434
self.notify_appservices = config.get("notify_appservices", True)
3535
self.track_appservice_user_ips = config.get("track_appservice_user_ips", False)

synapse/config/captcha.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717

1818
class CaptchaConfig(Config):
19-
def read_config(self, config):
19+
def read_config(self, config, **kwargs):
2020
self.recaptcha_private_key = config.get("recaptcha_private_key")
2121
self.recaptcha_public_key = config.get("recaptcha_public_key")
2222
self.enable_registration_captcha = config.get(

synapse/config/cas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class CasConfig(Config):
2222
cas_server_url: URL of CAS server
2323
"""
2424

25-
def read_config(self, config):
25+
def read_config(self, config, **kwargs):
2626
cas_config = config.get("cas_config", None)
2727
if cas_config:
2828
self.cas_enabled = cas_config.get("enabled", True)

synapse/config/consent_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self):
8484
self.user_consent_at_registration = False
8585
self.user_consent_policy_name = "Privacy Policy"
8686

87-
def read_config(self, config):
87+
def read_config(self, config, **kwargs):
8888
consent_config = config.get("user_consent")
8989
if consent_config is None:
9090
return

synapse/config/database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919

2020
class DatabaseConfig(Config):
21-
def read_config(self, config):
21+
def read_config(self, config, **kwargs):
2222
self.event_cache_size = self.parse_size(config.get("event_cache_size", "10K"))
2323

2424
self.database_config = config.get("database")

synapse/config/emailconfig.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828

2929
class EmailConfig(Config):
30-
def read_config(self, config):
30+
def read_config(self, config, **kwargs):
3131
# TODO: We should separate better the email configuration from the notification
3232
# and account validity config.
3333

synapse/config/groups.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818

1919
class GroupsConfig(Config):
20-
def read_config(self, config):
20+
def read_config(self, config, **kwargs):
2121
self.enable_group_creation = config.get("enable_group_creation", False)
2222
self.group_creation_prefix = config.get("group_creation_prefix", "")
2323

0 commit comments

Comments
 (0)