Source code for subuserlib.classes.config

# -*- coding: utf-8 -*-
"""
The Config class is used to hold user wide settings.
"""

#external imports
import os
#internal imports
from subuserlib.classes import userOwnedObject
from subuserlib import loadMultiFallbackJsonConfigFile
from subuserlib import paths

[docs]class Config(userOwnedObject.UserOwnedObject, dict): def __init__(self,user): self.__delitem__ = None self.__setitem__ = None userOwnedObject.UserOwnedObject.__init__(self,user) self._loadConfig() def _getSubuserConfigPaths(self): """ Returns a list of paths to config.json files in order that they should be looked in. """ configFileInHomeDir = os.path.join(self.getUser().homeDir,".subuser","config.json") configFileInEtc = "/etc/subuser/config.json" configFileInSubuserDir = paths.getSubuserDataFile("config.json") return [configFileInHomeDir,configFileInEtc,configFileInSubuserDir] def _expandPathsInConfig(self,config): """ Go through a freshly loaded config file and expand any environment variables in the paths. """ pathsToExpand = [ "bin-dir" ,"registry-dir" ,"installed-images-list" ,"locked-subusers-path" ,"subuser-home-dirs-dir" ,"repositories-dir" ,"runtime-cache" ,"lock-dir" ,"volumes-dir"] loadMultiFallbackJsonConfigFile.expandPathsInDict(self.getUser().homeDir,pathsToExpand,config) def _loadConfig(self): """ Loads the subuser config: a dictionary of settings used by subuser. """ configFileHierarchy = self._getSubuserConfigPaths() config = loadMultiFallbackJsonConfigFile.getConfig(configFileHierarchy) self._expandPathsInConfig(config) for key,entry in config.items(): self[key] = entry