'Process configuration data structure.
This includes reading config file if necessary, setting defaults etc.'

def process_config(self, do_usage=True):

    if self.configfile:
        self.process_config_file(do_usage)
    for (name, confname) in self.names_list:
        if confname:
            parts = confname.split('.')
            obj = self.configroot
            for part in parts:
                if (obj is None):
                    break
                obj = getattr(obj, part)
            self._set(name, obj, 0)
    for (name, value) in self.default_map.items():
        if (getattr(self, name) is None):
            setattr(self, name, value)
    for (name, message) in self.required_map.items():
        if (getattr(self, name) is None):
            self.usage(message)
