confighelper: match core components to their configuration

Most core components have default options that allow them to
load without a section specified in moonraker.conf.  This resulted
in those options showing up in the [server] section in the
"/server/config" response.  These changes will make sure that those
values show up in the correct section.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-04-04 15:16:25 -04:00
parent 58228ec161
commit d61540cad5
No known key found for this signature in database
GPG Key ID: 7027245FBBDDF59A
2 changed files with 7 additions and 8 deletions

View File

@ -79,10 +79,14 @@ class ConfigHelper:
return self.section
def get_options(self) -> Dict[str, str]:
if not self.config.has_section(self.section):
return {}
return dict(self.config[self.section])
def get_hash(self) -> hashlib._Hash:
hash = hashlib.sha256()
if not self.config.has_section(self.section):
return hash
for option, val in self.config[self.section].items():
hash.update(option.encode())
hash.update(val.encode())
@ -92,8 +96,6 @@ class ConfigHelper:
return [s for s in self.sections() if s.startswith(prefix)]
def getsection(self, section: str) -> ConfigHelper:
if section not in self.config:
raise ConfigError(f"No section [{section}] in config")
return ConfigHelper(self.server, self.config, section,
self.orig_sections, self.parsed)
@ -109,11 +111,9 @@ class ConfigHelper:
) -> _T:
try:
val = func(self.section, option)
except configparser.NoOptionError:
except (configparser.NoOptionError, configparser.NoSectionError) as e:
if isinstance(default, SentinelClass):
raise ConfigError(
f"No option found ({option}) in section [{self.section}]"
) from None
raise ConfigError(str(e)) from None
val = default
except Exception:
raise ConfigError(

View File

@ -228,7 +228,6 @@ class Server:
return self.components[component_name]
try:
module = importlib.import_module("components." + component_name)
if component_name in config:
config = config[component_name]
load_func = getattr(module, "load_component")
component = load_func(config)