From a3d452c112a63fc9b9b2eb543037e46017a4c30d Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Thu, 28 May 2015 19:27:30 +0000 Subject: [PATCH] storage.config_with_defaults --- letsencrypt/constants.py | 5 ++--- letsencrypt/renewer.py | 7 +------ letsencrypt/storage.py | 18 +++++++++--------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/letsencrypt/constants.py b/letsencrypt/constants.py index 4b3b79e36..088f92aea 100644 --- a/letsencrypt/constants.py +++ b/letsencrypt/constants.py @@ -1,5 +1,4 @@ """Let's Encrypt constants.""" -import configobj import logging from acme import challenges @@ -27,7 +26,7 @@ CLI_DEFAULTS = dict( """Defaults for CLI flags and `.IConfig` attributes.""" -RENEWER_DEFAULTS = configobj.ConfigObj(dict( +RENEWER_DEFAULTS = dict( renewer_config_file="/etc/letsencrypt/renewer.conf", renewal_configs_dir="/etc/letsencrypt/configs", archive_dir="/etc/letsencrypt/archive", @@ -35,7 +34,7 @@ RENEWER_DEFAULTS = configobj.ConfigObj(dict( renewer_enabled="yes", renew_before_expiry="30 days", deploy_before_expiry="20 days", -)) +) """Defaults for renewer script.""" diff --git a/letsencrypt/renewer.py b/letsencrypt/renewer.py index 834a69548..d95fb7d95 100644 --- a/letsencrypt/renewer.py +++ b/letsencrypt/renewer.py @@ -7,13 +7,11 @@ within lineages of successor certificates, according to configuration. .. todo:: Call new installer API to restart servers after deployment """ -import copy import os import configobj from letsencrypt import configuration -from letsencrypt import constants from letsencrypt import client from letsencrypt import crypto_util from letsencrypt import notify @@ -102,10 +100,7 @@ def main(config=None): # turned it off. (The boolean parameter should probably be # called renewer_enabled.) - # Merge supplied config, if provided, on top of builtin defaults - defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS) - defaults_copy.merge(config if config is not None else configobj.ConfigObj()) - config = defaults_copy + config = storage.config_with_defaults(config) # Now attempt to read the renewer config file and augment or replace # the renewer defaults with any options contained in that file. If # renewer_config_file is undefined or if the file is nonexistent or diff --git a/letsencrypt/storage.py b/letsencrypt/storage.py index 3b2cd58b0..2648be3ba 100644 --- a/letsencrypt/storage.py +++ b/letsencrypt/storage.py @@ -1,5 +1,4 @@ """Renewable certificates storage.""" -import copy import datetime import os import re @@ -17,6 +16,13 @@ from letsencrypt import le_util ALL_FOUR = ("cert", "privkey", "chain", "fullchain") +def config_with_defaults(config=None): + """Merge supplied config, if provided, on top of builtin defaults.""" + defaults_copy = configobj.ConfigObj(constants.RENEWER_DEFAULTS) + defaults_copy.merge(config if config is not None else configobj.ConfigObj()) + return defaults_copy + + def parse_time_interval(interval, textparser=parsedatetime.Calendar()): """Parse the time specified time interval. @@ -103,10 +109,7 @@ class RenewableCert(object): # pylint: disable=too-many-instance-attributes # TODO: Do we actually use anything from defaults and do we want to # read further defaults from the systemwide renewal configuration # file at this stage? - defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS) - defaults_copy.merge(config_opts if config_opts is not None - else configobj.ConfigObj()) - self.configuration = defaults_copy + self.configuration = config_with_defaults(config_opts) self.configuration.merge(self.configfile) if not all(x in self.configuration for x in ALL_FOUR): @@ -528,10 +531,7 @@ class RenewableCert(object): # pylint: disable=too-many-instance-attributes :returns: the newly-created RenewalCert object :rtype: :class:`storage.renewableCert`""" - defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS) - defaults_copy.merge(config if config is not None - else configobj.ConfigObj()) - config = defaults_copy + config = config_with_defaults(config) # This attempts to read the renewer config file and augment or replace # the renewer defaults with any options contained in that file. If # renewer_config_file is undefined or if the file is nonexistent or