################################################################################
+import os
import apt_pkg
import socket
-from singleton import Singleton
-
################################################################################
-default_config = "/etc/dak/dak.conf"
+default_config = "/etc/dak/dak.conf" #: default dak config, defines host properties
-def which_conf_file(Cnf):
- res = socket.gethostbyaddr(socket.gethostname())
- if Cnf.get("Config::" + res[0] + "::DakConfig"):
- return Cnf["Config::" + res[0] + "::DakConfig"]
- else:
- return default_config
+def which_conf_file():
+ return os.getenv("DAK_CONFIG", default_config)
-class Config(Singleton):
+class Config(object):
"""
A Config object is a singleton containing
information about the DAK configuration
"""
+
+ __shared_state = {}
+
def __init__(self, *args, **kwargs):
- super(Config, self).__init__(*args, **kwargs)
+ self.__dict__ = self.__shared_state
+
+ if not getattr(self, 'initialised', False):
+ self.initialised = True
+ self._readconf()
def _readconf(self):
apt_pkg.init()
self.Cnf = apt_pkg.newConfiguration()
- apt_pkg.ReadConfigFileISC(self.Cnf, default_config)
+ apt_pkg.ReadConfigFileISC(self.Cnf, which_conf_file())
# Check whether our dak.conf was the real one or
# just a pointer to our main one
self.Find = self.Cnf.Find
self.FindB = self.Cnf.FindB
- def _startup(self, *args, **kwargs):
- self._readconf()
-
def has_key(self, name):
return self.Cnf.has_key(name)
def __getitem__(self, name):
return self.Cnf[name]
+ def __setitem__(self, name, value):
+ self.Cnf[name] = value