Allow generate-config to run against an existing config file to generate default keys

This commit is contained in:
Mark Haines 2015-05-01 13:54:38 +01:00
parent 50c87b8eed
commit 46a65c282f
3 changed files with 26 additions and 14 deletions

View File

@ -159,26 +159,37 @@ class Config(object):
print "Most specify a server_name to a generate config for." print "Most specify a server_name to a generate config for."
sys.exit(1) sys.exit(1)
(config_path,) = config_args.config_path (config_path,) = config_args.config_path
if os.path.exists(config_path):
print "Config file %r already exists. Not overwriting" % (
config_args.config_path
)
sys.exit(1)
if not os.path.exists(config_dir_path): if not os.path.exists(config_dir_path):
os.makedirs(config_dir_path) os.makedirs(config_dir_path)
if os.path.exists(config_path):
print "Config file %r already exists" % (config_path,)
yaml_config = cls.read_config_file(config_path)
yaml_name = yaml_config["server_name"]
if server_name != yaml_name:
print (
"Config file %r has a different server_name: "
" %r != %r" % (config_path, server_name, yaml_name)
)
sys.exit(1)
config_bytes, config = obj.generate_config(
config_dir_path, server_name
)
config.update(yaml_config)
print "Generating any missing keys for %r" % (server_name,)
obj.invoke_all("generate_files", config)
sys.exit(0)
with open(config_path, "wb") as config_file: with open(config_path, "wb") as config_file:
config_bytes, config = obj.generate_config( config_bytes, config = obj.generate_config(
config_dir_path, server_name config_dir_path, server_name
) )
obj.invoke_all("generate_files", config) obj.invoke_all("generate_files", config)
config_file.write(config_bytes) config_file.write(config_bytes)
print ( print (
"A config file has been generated in %s for server name" "A config file has been generated in %s for server name"
" '%s' with corresponding SSL keys and self-signed" " '%s' with corresponding SSL keys and self-signed"
" certificates. Please review this file and customise it to" " certificates. Please review this file and customise it to"
" your needs." " your needs."
) % (config_path, server_name) ) % (config_path, server_name)
print ( print (
"If this server name is incorrect, you will need to regenerate" "If this server name is incorrect, you will need to regenerate"
" the SSL certificates" " the SSL certificates"

View File

@ -56,6 +56,7 @@ class DatabaseConfig(Config):
args: args:
# Path to the database # Path to the database
database: "%(database_path)s" database: "%(database_path)s"
# Number of events to cache in memory. # Number of events to cache in memory.
event_cache_size: "10K" event_cache_size: "10K"
""" % locals() """ % locals()
@ -68,7 +69,7 @@ class DatabaseConfig(Config):
database_path = self.abspath(database_path) database_path = self.abspath(database_path)
if self.database_config.get("name", None) == "sqlite3": if self.database_config.get("name", None) == "sqlite3":
if database_path is not None: if database_path is not None:
self.database_config["database"] = database_path self.database_config["args"]["database"] = database_path
def add_arguments(self, parser): def add_arguments(self, parser):
db_group = parser.add_argument_group("database") db_group = parser.add_argument_group("database")

View File

@ -49,7 +49,7 @@ class RegistrationConfig(Config):
def add_arguments(self, parser): def add_arguments(self, parser):
reg_group = parser.add_argument_group("registration") reg_group = parser.add_argument_group("registration")
reg_group.add_argument( reg_group.add_argument(
"--enable-registration", action="store_true", "--enable-registration", action="store_true", default=None,
help="Enable registration for new users." help="Enable registration for new users."
) )