config: Integrate keyring values with overrides.

This commit is contained in:
Thomas Adamcik 2013-05-13 23:51:17 +02:00
parent 474600cf2a
commit b88cf4a8b2
2 changed files with 10 additions and 9 deletions

View File

@ -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

View File

@ -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):