config: Integrate keyring values with overrides.
This commit is contained in:
parent
474600cf2a
commit
b88cf4a8b2
@ -5,6 +5,7 @@ import io
|
||||
import logging
|
||||
import os.path
|
||||
|
||||
from mopidy.config import keyring
|
||||
from mopidy.config.schemas import * # noqa
|
||||
from mopidy.config.types import * # noqa
|
||||
from mopidy.utils import path
|
||||
@ -47,7 +48,7 @@ def load(files, extensions, overrides):
|
||||
config_dir = os.path.dirname(__file__)
|
||||
defaults = [read(os.path.join(config_dir, 'default.conf'))]
|
||||
defaults.extend(e.get_default_config() for e in extensions)
|
||||
raw_config = _load(files, defaults, overrides)
|
||||
raw_config = _load(files, defaults, keyring.fetch() + (overrides or []))
|
||||
|
||||
schemas = _schemas[:]
|
||||
schemas.extend(e.get_config_schema() for e in extensions)
|
||||
@ -101,7 +102,7 @@ def _load(files, defaults, overrides):
|
||||
for section in parser.sections():
|
||||
raw_config[section] = dict(parser.items(section))
|
||||
|
||||
for section, key, value in overrides or []:
|
||||
for section, key, value in overrides:
|
||||
raw_config.setdefault(section, {})[key] = value
|
||||
|
||||
return raw_config
|
||||
|
||||
@ -22,19 +22,19 @@ else:
|
||||
def fetch():
|
||||
if not dbus:
|
||||
logger.debug('Keyring lookup failed as D-Bus not installed.')
|
||||
return None
|
||||
return []
|
||||
|
||||
bus = _bus()
|
||||
if not _secrets_running(bus):
|
||||
logger.debug('Keyring lookup failed as Secrets service not running.')
|
||||
return None
|
||||
return []
|
||||
|
||||
service = _serivce(bus)
|
||||
session = service.OpenSession('plain', EMPTY_STRING)[1]
|
||||
items, locked = service.SearchItems({'service': 'mopidy'})
|
||||
|
||||
if not locked and not items:
|
||||
return None
|
||||
return []
|
||||
|
||||
if locked:
|
||||
# There is a chance we can unlock without prompting the users...
|
||||
@ -42,15 +42,15 @@ def fetch():
|
||||
if prompt != '/':
|
||||
_prompt(bus, prompt).Dismiss()
|
||||
logger.debug('Keyring lookup failed as it is locked.')
|
||||
return None
|
||||
return []
|
||||
|
||||
config = {}
|
||||
result = []
|
||||
secrets = service.GetSecrets(items, session, byte_arrays=True)
|
||||
for item_path, values in secrets.iteritems():
|
||||
session_path, parameters, value, content_type = values
|
||||
attrs = _item_attributes(bus, item_path)
|
||||
config.setdefault(attrs['section'], {})[attrs['key']] = bytes(value)
|
||||
return config
|
||||
result.append((attrs['section'], attrs['key'], bytes(value)))
|
||||
return result
|
||||
|
||||
|
||||
def set(section, key, value):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user