|
@@ -134,10 +134,6 @@ class Config(object):
|
|
|
with open(file_path) as file_stream:
|
|
|
return file_stream.read()
|
|
|
|
|
|
- @staticmethod
|
|
|
- def default_path(name):
|
|
|
- return os.path.abspath(os.path.join(os.path.curdir, name))
|
|
|
-
|
|
|
@staticmethod
|
|
|
def read_config_file(file_path):
|
|
|
with open(file_path) as file_stream:
|
|
@@ -151,8 +147,39 @@ class Config(object):
|
|
|
return results
|
|
|
|
|
|
def generate_config(
|
|
|
- self, config_dir_path, server_name, is_generating_file, report_stats=None
|
|
|
+ self,
|
|
|
+ config_dir_path,
|
|
|
+ data_dir_path,
|
|
|
+ server_name,
|
|
|
+ generate_secrets=False,
|
|
|
+ report_stats=None,
|
|
|
):
|
|
|
+ """Build a default configuration file
|
|
|
+
|
|
|
+ This is used both when the user explicitly asks us to generate a config file
|
|
|
+ (eg with --generate_config), and before loading the config at runtime (to give
|
|
|
+ a base which the config files override)
|
|
|
+
|
|
|
+ Args:
|
|
|
+ config_dir_path (str): The path where the config files are kept. Used to
|
|
|
+ create filenames for things like the log config and the signing key.
|
|
|
+
|
|
|
+ data_dir_path (str): The path where the data files are kept. Used to create
|
|
|
+ filenames for things like the database and media store.
|
|
|
+
|
|
|
+ server_name (str): The server name. Used to initialise the server_name
|
|
|
+ config param, but also used in the names of some of the config files.
|
|
|
+
|
|
|
+ generate_secrets (bool): True if we should generate new secrets for things
|
|
|
+ like the macaroon_secret_key. If False, these parameters will be left
|
|
|
+ unset.
|
|
|
+
|
|
|
+ report_stats (bool|None): Initial setting for the report_stats setting.
|
|
|
+ If None, report_stats will be left unset.
|
|
|
+
|
|
|
+ Returns:
|
|
|
+ str: the yaml config file
|
|
|
+ """
|
|
|
default_config = "# vim:ft=yaml\n"
|
|
|
|
|
|
default_config += "\n\n".join(
|
|
@@ -160,15 +187,14 @@ class Config(object):
|
|
|
for conf in self.invoke_all(
|
|
|
"default_config",
|
|
|
config_dir_path=config_dir_path,
|
|
|
+ data_dir_path=data_dir_path,
|
|
|
server_name=server_name,
|
|
|
- is_generating_file=is_generating_file,
|
|
|
+ generate_secrets=generate_secrets,
|
|
|
report_stats=report_stats,
|
|
|
)
|
|
|
)
|
|
|
|
|
|
- config = yaml.load(default_config)
|
|
|
-
|
|
|
- return default_config, config
|
|
|
+ return default_config
|
|
|
|
|
|
@classmethod
|
|
|
def load_config(cls, description, argv):
|
|
@@ -274,12 +300,14 @@ class Config(object):
|
|
|
if not cls.path_exists(config_dir_path):
|
|
|
os.makedirs(config_dir_path)
|
|
|
with open(config_path, "w") as config_file:
|
|
|
- config_str, config = obj.generate_config(
|
|
|
+ config_str = obj.generate_config(
|
|
|
config_dir_path=config_dir_path,
|
|
|
+ data_dir_path=os.getcwd(),
|
|
|
server_name=server_name,
|
|
|
report_stats=(config_args.report_stats == "yes"),
|
|
|
- is_generating_file=True,
|
|
|
+ generate_secrets=True,
|
|
|
)
|
|
|
+ config = yaml.load(config_str)
|
|
|
obj.invoke_all("generate_files", config)
|
|
|
config_file.write(config_str)
|
|
|
print(
|
|
@@ -350,11 +378,13 @@ class Config(object):
|
|
|
raise ConfigError(MISSING_SERVER_NAME)
|
|
|
|
|
|
server_name = specified_config["server_name"]
|
|
|
- _, config = self.generate_config(
|
|
|
+ config_string = self.generate_config(
|
|
|
config_dir_path=config_dir_path,
|
|
|
+ data_dir_path=os.getcwd(),
|
|
|
server_name=server_name,
|
|
|
- is_generating_file=False,
|
|
|
+ generate_secrets=False,
|
|
|
)
|
|
|
+ config = yaml.load(config_string)
|
|
|
config.pop("log_config")
|
|
|
config.update(specified_config)
|
|
|
|